package hash import ( "fmt" "testing" ) func TestLog2(t *testing.T) { testCases := []struct { n, res uint32 }{ {0, 0}, {1, 0}, {2, 1}, {3, 2}, {4, 2}, {8, 3}, {9, 4}, {128, 7}, {129, 8}, {1024, 10}, } for _, tc := range testCases { t.Run(fmt.Sprintf("log2(%v)=%v", tc.n, tc.res), func(t *testing.T) { res := log2(tc.n) if res != tc.res { t.Errorf("got %v; want %v", res, tc.res) } }) } } func BenchmarkLog2(b *testing.B) { for i := 0; i < b.N; i++ { log2(1024) } }