Sebastian Thielmake fmt7cf35454 years agoHistory
77 lines · 2.7 KB · Rust
RawDownload
use std::path::PathBuf; use git_testtools::hex_to_id; use super::multi_index; #[test]fn lookup_with_ambiguity() {    let (file, _path) = multi_index();    let oid = hex_to_id("cfc33fc40413fb3e30ff6b44d03fd8d071cb633b");    let prefix = git_hash::Prefix::new(oid, 4).unwrap();    assert_eq!(file.lookup_prefix(prefix), Some(Err(())))} #[test]fn lookup_prefix() {    let (file, _path) = multi_index();     for (idx, entry) in file.iter().enumerate() {        let hex_len = (idx % file.object_hash().len_in_hex()).max(5);        let hex_oid = entry.oid.to_hex_with_len(hex_len).to_string();        assert_eq!(hex_oid.len(), hex_len);        let oid_prefix = git_hash::Prefix::new(&entry.oid, hex_len).unwrap();        let entry_index = file            .lookup_prefix(oid_prefix)            .expect("object found")            .expect("non-ambiguous");        assert_eq!(file.oid_at_index(entry_index), entry.oid);    }} #[test]fn lookup_missing() {    let (file, _path) = multi_index();    let prefix = git_hash::Prefix::new(git_hash::ObjectId::null(git_hash::Kind::Sha1), 7).unwrap();    assert!(file.lookup_prefix(prefix).is_none());} #[test]fn general() {    let (file, path) = multi_index();     assert_eq!(file.version(), git_pack::multi_index::Version::V1);    assert_eq!(file.path(), path);    assert_eq!(file.num_indices(), 1);    assert_eq!(file.object_hash(), git_hash::Kind::Sha1);    assert_eq!(file.num_objects(), 868);    assert_eq!(file.checksum(), hex_to_id("39a3804d0a84de609e4fcb49e66dc1297c75ca11"));    // assert_eq!()    assert_eq!(        file.index_names(),        vec![PathBuf::from("pack-542ad1d1c7c762ea4e36907570ff9e4b5b7dde1b.idx")]    );     for (idx, expected_pack_offset, expected_oid) in &[        (0u32, 25267u64, hex_to_id("000f574443efab4ddbeee3621e49124eb3f8b6d0")),        (140, 30421, hex_to_id("2935a65b1d69fb33c93dabc4cdf65a6f4d30ce4c")),        (867, 24540, hex_to_id("ffea360a6a54c1185eeae4f3cfefc927cf7a35a9")),    ] {        let actual_oid = file.oid_at_index(*idx);        assert_eq!(actual_oid, *expected_oid);        assert_eq!(file.lookup(actual_oid), Some(*idx));        let (pack_id, pack_offset) = file.pack_id_and_pack_offset_at_index(*idx);        assert_eq!(pack_id, 0, "we only have one pack here");        assert_eq!(pack_offset, *expected_pack_offset);    }     let mut count = 0;    for (idx, entry) in file.iter().enumerate() {        assert_eq!(entry.oid, file.oid_at_index(idx as u32));        let (pack_index, pack_offset) = file.pack_id_and_pack_offset_at_index(idx as u32);        assert_eq!(pack_index, entry.pack_index);        assert_eq!(pack_offset, entry.pack_offset);        count += 1;    }    assert_eq!(count, file.num_objects());}