1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
package numeric
import "testing"
func TestInterleaveDeinterleave(t *testing.T) {
tests := []struct {
v1 uint64
v2 uint64
}{
{0, 0},
{1, 1},
{27, 39},
{1<<32 - 1, 1<<32 - 1}, // largest that should still work
}
for _, test := range tests {
i := Interleave(test.v1, test.v2)
gotv1 := Deinterleave(i)
gotv2 := Deinterleave(i >> 1)
if gotv1 != test.v1 {
t.Errorf("expected v1: %d, got %d, interleaved was %x", test.v1, gotv1, i)
}
if gotv2 != test.v2 {
t.Errorf("expected v2: %d, got %d, interleaved was %x", test.v2, gotv2, i)
}
}
}
|