@@ -6,7 +6,7 @@ use lofty::id3::v2::Id3v2Tag;
66use lofty:: iff:: wav:: { RiffInfoList , WavFile , WavFormat } ;
77use lofty:: tag:: { Accessor , TagType } ;
88
9- use std:: io:: { Cursor , Read , Seek , SeekFrom } ;
9+ use std:: io:: { Cursor , Read , Seek , SeekFrom , Write } ;
1010
1111#[ test]
1212fn test_pcm_properties ( ) {
@@ -280,48 +280,47 @@ fn test_fuzzed_file2() {
280280
281281#[ test]
282282fn test_file_with_garbage_appended ( ) {
283- todo ! ( "Doesn't pass, need to check what TagLib is doing here" )
284- // let mut file = temp_file!("tests/taglib/data/empty.wav");
285- // let contents_before_modification;
286- // {
287- // file.seek(SeekFrom::End(0)).unwrap();
288- //
289- // let garbage = b"12345678";
290- // file.write_all(garbage).unwrap();
291- // file.rewind().unwrap();
292- //
293- // let mut file_contents = Vec::new();
294- // file.read_to_end(&mut file_contents).unwrap();
295- //
296- // contents_before_modification = file_contents;
297- // }
298- // file.rewind().unwrap();
299- // {
300- // let mut f = WavFile::read_from(&mut file, ParseOptions::new()).unwrap();
301- // file.rewind().unwrap();
302- //
303- // let mut id3v2 = Id3v2Tag::default();
304- // id3v2.set_title(String::from("ID3v2 Title"));
305- // f.set_id3v2(id3v2);
306- //
307- // let mut riff_info = RiffInfoList::default();
308- // riff_info.set_title(String::from("INFO Title"));
309- // f.set_riff_info(riff_info);
310- //
311- // f.save_to(&mut file).unwrap();
312- // }
313- // file.rewind().unwrap();
314- // {
315- // TagType::Id3v2.remove_from(&mut file).unwrap();
316- // file.rewind().unwrap();
317- // TagType::RiffInfo.remove_from(&mut file).unwrap();
318- // }
319- // file.rewind().unwrap();
320- // {
321- // let mut contents_after_modification = Vec::new();
322- // file.read_to_end(&mut contents_after_modification).unwrap();
323- // assert_eq!(contents_before_modification, contents_after_modification);
324- // }
283+ let mut file = temp_file ! ( "tests/taglib/data/empty.wav" ) ;
284+ let contents_before_modification;
285+ {
286+ file. seek ( SeekFrom :: End ( 0 ) ) . unwrap ( ) ;
287+
288+ let garbage = b"12345678" ;
289+ file. write_all ( garbage) . unwrap ( ) ;
290+ file. rewind ( ) . unwrap ( ) ;
291+
292+ let mut file_contents = Vec :: new ( ) ;
293+ file. read_to_end ( & mut file_contents) . unwrap ( ) ;
294+
295+ contents_before_modification = file_contents;
296+ }
297+ file. rewind ( ) . unwrap ( ) ;
298+ {
299+ let mut f = WavFile :: read_from ( & mut file, ParseOptions :: new ( ) ) . unwrap ( ) ;
300+ file. rewind ( ) . unwrap ( ) ;
301+
302+ let mut id3v2 = Id3v2Tag :: default ( ) ;
303+ id3v2. set_title ( String :: from ( "ID3v2 Title" ) ) ;
304+ f. set_id3v2 ( id3v2) ;
305+
306+ let mut riff_info = RiffInfoList :: default ( ) ;
307+ riff_info. set_title ( String :: from ( "INFO Title" ) ) ;
308+ f. set_riff_info ( riff_info) ;
309+
310+ f. save_to ( & mut file, WriteOptions :: default ( ) ) . unwrap ( ) ;
311+ }
312+ file. rewind ( ) . unwrap ( ) ;
313+ {
314+ TagType :: Id3v2 . remove_from ( & mut file) . unwrap ( ) ;
315+ file. rewind ( ) . unwrap ( ) ;
316+ TagType :: RiffInfo . remove_from ( & mut file) . unwrap ( ) ;
317+ }
318+ file. rewind ( ) . unwrap ( ) ;
319+ {
320+ let mut contents_after_modification = Vec :: new ( ) ;
321+ file. read_to_end ( & mut contents_after_modification) . unwrap ( ) ;
322+ assert_eq ! ( contents_before_modification, contents_after_modification) ;
323+ }
325324}
326325
327326#[ test]
0 commit comments