68 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			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
 | 
						|
}
 |