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
 | |
| }
 |