@@ -44,6 +44,7 @@ class TestWAV : public CppUnit::TestFixture
4444 CPPUNIT_TEST (testFloatProperties);
4545 CPPUNIT_TEST (testZeroSizeDataChunk);
4646 CPPUNIT_TEST (testID3v2Tag);
47+ CPPUNIT_TEST (testSaveID3v23);
4748 CPPUNIT_TEST (testInfoTag);
4849 CPPUNIT_TEST (testStripTags);
4950 CPPUNIT_TEST (testDuplicateTags);
@@ -139,6 +140,29 @@ class TestWAV : public CppUnit::TestFixture
139140 }
140141 }
141142
143+ void testSaveID3v23 ()
144+ {
145+ ScopedFileCopy copy (" empty" , " .wav" );
146+ string newname = copy.fileName ();
147+
148+ String xxx = ByteVector (254 , ' X' );
149+ {
150+ RIFF::WAV::File f (newname.c_str ());
151+ CPPUNIT_ASSERT_EQUAL (false , f.hasID3v2Tag ());
152+
153+ f.tag ()->setTitle (xxx);
154+ f.tag ()->setArtist (" Artist A" );
155+ f.save (RIFF::WAV::File::AllTags, File::StripOthers, ID3v2::v3);
156+ CPPUNIT_ASSERT_EQUAL (true , f.hasID3v2Tag ());
157+ }
158+ {
159+ RIFF::WAV::File f2 (newname.c_str ());
160+ CPPUNIT_ASSERT_EQUAL ((unsigned int )3 , f2.ID3v2Tag ()->header ()->majorVersion ());
161+ CPPUNIT_ASSERT_EQUAL (String (" Artist A" ), f2.tag ()->artist ());
162+ CPPUNIT_ASSERT_EQUAL (xxx, f2.tag ()->title ());
163+ }
164+ }
165+
142166 void testInfoTag ()
143167 {
144168 ScopedFileCopy copy (" empty" , " .wav" );
@@ -191,7 +215,7 @@ class TestWAV : public CppUnit::TestFixture
191215 RIFF::WAV::File f (filename.c_str ());
192216 CPPUNIT_ASSERT (f.hasID3v2Tag ());
193217 CPPUNIT_ASSERT (f.hasInfoTag ());
194- f.save (RIFF::WAV::File::ID3v2, true );
218+ f.save (RIFF::WAV::File::ID3v2, File::StripOthers );
195219 }
196220 {
197221 RIFF::WAV::File f (filename.c_str ());
@@ -205,7 +229,7 @@ class TestWAV : public CppUnit::TestFixture
205229 RIFF::WAV::File f (filename.c_str ());
206230 CPPUNIT_ASSERT (f.hasID3v2Tag ());
207231 CPPUNIT_ASSERT (f.hasInfoTag ());
208- f.save (RIFF::WAV::File::Info, true );
232+ f.save (RIFF::WAV::File::Info, File::StripOthers );
209233 }
210234 {
211235 RIFF::WAV::File f (filename.c_str ());
0 commit comments