From 5f54cdee0f750bd14bac94586066b7a15bce6220 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Fri, 10 Jul 2020 20:41:37 +0200 Subject: [PATCH] Add new tagreader tests --- tests/CMakeLists.txt | 2 +- tests/data/audio/strawberry.aif | Bin 72188 -> 73336 bytes tests/data/audio/strawberry.asf | Bin 29344 -> 29614 bytes tests/data/audio/strawberry.flac | Bin 41426 -> 37558 bytes tests/data/audio/strawberry.m4a | Bin 13056 -> 14043 bytes tests/data/audio/strawberry.mp3 | Bin 7019 -> 8369 bytes tests/data/audio/strawberry.mp4 | Bin 13060 -> 14047 bytes tests/data/audio/strawberry.oga | Bin 33495 -> 33724 bytes tests/data/audio/strawberry.ogg | Bin 11994 -> 12223 bytes tests/data/audio/strawberry.opus | Bin 19597 -> 19826 bytes tests/data/audio/strawberry.spx | Bin 6067 -> 6297 bytes tests/data/audio/strawberry.wav | Bin 72178 -> 73326 bytes tests/data/audio/strawberry.wv | Bin 34511 -> 34779 bytes tests/data/testdata.qrc | 1 + tests/src/song_test.cpp | 147 --- tests/src/tagreader_test.cpp | 1681 ++++++++++++++++++++++++++++++ 16 files changed, 1683 insertions(+), 148 deletions(-) delete mode 100644 tests/src/song_test.cpp create mode 100644 tests/src/tagreader_test.cpp diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 12271169..613d4681 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -90,7 +90,7 @@ add_test_file(src/concurrentrun_test.cpp false) add_test_file(src/closure_test.cpp false) add_test_file(src/mergedproxymodel_test.cpp false) add_test_file(src/sqlite_test.cpp false) -add_test_file(src/song_test.cpp false) +add_test_file(src/tagreader_test.cpp false) add_test_file(src/collectionbackend_test.cpp false) add_test_file(src/collectionmodel_test.cpp true) add_test_file(src/songplaylistitem_test.cpp false) diff --git a/tests/data/audio/strawberry.aif b/tests/data/audio/strawberry.aif index 9ea29815e24c4bc886050886fdf7b553a216a831..edf19009b9cf8edb181a38f91525e08fd7c263c9 100644 GIT binary patch delta 155 zcmeyfndQeG77jQ6AYTSXxq?QHtsIPBB7oCWEH4MLQGVe>o2O$7kFB2H8Q delta 104 zcmZ4YoN>WZMo9y;O{INl=LMJDWLU+JbS~!|BLf()PL!-Q*MqPb1TS4)y=&!p!MeT13Y~kLp=TcYz<%n{=u$6U;~6eD(e0HLV#Kn z+=Ki>1Hi(ZKw%fh5La6x0|Nt)sV<(u&VHf3PC#vjqCmc@pR>OUkb~l8kbB)-{eoQK zZu5x@@^lUcbNPUh0j@!A{z1M_yFtoBJVSh3CBX_nZVL%=boPeX)5svOF_BSVbAm!q FBLI7wNmu{? delta 79 zcmdnClEu;L+VzYLnK{KJ3=9l1iH<=bKw2av z5hTsP2*eB}sbD$D^vY(0;??0 z%9W1wIPH{KnV6FV)QrtNGAomFL2kw_my%eCE@xz5U;q@8S(%;+au7nFEszKGBv7)b z07Vj6E-x_`Q*QE2BlUWqu*}NxA{_2v>PRa}O=YAVsHdILM43ElKT*L%Gew$2n+yQ^ CMNXjr delta 39 ucmcbe+mN=QSf7cxe{-q6HZvDPQfW#_A_D_M)Z|r0+AIvZnK_dMOw<7fYzwRa diff --git a/tests/data/audio/strawberry.mp3 b/tests/data/audio/strawberry.mp3 index 1eb6c3b621fd0154b28b9aff92fca57c6772fd30..b36755e55c18885b477f975da3e39caa4fbc89b4 100644 GIT binary patch delta 1418 zcmaEDw$ZWP)5VyD0SGuVLxO`{febzd24Lj!{l&k!S^I4cmBq!yQi z1h^U^a~*x0kh#wOen?zre_vl9mlKF1A|fFAU4opUDvS&a>J37IoV|g3CLlHp3Gfew zvw?b{>cG}|hM-vM9{_SJlA}=E=Ev}r+VzYLnK{KJ3=9l1iH<=bKw2av z5hTsP2*eB}sbD$D^vY(0;??0 z%9W1wIPH{KnV6FV)QrtNGAomFL2kw_my%eCE@xz5U;q@8S(%;+au7nFEszKGBv7)b z07Vj6E-x_`Q*QEIBlUWqu*}NxA{_2v>PRa}O=YAVsHdILM43ElKT*L%Gew$2n+yO} C98S3a delta 39 ucmcbg+mg1ST%U=#e{-e2HZvDPQfW#_A_D_M)Z}$W+AIvZnK_e1Ow<7h& diff --git a/tests/data/audio/strawberry.oga b/tests/data/audio/strawberry.oga index 539e1665d2fe7145c51da18005b389191f01f6de..fa42031708cc452bfa0fd74f662650e6a1118574 100644 GIT binary patch delta 305 zcmccK%Cx7QX+moKk`+7|O#fwA7#PKQ85kIR63fy|E%b~G^b8FQ_<;gkK+9+Vkp`IxqSjGn4}IUHzQ>U4R^* zo0EZVHZ}#hSs^VaF&X4&cUQk4SGWUxB7;1ggTY)rpk#n+keh#yuWOJBSO}y(#52SP Uq8{YHkRV5AZOV delta 75 zcmdnf&UC$%X+o;4Y5&duM)MX124h|Z1_qzRvNTf*JtG4>Ljwawpnwz*r{*Q+r=%9y X0wt4ylE$VWNrkkW#N^HGjHXQh1BVn0 diff --git a/tests/data/audio/strawberry.ogg b/tests/data/audio/strawberry.ogg index 011f78cddf900ffc56e2da87af387cefd82355b6..7b86e53e65ee115215f51fa3ff7259669723b2ea 100644 GIT binary patch delta 291 zcmcZ=yFY$H0Q<_1Q6KpKt4<74t>EjsU>F;N202A;Jb`1g>AOu$77Xs9w;2z{38UPmMWT|2RV{AB*@X(8)oCi HMHYGh#NSMB delta 41 vcmdlVe=BxE02{}Kb1V5ACWfo>GcqtR$OCa|UUGg)YSCmxMv2Ysj23zTAASr& diff --git a/tests/data/audio/strawberry.opus b/tests/data/audio/strawberry.opus index 62cb11d8898400c4628d2664f429bdd041eff5a3..24f81bb36d51de3340c86d39d8c1a8424db3c052 100644 GIT binary patch delta 291 zcmeC3$@pm&;{;ds!UeonnEoqI^p>pWXJBC90%AuWr%+$plGNf70T|CQD8w^31T4l4 z5<_r#fLv#PUtd>0h%_&RAK>ZZ7~<*gXKMfx@DFwk0vjL%R^b-{)S=)WjczhC=2Af`Z@c%069L1Wyz)%dd8-Dh6V--IhjfM z1*OFxce}g#1-ZiA=o1;_=^PB^@&P3ST!Y;FgM6WG04Wdg4Do>|2RSh$h}+TG8)o0e HP8J^kLB2|< delta 61 zcmew~i?Mem;{;c>kK6~s80{wdNUAb2FfhmhacW+2eoAVQtxsZEvZ;lhv8kS+fq_C! PW>S7ZY4PSfMiw6cK(G=I diff --git a/tests/data/audio/strawberry.spx b/tests/data/audio/strawberry.spx index 19096cc5941cadce422b68a75eac6fc9920dfe89..ba6b3714e266f48f509936a5ee23f3e22e6f883c 100644 GIT binary patch delta 304 zcmdn2KhtnRQ+@xJ*Tzi$WqBDG7<>}T(o8M%j12S)4Gj2!0$f1s=;IXXYg>|9Tp|GD zIR=Gz28V#fxItnFE)S6F?CIabqnF{0wc=|Yoc>4R<8o&hngI$Bb2Gk3ImH34K zwJ5j;`G*F8g*kzuE{-9twnhd91|U;iJcFJ6LVcZp+6?7@d{;kbe-|JJ=;magn~hCD zZdS<2Oe!u&O|1Yq+}+hL$QABLpU5Cj=U_0G4=5Sn8sz35~^efHaU~VBp9K@eDBnGFXAQB(=CC zB*4`Wnd|7|gv@pJ_e0`3`}_I=xtu^85fK5=?-Jw;RbgacU=R}I><#2H0Wrwf%_$TA GG6Mj2oFE1O delta 20 ccmaF2hvm~|7PcTyH@8=kjci-l7~e<&09;T9&;S4c diff --git a/tests/data/audio/strawberry.wv b/tests/data/audio/strawberry.wv index 872f79131b8cee496ee789d22c8160fa06de3649..6a17b0e61220a20e602cdd3c0d4cc13950611051 100644 GIT binary patch delta 361 zcmX@#%XGV+X+vFGy(c3B13v>8EPzl93@lKFqmNUlFGERcaS2Q$F(;`sS0S;eB(t~# zMZz&C#4|VqMabFT*Vok#A_lYs43hJ63o>&OOEUBG7z{v$)`NsWqWQ(CMPThPr74-k z$qa_PU~LQxsd>ryDL@rIiDhY~7J5bodWHsI13>cbu6{wTD0Zh8<(C#@=B1+u=2RAC zCKsa!6~w0&rR5jpLhXimGsH8*2Vx-1H6cNc&fW}$Fa?pWjzJ7Y1_lO>0j?pA?yeCR O*clj*g0cbXYz6?!c}GG3 delta 67 zcmccJ&vd?*X+vF`h%EyH10xUv!2&P|BqqzW%PKeqxP~~oyGC4KXJ9~5)BsZi0NxG? A$N&HU diff --git a/tests/data/testdata.qrc b/tests/data/testdata.qrc index bce4ae1f..6f09a869 100644 --- a/tests/data/testdata.qrc +++ b/tests/data/testdata.qrc @@ -4,6 +4,7 @@ audio/strawberry.flac audio/strawberry.wv audio/strawberry.oga + audio/strawberry.ogg audio/strawberry.opus audio/strawberry.spx audio/strawberry.aif diff --git a/tests/src/song_test.cpp b/tests/src/song_test.cpp deleted file mode 100644 index 579e7034..00000000 --- a/tests/src/song_test.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Strawberry Music Player - * This file was part of Clementine. - * Copyright 2010, David Sansome - * Copyright 2019, Jonas Kvinge - * - * Strawberry is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Strawberry is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Strawberry. If not, see . - * - */ - -#include "config.h" - -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "core/song.h" - -#include "tagreader.h" -#include "test_utils.h" - -namespace { - -class SongTest : public ::testing::Test { - protected: - static void SetUpTestCase() { - // Return something from uninteresting mock functions. - testing::DefaultValue::Set("foobarbaz"); - } - - static Song ReadSongFromFile(const QString& filename) { - TagReader tag_reader; - Song song; - ::pb::tagreader::SongMetadata pb_song; - - // We need to init protobuf object from a Song object, to have default values initialized correctly. - song.ToProtobuf(&pb_song); - tag_reader.ReadFile(filename, &pb_song); - song.InitFromProtobuf(pb_song); - return song; - } - - static void WriteSongToFile(const Song& song, const QString& filename) { - TagReader tag_reader; - ::pb::tagreader::SongMetadata pb_song; - song.ToProtobuf(&pb_song); - tag_reader.SaveFile(filename, pb_song); - } - -}; - -TEST_F(SongTest, TestAudioFileTagging) { - - const QStringList files_to_test = QStringList() << ":/audio/strawberry.wav" - << ":/audio/strawberry.flac" - << ":/audio/strawberry.wv" - << ":/audio/strawberry.oga" - << ":/audio/strawberry.opus" - << ":/audio/strawberry.spx" - << ":/audio/strawberry.aif" - << ":/audio/strawberry.m4a" - << ":/audio/strawberry.mp4" - << ":/audio/strawberry.mp3" - << ":/audio/strawberry.asf"; - - for (const QString& test_filename : files_to_test) { - - TemporaryResource r(test_filename); - Song song = ReadSongFromFile(r.fileName()); - - // Compare files - QFile orig_file(test_filename); - orig_file.open(QIODevice::ReadOnly); - EXPECT_TRUE(orig_file.isOpen()); - QByteArray orig_file_data = orig_file.readAll(); - - QFile temp_file(r.fileName()); - temp_file.open(QIODevice::ReadOnly); - EXPECT_TRUE(temp_file.isOpen()); - QByteArray temp_file_data = temp_file.readAll(); - - EXPECT_TRUE(!orig_file_data.isEmpty()); - EXPECT_TRUE(!temp_file_data.isEmpty()); - EXPECT_TRUE(orig_file_data == temp_file_data); - - if (test_filename.contains(QRegExp(".*\\.wav$"))) continue; - - // Write tags - song.set_title("strawberry title"); - song.set_artist("strawberry artist"); - song.set_album("strawberry album"); - song.set_albumartist("strawberry album artist"); - song.set_composer("strawberry composer"); - song.set_performer("strawberry performer"); - song.set_grouping("strawberry grouping"); - song.set_genre("strawberry genre"); - song.set_comment("strawberry comment"); - song.set_track(12); - song.set_disc(1234); - song.set_year(2019); - WriteSongToFile(song, r.fileName()); - - // Read tags - Song new_song = ReadSongFromFile(r.fileName()); - EXPECT_EQ("strawberry title", new_song.title()); - EXPECT_EQ("strawberry artist", new_song.artist()); - EXPECT_EQ("strawberry album", new_song.album()); - if (!test_filename.contains(QRegExp(".*\\.aif$")) && !test_filename.contains(QRegExp(".*\\.asf$"))) { - EXPECT_EQ("strawberry album artist", new_song.albumartist()); - EXPECT_EQ("strawberry composer", new_song.composer()); - if (!test_filename.contains(QRegExp(".*\\.mp4$")) && !test_filename.contains(QRegExp(".*\\.m4a$"))) { - EXPECT_EQ("strawberry performer", new_song.performer()); - } - EXPECT_EQ("strawberry grouping", new_song.grouping()); - EXPECT_EQ(1234, new_song.disc()); - } - EXPECT_EQ("strawberry genre", new_song.genre()); - if (!test_filename.contains(QRegExp(".*\\.asf$"))) { - EXPECT_EQ("strawberry comment", new_song.comment()); - } - EXPECT_EQ(12, new_song.track()); - EXPECT_EQ(2019, new_song.year()); - - } - -} - -} // namespace diff --git a/tests/src/tagreader_test.cpp b/tests/src/tagreader_test.cpp new file mode 100644 index 00000000..21d1a7ed --- /dev/null +++ b/tests/src/tagreader_test.cpp @@ -0,0 +1,1681 @@ +/* + * Strawberry Music Player + * Copyright 2020, Jonas Kvinge + * + * Strawberry is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Strawberry is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Strawberry. If not, see . + * + */ + +#include "config.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "core/song.h" + +#include "tagreader.h" +#include "test_utils.h" + +namespace { + +class TagReaderTest : public ::testing::Test { + protected: + static void SetUpTestCase() { + // Return something from uninteresting mock functions. + testing::DefaultValue::Set("foobarbaz"); + } + + static Song ReadSongFromFile(const QString& filename) { + TagReader tag_reader; + Song song; + ::pb::tagreader::SongMetadata pb_song; + + // We need to init protobuf object from a Song object, to have default values initialized correctly. + song.ToProtobuf(&pb_song); + tag_reader.ReadFile(filename, &pb_song); + song.InitFromProtobuf(pb_song); + return song; + } + + static void WriteSongToFile(const Song& song, const QString& filename) { + TagReader tag_reader; + ::pb::tagreader::SongMetadata pb_song; + song.ToProtobuf(&pb_song); + tag_reader.SaveFile(filename, pb_song); + } + + static QString SHA256SUM(const QString &filename) { + QFile file(filename); + if (file.open(QIODevice::ReadOnly)) { + QByteArray buffer; + QCryptographicHash hash(QCryptographicHash::Sha256); + while (file.bytesAvailable() > 0) { + quint64 bytes_read = qMin(file.bytesAvailable(), qint64(8192)); + buffer = file.read(bytes_read); + if (buffer.isEmpty()) break; + hash.addData(buffer, bytes_read); + } + file.close(); + return hash.result().toHex(); + } + return QString(); + } + +}; + +TEST_F(TagReaderTest, TestFLACAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.flac"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.flac"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestWavPackAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.wv"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.wv"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestOggFLACAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.oga"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.oga"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestOggVorbisAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.ogg"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.ogg"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestOggOpusAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.opus"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.opus"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestOggSpeexAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.spx"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.spx"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestAIFFAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.aif"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.aif"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + //EXPECT_EQ("strawberry album artist", song.albumartist()); + //EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + //EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + //EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + //EXPECT_EQ("new album artist", song.albumartist()); + //EXPECT_EQ("new composer", song.composer()); + //EXPECT_EQ("new performer", song.performer()); + //EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + //EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + //EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + //EXPECT_EQ("strawberry album artist", song.albumartist()); + //EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + //EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + //EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestASFAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.asf"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.asf"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + //EXPECT_EQ("strawberry album artist", song.albumartist()); + //EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + //EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + //EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + //EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + //EXPECT_EQ("new album artist", song.albumartist()); + //EXPECT_EQ("new composer", song.composer()); + //EXPECT_EQ("new performer", song.performer()); + //EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + //EXPECT_EQ("new comment", song.comment()); + //EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + //EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + //EXPECT_EQ("strawberry album artist", song.albumartist()); + //EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + //EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + //EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + //EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + //EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestMP3AudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.mp3"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.mp3"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +TEST_F(TagReaderTest, TestM4AAudioFileTagging) { + + TemporaryResource r(":/audio/strawberry.m4a"); + + QString sha256sum_notags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_notags.isEmpty()); + + { // Compare files + QByteArray orig_file_data; + QByteArray temp_file_data; + { + QFile orig_file(":/audio/strawberry.m4a"); + orig_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(orig_file.isOpen()); + orig_file_data = orig_file.readAll(); + orig_file.close(); + } + + { + QFile temp_file(r.fileName()); + temp_file.open(QIODevice::ReadOnly); + EXPECT_TRUE(temp_file.isOpen()); + temp_file_data = temp_file.readAll(); + temp_file.close(); + } + + EXPECT_TRUE(!orig_file_data.isEmpty()); + EXPECT_TRUE(!temp_file_data.isEmpty()); + EXPECT_TRUE(orig_file_data == temp_file_data); + + } + + Song orig_song = ReadSongFromFile(r.fileName()); + + { // Write tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + // Read new checksum + QString sha256sum_tags = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum_tags.isEmpty()); + + { // Read tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + + } + + { // Write new tags + Song song; + song.set_title("new title"); + song.set_artist("new artist"); + song.set_album("new album"); + song.set_albumartist("new album artist"); + song.set_composer("new composer"); + song.set_performer("new performer"); + song.set_grouping("new grouping"); + song.set_genre("new genre"); + song.set_comment("new comment"); + song.set_lyrics("new lyrics"); + song.set_track(21); + song.set_disc(4321); + song.set_year(9102); + WriteSongToFile(song, r.fileName()); + } + + { // Read new tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("new title", song.title()); + EXPECT_EQ("new artist", song.artist()); + EXPECT_EQ("new album", song.album()); + EXPECT_EQ("new album artist", song.albumartist()); + EXPECT_EQ("new composer", song.composer()); + //EXPECT_EQ("new performer", song.performer()); + EXPECT_EQ("new grouping", song.grouping()); + EXPECT_EQ("new genre", song.genre()); + EXPECT_EQ("new comment", song.comment()); + //EXPECT_EQ("new lyrics", song.lyrics()); + EXPECT_EQ(21, song.track()); + EXPECT_EQ(4321, song.disc()); + EXPECT_EQ(9102, song.year()); + } + + { // Write original tags + Song song; + song.set_title("strawberry title"); + song.set_artist("strawberry artist"); + song.set_album("strawberry album"); + song.set_albumartist("strawberry album artist"); + song.set_composer("strawberry composer"); + song.set_performer("strawberry performer"); + song.set_grouping("strawberry grouping"); + song.set_genre("strawberry genre"); + song.set_comment("strawberry comment"); + song.set_lyrics("strawberry lyrics"); + song.set_track(12); + song.set_disc(1234); + song.set_year(2019); + WriteSongToFile(song, r.fileName()); + } + + { // Read original tags + Song song = ReadSongFromFile(r.fileName()); + EXPECT_EQ("strawberry title", song.title()); + EXPECT_EQ("strawberry artist", song.artist()); + EXPECT_EQ("strawberry album", song.album()); + EXPECT_EQ("strawberry album artist", song.albumartist()); + EXPECT_EQ("strawberry composer", song.composer()); + //EXPECT_EQ("strawberry performer", song.performer()); + EXPECT_EQ("strawberry grouping", song.grouping()); + EXPECT_EQ("strawberry genre", song.genre()); + EXPECT_EQ("strawberry comment", song.comment()); + //EXPECT_EQ("strawberry lyrics", song.lyrics()); + EXPECT_EQ(12, song.track()); + EXPECT_EQ(1234, song.disc()); + EXPECT_EQ(2019, song.year()); + } + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + EXPECT_EQ(sha256sum_tags, sha256sum); + } + + WriteSongToFile(orig_song, r.fileName()); + + { // Compare checksums + QString sha256sum = SHA256SUM(r.fileName()); + EXPECT_FALSE(sha256sum.isEmpty()); + //EXPECT_EQ(sha256sum, sha256sum_notags); + } + +} + +} // namespace