in mdb_shard/src/file_structs.rs [629:664]
fn test_compare_flags() {
let hash = simple_hash(42);
let bool_cases = vec![false, true];
// get 4 types of flags: 00, 01, 10, 11
let cases = iproduct!(bool_cases.clone(), bool_cases)
.map(|(has_validation, has_metadata_ext)| {
FileDataSequenceHeader::new(hash, 5, has_validation, has_metadata_ext)
})
.collect_vec();
// expected results from comparing these
let expected = vec![
SupersetResult::Equal, // 00, 00
SupersetResult::SuperB, // 00, 01
SupersetResult::SuperB, // 00, 10
SupersetResult::SuperB, // 00, 11
SupersetResult::SuperA, // 01, 00
SupersetResult::Equal, // 01, 01
SupersetResult::Neither, // 01, 10
SupersetResult::SuperB, // 01, 11
SupersetResult::SuperA, // 10, 00
SupersetResult::Neither, // 10, 01
SupersetResult::Equal, // 10, 10
SupersetResult::SuperB, // 10, 11
SupersetResult::SuperA, // 11, 00
SupersetResult::SuperA, // 11, 01
SupersetResult::SuperA, // 11, 10
SupersetResult::Equal, // 11, 11
];
let results = cases
.iter()
.flat_map(|a| cases.iter().map(|b| FileDataSequenceHeader::compare_flag_superset(a, b)))
.collect_vec();
assert_eq!(expected, results);
}