Skip to content

Commit 0632dd9

Browse files
Methapon2001Serial-ATA
authored andcommitted
test(vorbis): disk implicit conversion current/total
1 parent 4f81ef4 commit 0632dd9

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

lofty/src/ogg/tag.rs

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -977,4 +977,83 @@ mod tests {
977977
assert_eq!(tag.get("TRACKNUMBER"), Some("01"));
978978
assert_eq!(tag.get("TRACKTOTAL"), Some("05"));
979979
}
980+
981+
// case DISCNUMBER=01/05
982+
#[test_log::test]
983+
fn opus_issue_543() {
984+
let mut comments = VorbisComments::new();
985+
comments.insert(String::from("DISCNUMBER"), String::from("01/05"));
986+
987+
let mut comments_bytes = Vec::new();
988+
comments
989+
.dump_to(&mut comments_bytes, WriteOptions::default())
990+
.unwrap();
991+
992+
let mut reader = Cursor::new(&comments_bytes);
993+
let tag = crate::ogg::read::read_comments(
994+
&mut reader,
995+
comments_bytes.len() as u64,
996+
ParseOptions::new()
997+
.parsing_mode(ParsingMode::Strict)
998+
.read_cover_art(false),
999+
)
1000+
.unwrap();
1001+
1002+
assert_eq!(tag.disk(), Some(1));
1003+
assert_eq!(tag.disk_total(), Some(5));
1004+
}
1005+
1006+
// case DISCNUMBER=01/05 disable implicit_conversions
1007+
#[test_log::test]
1008+
fn opus_disc_disable_implicit_conversions() {
1009+
let mut comments = VorbisComments::new();
1010+
comments.insert(String::from("DISCNUMBER"), String::from("01/05"));
1011+
1012+
let mut comments_bytes = Vec::new();
1013+
comments
1014+
.dump_to(&mut comments_bytes, WriteOptions::default())
1015+
.unwrap();
1016+
1017+
let mut reader = Cursor::new(&comments_bytes);
1018+
let tag = crate::ogg::read::read_comments(
1019+
&mut reader,
1020+
comments_bytes.len() as u64,
1021+
ParseOptions::new()
1022+
.parsing_mode(ParsingMode::Strict)
1023+
.implicit_conversions(false)
1024+
.read_cover_art(false),
1025+
)
1026+
.unwrap();
1027+
1028+
assert_eq!(tag.disk(), None);
1029+
assert_eq!(tag.disk_total(), None);
1030+
assert_eq!(tag.get("DISCNUMBER"), Some("01/05"));
1031+
}
1032+
1033+
// case track number and total with leading 0
1034+
#[test_log::test]
1035+
fn opus_disc_leading_0() {
1036+
let mut comments = VorbisComments::new();
1037+
comments.insert(String::from("DISCNUMBER"), String::from("01"));
1038+
comments.insert(String::from("DISCTOTAL"), String::from("05"));
1039+
1040+
let mut comments_bytes = Vec::new();
1041+
comments
1042+
.dump_to(&mut comments_bytes, WriteOptions::default())
1043+
.unwrap();
1044+
1045+
let mut reader = Cursor::new(&comments_bytes);
1046+
let tag = crate::ogg::read::read_comments(
1047+
&mut reader,
1048+
comments_bytes.len() as u64,
1049+
ParseOptions::new()
1050+
.parsing_mode(ParsingMode::Strict)
1051+
.implicit_conversions(false)
1052+
.read_cover_art(false),
1053+
)
1054+
.unwrap();
1055+
1056+
assert_eq!(tag.get("DISCNUMBER"), Some("01"));
1057+
assert_eq!(tag.get("DISCTOTAL"), Some("05"));
1058+
}
9801059
}

0 commit comments

Comments
 (0)