@@ -2,7 +2,7 @@ use crate::temp_file;
22use crate :: util:: get_file;
33use lofty:: config:: { ParseOptions , WriteOptions } ;
44use lofty:: file:: AudioFile ;
5- use lofty:: id3:: v2:: Id3v2Tag ;
5+ use lofty:: id3:: v2:: { Id3v2Tag , Id3v2Version } ;
66use lofty:: iff:: wav:: { RiffInfoList , WavFile , WavFormat } ;
77use lofty:: tag:: { Accessor , TagType } ;
88
@@ -108,30 +108,32 @@ fn test_id3v2_tag() {
108108 }
109109}
110110
111- // TODO: Support downgrading to ID3v2.3 (#62)
112111#[ test]
113- #[ ignore]
114112fn test_save_id3v23 ( ) {
115- // let mut file = temp_file!("tests/taglib/data/empty.wav");
116- //
117- // let xxx = "X".repeat(254);
118- // {
119- // let mut f = WavFile::read_from(&mut file, ParseOptions::new()).unwrap();
120- // assert!(f.id3v2().is_none());
121- //
122- // f.id3v2_mut().unwrap().set_title(xxx.clone());
123- // f.id3v2_mut().unwrap().set_artist(String::from("Artist A"));
124- //
125- // // f.save(RIFF::WAV::File::AllTags, File::StripOthers, ID3v2::v3);
126- // // assert!(f.id3v2().is_some());
127- // }
128- // {
129- // let f2 = WavFile::read_from(&mut file, ParseOptions::new()).unwrap();
130- // let tag = f2.id3v2().unwrap();
131- // assert_eq!(tag.original_version(), Id3v2Version::V3);
132- // assert_eq!(tag.artist().as_deref(), Some("Artist A"));
133- // assert_eq!(tag.title().as_deref(), Some(&*xxx));
134- // }
113+ let mut file = temp_file ! ( "tests/taglib/data/empty.wav" ) ;
114+
115+ let xxx = "X" . repeat ( 254 ) ;
116+ {
117+ let mut f = WavFile :: read_from ( & mut file, ParseOptions :: new ( ) ) . unwrap ( ) ;
118+ assert ! ( f. id3v2( ) . is_none( ) ) ;
119+
120+ let mut id3v2 = Id3v2Tag :: new ( ) ;
121+ id3v2. set_title ( xxx. clone ( ) ) ;
122+ id3v2. set_artist ( String :: from ( "Artist A" ) ) ;
123+ f. set_id3v2 ( id3v2) ;
124+
125+ f. save_to ( & mut file, WriteOptions :: new ( ) . use_id3v23 ( true ) )
126+ . unwrap ( ) ;
127+ assert ! ( f. id3v2( ) . is_some( ) ) ;
128+ }
129+ file. rewind ( ) . unwrap ( ) ;
130+ {
131+ let f2 = WavFile :: read_from ( & mut file, ParseOptions :: new ( ) ) . unwrap ( ) ;
132+ let tag = f2. id3v2 ( ) . unwrap ( ) ;
133+ assert_eq ! ( tag. original_version( ) , Id3v2Version :: V3 ) ;
134+ assert_eq ! ( tag. artist( ) . as_deref( ) , Some ( "Artist A" ) ) ;
135+ assert_eq ! ( tag. title( ) . as_deref( ) , Some ( & * xxx) ) ;
136+ }
135137}
136138
137139#[ test]
0 commit comments