v/vlib/hash/fnv1a/fnv1a_test.v

68 lines
1.1 KiB
V

import hash.fnv1a
struct MyStruct {
mut:
x int
y int
z int
}
struct Abc {
mut:
a [5]u64
}
fn test_fnv1a_sum32() {
$if windows {
return
}
ahash := '10bc2abf'
a := 'apple'
b := fnv1a.sum32_string(a)
c := fnv1a.sum32(a.bytes())
d := unsafe { fnv1a.sum32_bytes(a.str, a.len) }
assert b.hex() == ahash
assert c.hex() == ahash
assert d.hex() == ahash
//
mut aa := Abc{}
x := fnv1a.sum32_struct(aa)
aa.a[3] = 5
y := fnv1a.sum32_struct(aa)
assert x != y
mut ms := MyStruct{}
xx := fnv1a.sum32_struct(ms)
ms.x = 77
yy := fnv1a.sum32_struct(ms)
assert xx != yy
assert x != xx
assert y != yy
}
fn test_fnv1a_sum64() {
$if windows {
return
}
a := 'apple'
ahash := 'f74a62a458befdbf'
b := fnv1a.sum64_string(a)
c := fnv1a.sum64(a.bytes())
d := unsafe { fnv1a.sum64_bytes(a.str, a.len) }
assert b.hex() == ahash
assert c.hex() == ahash
assert d.hex() == ahash
//
mut aa := Abc{}
x := fnv1a.sum64_struct(aa)
aa.a[3] = 5
y := fnv1a.sum64_struct(aa)
assert x != y
mut ms := MyStruct{}
xx := fnv1a.sum64_struct(ms)
ms.x = 77
yy := fnv1a.sum64_struct(ms)
assert xx != yy
assert x != xx
assert y != yy
}