From ba25b16a8182e291b6bcc6e4c230a5178ee21ae8 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 16 Jan 2019 01:07:38 +0100 Subject: add log2 --- internal/hash/hash_log2_test.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 internal/hash/hash_log2_test.go (limited to 'internal/hash/hash_log2_test.go') diff --git a/internal/hash/hash_log2_test.go b/internal/hash/hash_log2_test.go new file mode 100644 index 0000000..f4c8bf3 --- /dev/null +++ b/internal/hash/hash_log2_test.go @@ -0,0 +1,37 @@ +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) + } +} -- cgit v1.2.3