Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Serato color types #11228

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -860,6 +860,7 @@ add_library(mixxx-lib STATIC EXCLUDE_FROM_ALL
src/track/replaygain.cpp
src/track/serato/beatgrid.cpp
src/track/serato/beatsimporter.cpp
src/track/serato/color.cpp
src/track/serato/cueinfoimporter.cpp
src/track/serato/markers.cpp
src/track/serato/markers2.cpp
Expand Down
147 changes: 87 additions & 60 deletions src/test/seratomarkers2test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ class SeratoMarkers2Test : public testing::Test {
EXPECT_EQ(inputValue, bpmlockEntry->dump());
}

void parseColorEntry(const QByteArray& inputValue, bool valid, mixxx::RgbColor color) {
void parseColorEntry(const QByteArray& inputValue,
bool valid,
mixxx::SeratoStoredTrackColor color) {
const mixxx::SeratoMarkers2EntryPointer parsedEntry = mixxx::SeratoMarkers2ColorEntry::parse(inputValue);
if (!parsedEntry) {
EXPECT_FALSE(valid);
Expand All @@ -48,7 +50,7 @@ class SeratoMarkers2Test : public testing::Test {
bool valid,
quint8 index,
quint32 position,
mixxx::RgbColor color,
mixxx::SeratoStoredHotcueColor color,
const QString& label) {
const mixxx::SeratoMarkers2EntryPointer parsedEntry = mixxx::SeratoMarkers2CueEntry::parse(inputValue);
if (!parsedEntry) {
Expand Down Expand Up @@ -161,28 +163,30 @@ TEST_F(SeratoMarkers2Test, ParseBpmLockEntry) {
TEST_F(SeratoMarkers2Test, ParseColorEntry) {
parseColorEntry(QByteArray("\x00\xcc\x00\x00", 4),
true,
mixxx::RgbColor(qRgb(0xcc, 0, 0)));
mixxx::SeratoStoredTrackColor(qRgb(0xcc, 0, 0)));
parseColorEntry(QByteArray("\x00\x00\xcc\x00", 4),
true,
mixxx::RgbColor(qRgb(0, 0xcc, 0)));
mixxx::SeratoStoredTrackColor(qRgb(0, 0xcc, 0)));
parseColorEntry(QByteArray("\x00\x00\x00\xcc", 4),
true,
mixxx::RgbColor(qRgb(0, 0, 0xcc)));
mixxx::SeratoStoredTrackColor(qRgb(0, 0, 0xcc)));
parseColorEntry(QByteArray("\x00\x89\xab\xcd", 4),
true,
mixxx::RgbColor(qRgb(0x89, 0xab, 0xcd)));
mixxx::SeratoStoredTrackColor(qRgb(0x89, 0xab, 0xcd)));

// Invalid value
parseColorEntry(QByteArray("\x01\xff\x00\x00", 1),
false,
mixxx::RgbColor(qRgb(0, 0, 0)));
mixxx::SeratoStoredTrackColor(qRgb(0, 0, 0)));

// Invalid size
parseColorEntry(
QByteArray("\x00", 1), false, mixxx::RgbColor(qRgb(0, 0, 0)));
QByteArray("\x00", 1),
false,
mixxx::SeratoStoredTrackColor(qRgb(0, 0, 0)));
parseColorEntry(QByteArray("\x00\xff\x00\x00\x00", 5),
false,
mixxx::RgbColor(qRgb(0, 0, 0)));
mixxx::SeratoStoredTrackColor(qRgb(0, 0, 0)));
}

