|
1 | 1 | use crate::{set_artist, temp_file, verify_artist}; |
| 2 | +use lofty::musepack::MpcFile; |
2 | 3 | use lofty::{ |
3 | | - FileType, ItemKey, ItemValue, ParseOptions, Probe, TagExt, TagItem, TagType, TaggedFileExt, |
| 4 | + AudioFile, FileType, ItemKey, ItemValue, ParseOptions, Probe, TagExt, TagItem, TagType, |
| 5 | + TaggedFile, TaggedFileExt, |
4 | 6 | }; |
5 | 7 | use std::io::{Seek, Write}; |
6 | 8 |
|
@@ -81,3 +83,26 @@ macro_rules! generate_tests { |
81 | 83 |
|
82 | 84 | generate_tests!(sv8, "tests/files/assets/minimal/mpc_sv8.mpc"); |
83 | 85 | generate_tests!(sv7, "tests/files/assets/minimal/mpc_sv7.mpc"); |
| 86 | + |
| 87 | +// We have to use `MpcFile::read_from` for stream versions <= 6 |
| 88 | + |
| 89 | +#[test] |
| 90 | +fn read_sv5() { |
| 91 | + let mut file = temp_file!("tests/files/assets/minimal/mpc_sv5.mpc"); |
| 92 | + |
| 93 | + // Here we have an MPC file with an ID3v2, ID3v1, and an APEv2 tag |
| 94 | + let file: TaggedFile = MpcFile::read_from(&mut file, ParseOptions::new()) |
| 95 | + .unwrap() |
| 96 | + .into(); |
| 97 | + |
| 98 | + assert_eq!(file.file_type(), FileType::Mpc); |
| 99 | + |
| 100 | + // Verify the APE tag first |
| 101 | + crate::verify_artist!(file, primary_tag, "Foo artist", 1); |
| 102 | + |
| 103 | + // Now verify ID3v1 (read only) |
| 104 | + crate::verify_artist!(file, tag, TagType::Id3v1, "Bar artist", 1); |
| 105 | + |
| 106 | + // Finally, verify ID3v2 (read only) |
| 107 | + crate::verify_artist!(file, tag, TagType::Id3v2, "Baz artist", 1); |
| 108 | +} |
0 commit comments