mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Add test for slice.permute
This commit is contained in:
@@ -184,4 +184,34 @@ test_binary_search :: proc(t: ^testing.T) {
|
|||||||
index, found = slice.binary_search(b, 0)
|
index, found = slice.binary_search(b, 0)
|
||||||
testing.expect(t, index == 0, "Expected index to be 0.")
|
testing.expect(t, index == 0, "Expected index to be 0.")
|
||||||
testing.expect(t, found == false, "Expected found to be false.")
|
testing.expect(t, found == false, "Expected found to be false.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test
|
||||||
|
test_permutation_iterator :: proc(t: ^testing.T) {
|
||||||
|
// Big enough to do some sanity checking but not overly large.
|
||||||
|
FAC_5 :: 120
|
||||||
|
s := []int{1, 2, 3, 4, 5}
|
||||||
|
seen: map[int]bool
|
||||||
|
defer delete(seen)
|
||||||
|
|
||||||
|
iter := slice.make_permutation_iterator(s)
|
||||||
|
defer slice.destroy_permutation_iterator(iter)
|
||||||
|
|
||||||
|
permutations_counted: int
|
||||||
|
for slice.permute(&iter) {
|
||||||
|
n := 0
|
||||||
|
for item, index in s {
|
||||||
|
n *= 10
|
||||||
|
n += item
|
||||||
|
}
|
||||||
|
if n in seen {
|
||||||
|
testing.fail_now(t, "Permutation iterator made a duplicate permutation.")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
seen[n] = true
|
||||||
|
permutations_counted += 1
|
||||||
|
}
|
||||||
|
|
||||||
|
testing.expect_value(t, len(seen), FAC_5)
|
||||||
|
testing.expect_value(t, permutations_counted, FAC_5)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user