122 lines
2.7 KiB
V
122 lines
2.7 KiB
V
module dedupestor
|
|
|
|
fn test_reference_bytes_conversion() {
|
|
ref := Reference{
|
|
owner: 12345
|
|
id: 67890
|
|
}
|
|
|
|
bytes := ref.to_bytes()
|
|
recovered := bytes_to_reference(bytes)
|
|
|
|
assert ref.owner == recovered.owner
|
|
assert ref.id == recovered.id
|
|
}
|
|
|
|
fn test_metadata_bytes_conversion() {
|
|
mut metadata := Metadata{
|
|
id: 42
|
|
references: []Reference{}
|
|
}
|
|
|
|
ref1 := Reference{
|
|
owner: 1
|
|
id: 100
|
|
}
|
|
ref2 := Reference{
|
|
owner: 2
|
|
id: 200
|
|
}
|
|
|
|
metadata = metadata.add_reference(ref1)!
|
|
metadata = metadata.add_reference(ref2)!
|
|
|
|
bytes := metadata.to_bytes()
|
|
recovered := bytes_to_metadata(bytes)
|
|
|
|
assert metadata.id == recovered.id
|
|
assert metadata.references.len == recovered.references.len
|
|
assert metadata.references[0].owner == recovered.references[0].owner
|
|
assert metadata.references[0].id == recovered.references[0].id
|
|
assert metadata.references[1].owner == recovered.references[1].owner
|
|
assert metadata.references[1].id == recovered.references[1].id
|
|
}
|
|
|
|
fn test_add_reference() {
|
|
mut metadata := Metadata{
|
|
id: 1
|
|
references: []Reference{}
|
|
}
|
|
|
|
ref1 := Reference{
|
|
owner: 1
|
|
id: 100
|
|
}
|
|
ref2 := Reference{
|
|
owner: 2
|
|
id: 200
|
|
}
|
|
|
|
// Add first reference
|
|
metadata = metadata.add_reference(ref1)!
|
|
assert metadata.references.len == 1
|
|
assert metadata.references[0].owner == ref1.owner
|
|
assert metadata.references[0].id == ref1.id
|
|
|
|
// Add second reference
|
|
metadata = metadata.add_reference(ref2)!
|
|
assert metadata.references.len == 2
|
|
assert metadata.references[1].owner == ref2.owner
|
|
assert metadata.references[1].id == ref2.id
|
|
|
|
// Try adding duplicate reference
|
|
metadata = metadata.add_reference(ref1)!
|
|
assert metadata.references.len == 2 // Length shouldn't change
|
|
}
|
|
|
|
fn test_remove_reference() {
|
|
mut metadata := Metadata{
|
|
id: 1
|
|
references: []Reference{}
|
|
}
|
|
|
|
ref1 := Reference{
|
|
owner: 1
|
|
id: 100
|
|
}
|
|
ref2 := Reference{
|
|
owner: 2
|
|
id: 200
|
|
}
|
|
|
|
metadata = metadata.add_reference(ref1)!
|
|
metadata = metadata.add_reference(ref2)!
|
|
|
|
// Remove first reference
|
|
metadata = metadata.remove_reference(ref1)!
|
|
assert metadata.references.len == 1
|
|
assert metadata.references[0].owner == ref2.owner
|
|
assert metadata.references[0].id == ref2.id
|
|
|
|
// Remove non-existent reference
|
|
metadata = metadata.remove_reference(Reference{ owner: 999, id: 999 })!
|
|
assert metadata.references.len == 1 // Length shouldn't change
|
|
|
|
// Remove last reference
|
|
metadata = metadata.remove_reference(ref2)!
|
|
assert metadata.references.len == 0
|
|
}
|
|
|
|
fn test_empty_metadata_bytes() {
|
|
empty := bytes_to_metadata([]u8{})
|
|
assert empty.id == 0
|
|
assert empty.references.len == 0
|
|
}
|
|
|
|
fn test_u32_bytes_conversion() {
|
|
n := u32(0x12345678)
|
|
bytes := u32_to_bytes(n)
|
|
recovered := bytes_to_u32(bytes)
|
|
assert n == recovered
|
|
}
|