.{hashers, log, memory, fmt, string, math} := @use("stn")

test := fn(): uint {
	target := "abcdefghijklmnop"
	strings := .["abcdefshijklmnop", "abcdefghijklnnop", "abcdefshijklmnop", "abcdefghijklmnop", "abcdefghijflmnop", "dbcdefghijklmnop", "abcdefghijklmnop"]
	len := @sizeof(@TypeOf(strings)) / @sizeof([]u8)

	// hasher := hashers.foldhash.FoldHasher.new(1)
	hasher := hashers.foldhash.FoldHasher.default()
	hasher.write(target.ptr, target.len)
	correct := hasher.finish()

	log.printf("target string: {}, target hash: {}", .(target, correct), .{radix: 16})

	i := 0
	loop if i == len break else {
		defer i += 1

		hasher.reset()
		hasher.write(strings[i].ptr, strings[i].len)
		d := hasher.finish()
		log.printf("matches: {}, string: {}, hash: {}", .(d == correct, strings[i], d), .{radix: 16})
	}
	log.print("done", .{})
	return 0
}