diff options
author | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2021-03-10 21:44:57 +0100 |
---|---|---|
committer | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2021-03-10 21:44:57 +0100 |
commit | 648a114afda2e8164fce43e8d64a176422ec73cd (patch) | |
tree | ad8b4fd77100f4e010c276d9b7b8944c9a8bd499 /src/test | |
parent | 4b3afa3884b3c1e49d8044f6b05b1333fe9e3055 (diff) |
test: Add non-const beatmap serialization test for SeratoBeatGrid
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/seratobeatgridtest.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/test/seratobeatgridtest.cpp b/src/test/seratobeatgridtest.cpp index 5c056f0ad3..357b7f4af6 100644 --- a/src/test/seratobeatgridtest.cpp +++ b/src/test/seratobeatgridtest.cpp @@ -6,6 +6,7 @@ #include <QtDebug> #include "track/beatgrid.h" +#include "track/beatmap.h" #include "track/serato/beatgrid.h" #include "util/memory.h" @@ -120,4 +121,45 @@ TEST_F(SeratoBeatGridTest, SerializeConstBeatgrid) { EXPECT_NE(seratoBeatGrid.terminalMarker(), nullptr); EXPECT_FLOAT_EQ(seratoBeatGrid.terminalMarker()->bpm(), static_cast<float>(bpm)); } + +TEST_F(SeratoBeatGridTest, SerializeNonConstBeatgrid) { + // Create a non-const beatmap + constexpr double bpm = 100.0; + const auto sampleRate = mixxx::audio::SampleRate(44100); + const auto signalInfo = mixxx::audio::SignalInfo(mixxx::audio::ChannelCount(2), sampleRate); + const double framesPerMinute = signalInfo.getSampleRate() * 60; + const double framesPerBeat = framesPerMinute / bpm; + + QVector<double> beatPositionsFrames; + double beatPositionFrames = 0; + // Add 2 minutes of beats at 100 bpm to the beatgrid + for (int i = 0; i < 2 * bpm; i++) { + beatPositionsFrames.append(beatPositionFrames); + beatPositionFrames += framesPerBeat; + } + + // Now add 3 minutes of beats at 50 bpm to the beatgrid + for (int i = 0; i < 3 * bpm / 2; i++) { + beatPositionsFrames.append(beatPositionFrames); + beatPositionFrames += framesPerBeat * 2; + } + qWarning() << "beats" << beatPositionsFrames; + + const auto pBeats = mixxx::BeatMap::makeBeatMap( + sampleRate, QString("Test"), beatPositionsFrames); + // At the 1 minute mark the BPM should be 100 + EXPECT_EQ(pBeats->getBpmAroundPosition(framesPerMinute, 1), bpm); + // At the 4 minute mark the BPM should be 50 + EXPECT_EQ(pBeats->getBpmAroundPosition(framesPerMinute * 4, 1), bpm / 2); + const auto streamInfo = mixxx::audio::StreamInfo(signalInfo, + mixxx::audio::Bitrate(320), + mixxx::Duration::fromSeconds<int>(300)); + + mixxx::SeratoBeatGrid seratoBeatGrid; + seratoBeatGrid.setBeats(pBeats, streamInfo, 0); + EXPECT_EQ(seratoBeatGrid.nonTerminalMarkers().size(), 2); + EXPECT_NE(seratoBeatGrid.terminalMarker(), nullptr); + EXPECT_FLOAT_EQ(seratoBeatGrid.terminalMarker()->bpm(), static_cast<float>(bpm / 2)); +} + } // namespace |