package node import ( "log" "testing" ) func TestDupCheck(t *testing.T) { dc := newDupCheck(0) for i := range bitSetSize { if dc.IsDup(uint64(i)) { t.Fatal("!") } } type TestCase struct { Counter uint64 Dup bool } testCases := []TestCase{ {0, true}, {1, true}, {2, true}, {3, true}, {63, true}, {256, true}, {510, true}, {511, true}, {512, false}, {0, true}, {512, true}, {513, false}, {517, false}, {512, true}, {513, true}, {514, false}, {515, false}, {516, false}, {517, true}, {2512, false}, {2000, true}, {2001, false}, {4000, false}, {4000 - 512, true}, // Too old. {4000 - 511, false}, // Just in the window. } for i, tc := range testCases { if ok := dc.IsDup(tc.Counter); ok != tc.Dup { log.Printf("%b", dc.bitSet) log.Printf("%+v", *dc) t.Fatal(i, ok, tc) } } }