summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2021-01-05 22:12:45 +0100
committerJan Holthuis <jan.holthuis@ruhr-uni-bochum.de>2021-01-05 22:50:53 +0100
commitf331fde0b4e35dead91844f56718b5261e351b4b (patch)
tree4e9c69e67a67974e52704d9f58fb027ecb12500e /src
parent4c6615df0106308864ece631da3cad2f18b2de13 (diff)
SeratoTagsTest: Add high-level Markers_ roundtrip test
Diffstat (limited to 'src')
-rw-r--r--src/test/seratotagstest.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/test/seratotagstest.cpp b/src/test/seratotagstest.cpp
index 4b7963e3a3..9687f6c773 100644
--- a/src/test/seratotagstest.cpp
+++ b/src/test/seratotagstest.cpp
@@ -1,8 +1,24 @@
#include <gtest/gtest.h>
+#include <QDir>
+#include <QFile>
+
#include "track/serato/tags.h"
#include "util/color/predefinedcolorpalettes.h"
+namespace {
+
+bool dumpToFile(const QString& filename, const QByteArray& data) {
+ QFile outfile(filename);
+ const bool openOk = outfile.open(QIODevice::WriteOnly);
+ if (!openOk) {
+ return false;
+ }
+ return data.size() == outfile.write(data);
+}
+
+} // namespace
+
class SeratoTagsTest : public testing::Test {
protected:
void trackColorRoundtrip(mixxx::RgbColor::optional_t displayedColor) {
@@ -181,3 +197,36 @@ TEST_F(SeratoTagsTest, CueColorConversionRoundtrip) {
EXPECT_EQ(color, displayedColor);
}
}
+
+TEST_F(SeratoTagsTest, MarkersParseDumpRoundtrip) {
+ const auto filetype = mixxx::taglib::FileType::MP3;
+ QDir dir(QStringLiteral("src/test/serato/data/mp3/markers_/"));
+ dir.setFilter(QDir::Files);
+ dir.setNameFilters(QStringList() << "*.octet-stream");
+ const QFileInfoList fileList = dir.entryInfoList();
+ for (const QFileInfo& fileInfo : fileList) {
+ mixxx::SeratoTags seratoTags;
+ EXPECT_TRUE(seratoTags.getCueInfos().isEmpty());
+
+ auto file = QFile(fileInfo.filePath());
+ const bool openOk = file.open(QIODevice::ReadOnly);
+ EXPECT_TRUE(openOk);
+ const QByteArray inputData = file.readAll();
+ const bool parseOk = seratoTags.parseMarkers(inputData, filetype);
+ EXPECT_TRUE(parseOk);
+
+ const auto trackColor = seratoTags.getTrackColor();
+ const auto cueInfos = seratoTags.getCueInfos();
+ seratoTags.setTrackColor(trackColor);
+ seratoTags.setCueInfos(cueInfos);
+
+ const QByteArray outputData = seratoTags.dumpMarkers(filetype);
+ EXPECT_EQ(inputData, outputData);
+ if (inputData != outputData) {
+ qWarning() << "parsed" << cueInfos;
+ EXPECT_TRUE(dumpToFile(
+ file.fileName() + QStringLiteral(".seratotagstest.actual"),
+ outputData));
+ }
+ }
+}