TEST_F(SeratoMarkers2Test, ParseCueEntry) {
Expand All @@ -192,7 +196,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
true,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString(""));
parseCueEntry(
QByteArray(
Expand All @@ -201,24 +205,25 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
true,
1,
4096,
mixxx::RgbColor(qRgb(0xcc, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0xcc, 0, 0)),
QString("Test"));
parseCueEntry(
QByteArray("\x00\x02\x00\x00\x00\xff\x00\x00\xcc\x00\x00\x00\xc3"
"\xa4\xc3\xbc\xc3\xb6\xc3\x9f\xc3\xa9\xc3\xa8!\x00",
QByteArray(
"\x00\x02\x00\x00\x00\xff\x00\x00\xcc\x00\x00\x00\xc3"
"\xa4\xc3\xbc\xc3\xb6\xc3\x9f\xc3\xa9\xc3\xa8!\x00",
26),
true,
2,
255,
mixxx::RgbColor(qRgb(0, 0xcc, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0xcc, 0)),
QString("äüößéè!"));
parseCueEntry(QByteArray("\x00\x03\x02\x03\x04\x05\x00\x06\x07\x08\x00\x00H"
"ello World\x00",
24),
parseCueEntry(
QByteArray(
"\x00\x03\x02\x03\x04\x05\x00\x06\x07\x08\x00\x00Hello World\x00", 24),
true,
3,
33752069,
mixxx::RgbColor(qRgb(0x06, 0x07, 0x08)),
mixxx::SeratoStoredHotcueColor(qRgb(0x06, 0x07, 0x08)),
QString("Hello World"));

// Invalid value
Expand All @@ -229,7 +234,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());
parseCueEntry(
QByteArray(
Expand All @@ -238,7 +243,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());
parseCueEntry(
QByteArray(
Expand All @@ -247,7 +252,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());
parseCueEntry(
QByteArray(
Expand All @@ -256,7 +261,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());

// Missing null terminator
Expand All @@ -266,7 +271,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());

//Invalid size
Expand All @@ -275,7 +280,7 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());
parseCueEntry(
QByteArray(
Expand All @@ -284,42 +289,50 @@ TEST_F(SeratoMarkers2Test, ParseCueEntry) {
false,
0,
0,
mixxx::RgbColor(qRgb(0, 0, 0)),
mixxx::SeratoStoredHotcueColor(qRgb(0, 0, 0)),
QString());
}

TEST_F(SeratoMarkers2Test, ParseLoopEntry) {
parseLoopEntry(QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00",
21),
parseLoopEntry(
QByteArray(
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00",
21),
true,
0,
0,
0,
false,
QString(""));
parseLoopEntry(QByteArray("\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x01Test\x00",
25),
parseLoopEntry(
QByteArray(
"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x01Test\x00",
25),
true,
1,
33752069,
101124105,
true,
QString("Test"));
parseLoopEntry(QByteArray("\x00\x02\x00\x00\x00\xff\x00\x00\x10\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\xc3\xa4\xc3\xbc"
"\xc3\xb6\xc3\x9f\xc3\xa9\xc3\xa8!\x00",
34),
parseLoopEntry(
QByteArray(
"\x00\x02\x00\x00\x00\xff\x00\x00\x10\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\xc3\xa4\xc3\xbc"
"\xc3\xb6\xc3\x9f\xc3\xa9\xc3\xa8!\x00",
34),
true,
2,
255,
4096,
false,
QString("äüößéè!"));
parseLoopEntry(QByteArray("\x00\x03\x00\x00\x00\x00\x00\x00\x01\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x01Hello World\x00",
32),
parseLoopEntry(
QByteArray(
"\x00\x03\x00\x00\x00\x00\x00\x00\x01\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x01Hello World\x00",
32),
true,
3,
0,
Expand All @@ -328,36 +341,44 @@ TEST_F(SeratoMarkers2Test, ParseLoopEntry) {
QString("Hello World"));

// Invalid value
parseLoopEntry(QByteArray("\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00",
21),
parseLoopEntry(
QByteArray(
"\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x0f\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00",
21),
false,
0,
0,
0,
false,
QString());
parseLoopEntry(QByteArray("\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x01\x27\xaa\xe1\x00\x00\x00\x00",
23),
parseLoopEntry(
QByteArray(
"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x01\x27\xaa\xe1\x00\x00\x00\x00",
23),
false,
0,
0,
0,
false,
QString());
parseLoopEntry(QByteArray("\x01\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00\x00",
23),
parseLoopEntry(
QByteArray(
"\x01\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00\x00",
23),
false,
0,
0,
0,
false,
QString());
parseLoopEntry(QByteArray("\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x01\x00\x00\x00",
23),
parseLoopEntry(
QByteArray(
"\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x01\x00\x00\x00",
23),
false,
0,
0,
Expand All @@ -366,29 +387,35 @@ TEST_F(SeratoMarkers2Test, ParseLoopEntry) {
QString());

// Missing null terminator
parseLoopEntry(QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00Test",
24),
parseLoopEntry(
QByteArray(
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00Test",
24),
false,
0,
0,
0,
false,
QString());

//Invalid size
parseLoopEntry(QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00",
20),
// Invalid size
parseLoopEntry(
QByteArray(
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00",
20),
false,
0,
0,
0,
false,
QString());
parseLoopEntry(QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00\x00",
22),
parseLoopEntry(
QByteArray(
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff"
"\xff\xff\x00\x27\xaa\xe1\x00\x00\x00\x00",
22),
false,
0,
0,
Expand Down
Loading