lofty-rs/tests/inner.rs

58 lines
1.5 KiB
Rust
Raw Normal View History

2021-04-22 22:01:09 +00:00
use lofty::{ID3Format, Tag, TagType, ToAnyTag, VorbisTag};
2020-10-27 15:00:22 +00:00
#[test]
2021-04-21 18:22:52 +00:00
#[cfg(all(feature = "id3", feature = "flac"))]
2020-10-27 15:00:22 +00:00
fn test_inner() {
// New flac tag
let mut innertag = metaflac::Tag::new();
// Set the title of the flac tag
innertag
.vorbis_comments_mut()
.set_title(vec!["title from metaflac::Tag"]);
// Turn the flac tag into a VorbisTag
let tag: VorbisTag = innertag.into();
// Turn the VorbisTag into a Box<dyn AudioTag>
2021-04-22 22:01:09 +00:00
let id3tag = tag.to_dyn_tag(TagType::Id3v2(ID3Format::Default));
// Write Box<dyn AudioTag> to `a.mp3`
id3tag
2021-04-06 20:37:31 +00:00
.write_to_path("tests/assets/a.mp3")
.expect("Fail to write!");
2020-10-27 15:00:22 +00:00
// Read from `a.mp3`
let id3tag_reload = Tag::default()
2021-04-22 22:01:09 +00:00
.read_from_path("tests/assets/a.mp3")
.expect("Fail to read!");
// Confirm title still matches
assert_eq!(id3tag_reload.title(), Some("title from metaflac::Tag"));
2020-10-27 15:24:54 +00:00
// Convert Box<dyn AudioTag> to id3::Tag
let mut id3tag_inner: id3::Tag = id3tag_reload.into();
// Create timestamp and change date_recorded
let timestamp = id3::Timestamp {
year: 2013,
month: Some(2u8),
day: Some(5u8),
hour: Some(6u8),
minute: None,
second: None,
};
id3tag_inner.set_date_recorded(timestamp);
// Write id3::Tag to `a.mp3`
id3tag_inner
2021-04-06 20:37:31 +00:00
.write_to_path("tests/assets/a.mp3", id3::Version::Id3v24)
.expect("Fail to write!");
2020-10-27 15:24:54 +00:00
// Read from `a.mp3`
2021-04-06 20:37:31 +00:00
let id3tag_reload = id3::Tag::read_from_path("tests/assets/a.mp3").expect("Fail to read!");
// Confirm timestamp still matches
assert_eq!(id3tag_reload.date_recorded(), Some(timestamp));
2020-10-27 15:00:22 +00:00
}