diff options
author | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2021-01-05 22:12:45 +0100 |
---|---|---|
committer | Jan Holthuis <jan.holthuis@ruhr-uni-bochum.de> | 2021-01-05 22:50:53 +0100 |
commit | f331fde0b4e35dead91844f56718b5261e351b4b (patch) | |
tree | 4e9c69e67a67974e52704d9f58fb027ecb12500e /src | |
parent | 4c6615df0106308864ece631da3cad2f18b2de13 (diff) |
SeratoTagsTest: Add high-level Markers_ roundtrip test
Diffstat (limited to 'src')
-rw-r--r-- | src/test/seratotagstest.cpp | 49 |
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)); + } + } +} |