Skip to content

Commit 75865f6

Browse files
committed
Implement PartialEq<&[u8; 4]> for FourCC and simplify tests.
Implementing PartialEq<&[u8; 4]> for FourCC allows us to simplify the comparisons being made in tests. It also makes non-test comparisons more concise. We don't appear to have any non test comparisons at this stage, but consumers of the API can benefit, as we may in future.
1 parent 8834ba4 commit 75865f6

File tree

3 files changed

+24
-18
lines changed

3 files changed

+24
-18
lines changed

mp4parse/src/boxes.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ impl fmt::Display for FourCC {
9494
}
9595
}
9696

97+
impl PartialEq<&[u8; 4]> for FourCC {
98+
fn eq(&self, other: &&[u8; 4]) -> bool {
99+
self.value.eq(*other)
100+
}
101+
}
102+
97103
box_database!(
98104
FileTypeBox 0x6674_7970, // "ftyp"
99105
MediaDataBox 0x6d64_6174, // "mdat"

mp4parse/src/tests.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use std::io::Read as _;
1717
extern crate test_assembler;
1818
use self::test_assembler::*;
1919

20-
use boxes::{BoxType, FourCC};
20+
use boxes::BoxType;
2121

2222
enum BoxSize {
2323
Short(u32),
@@ -181,11 +181,11 @@ fn read_ftyp() {
181181
assert_eq!(stream.head.name, BoxType::FileTypeBox);
182182
assert_eq!(stream.head.size, 24);
183183
let parsed = super::read_ftyp(&mut stream).unwrap();
184-
assert_eq!(parsed.major_brand, FourCC::from(*b"mp42")); // mp42
184+
assert_eq!(parsed.major_brand, b"mp42"); // mp42
185185
assert_eq!(parsed.minor_version, 0);
186186
assert_eq!(parsed.compatible_brands.len(), 2);
187-
assert_eq!(parsed.compatible_brands[0], FourCC::from(*b"isom")); // isom
188-
assert_eq!(parsed.compatible_brands[1], FourCC::from(*b"mp42")); // mp42
187+
assert_eq!(parsed.compatible_brands[0], b"isom"); // isom
188+
assert_eq!(parsed.compatible_brands[1], b"mp42"); // mp42
189189
}
190190

191191
#[test]
@@ -223,11 +223,11 @@ fn read_ftyp_case() {
223223
assert_eq!(stream.head.name, BoxType::FileTypeBox);
224224
assert_eq!(stream.head.size, 24);
225225
let parsed = super::read_ftyp(&mut stream).unwrap();
226-
assert_eq!(parsed.major_brand, FourCC::from(*b"MP42"));
226+
assert_eq!(parsed.major_brand, b"MP42");
227227
assert_eq!(parsed.minor_version, 0);
228228
assert_eq!(parsed.compatible_brands.len(), 2);
229-
assert_eq!(parsed.compatible_brands[0], FourCC::from(*b"ISOM")); // ISOM
230-
assert_eq!(parsed.compatible_brands[1], FourCC::from(*b"MP42")); // MP42
229+
assert_eq!(parsed.compatible_brands[0], b"ISOM"); // ISOM
230+
assert_eq!(parsed.compatible_brands[1], b"MP42"); // MP42
231231
}
232232

233233
#[test]
@@ -474,7 +474,7 @@ fn read_hdlr() {
474474
assert_eq!(stream.head.name, BoxType::HandlerBox);
475475
assert_eq!(stream.head.size, 45);
476476
let parsed = super::read_hdlr(&mut stream).unwrap();
477-
assert_eq!(parsed.handler_type, FourCC::from(*b"vide"));
477+
assert_eq!(parsed.handler_type, b"vide");
478478
}
479479

480480
#[test]
@@ -487,7 +487,7 @@ fn read_hdlr_short_name() {
487487
assert_eq!(stream.head.name, BoxType::HandlerBox);
488488
assert_eq!(stream.head.size, 33);
489489
let parsed = super::read_hdlr(&mut stream).unwrap();
490-
assert_eq!(parsed.handler_type, FourCC::from(*b"vide"));
490+
assert_eq!(parsed.handler_type, b"vide");
491491
}
492492

493493
#[test]
@@ -500,7 +500,7 @@ fn read_hdlr_zero_length_name() {
500500
assert_eq!(stream.head.name, BoxType::HandlerBox);
501501
assert_eq!(stream.head.size, 32);
502502
let parsed = super::read_hdlr(&mut stream).unwrap();
503-
assert_eq!(parsed.handler_type, FourCC::from(*b"vide"));
503+
assert_eq!(parsed.handler_type, b"vide");
504504
}
505505

506506
fn flac_streaminfo() -> Vec<u8> {

mp4parse/tests/public.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -309,9 +309,9 @@ fn public_audio_tenc() {
309309
assert_eq!(a.codec_type, mp4::CodecType::EncryptedAudio);
310310
match a.protection_info.iter().find(|sinf| sinf.tenc.is_some()) {
311311
Some(ref p) => {
312-
assert_eq!(p.original_format.value, *b"mp4a");
312+
assert_eq!(p.original_format, b"mp4a");
313313
if let Some(ref schm) = p.scheme_type {
314-
assert_eq!(schm.scheme_type.value, *b"cenc");
314+
assert_eq!(schm.scheme_type, b"cenc");
315315
} else {
316316
panic!("Expected scheme type info");
317317
}
@@ -368,9 +368,9 @@ fn public_video_cenc() {
368368
assert_eq!(v.codec_type, mp4::CodecType::EncryptedVideo);
369369
match v.protection_info.iter().find(|sinf| sinf.tenc.is_some()) {
370370
Some(ref p) => {
371-
assert_eq!(p.original_format.value, *b"avc1");
371+
assert_eq!(p.original_format, b"avc1");
372372
if let Some(ref schm) = p.scheme_type {
373-
assert_eq!(schm.scheme_type.value, *b"cenc");
373+
assert_eq!(schm.scheme_type, b"cenc");
374374
} else {
375375
panic!("Expected scheme type info");
376376
}
@@ -441,9 +441,9 @@ fn public_audio_cbcs() {
441441
mp4::SampleEntry::Audio(ref a) => {
442442
if let Some(p) = a.protection_info.iter().find(|sinf| sinf.tenc.is_some()) {
443443
found_encrypted_sample_description = true;
444-
assert_eq!(p.original_format.value, *b"mp4a");
444+
assert_eq!(p.original_format, b"mp4a");
445445
if let Some(ref schm) = p.scheme_type {
446-
assert_eq!(schm.scheme_type.value, *b"cbcs");
446+
assert_eq!(schm.scheme_type, b"cbcs");
447447
} else {
448448
panic!("Expected scheme type info");
449449
}
@@ -526,9 +526,9 @@ fn public_video_cbcs() {
526526
assert_eq!(v.height, 300);
527527
if let Some(p) = v.protection_info.iter().find(|sinf| sinf.tenc.is_some()) {
528528
found_encrypted_sample_description = true;
529-
assert_eq!(p.original_format.value, *b"avc1");
529+
assert_eq!(p.original_format, b"avc1");
530530
if let Some(ref schm) = p.scheme_type {
531-
assert_eq!(schm.scheme_type.value, *b"cbcs");
531+
assert_eq!(schm.scheme_type, b"cbcs");
532532
} else {
533533
panic!("Expected scheme type info");
534534
}

0 commit comments

Comments
 (0)