-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
Copy pathfastexponent_test.go
67 lines (59 loc) · 1.45 KB
/
fastexponent_test.go
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package power
import "testing"
var testCases = []struct {
name string
base uint
power uint
expected uint
}{
{"0^2", 0, 2, 0},
{"2^0", 2, 0, 1},
{"2^3", 2, 3, 8},
{"8^3", 8, 3, 512},
{"10^5", 10, 5, 100000},
}
func TestIterativePower(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actual := IterativePower(tc.base, tc.power)
if actual != tc.expected {
t.Errorf("Expected %d to the power of %d to be: %d, but got: %d", tc.base, tc.power, tc.expected, actual)
}
})
}
}
func TestRecursivePower(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actual := RecursivePower(tc.base, tc.power)
if actual != tc.expected {
t.Errorf("Expected %d to the power of %d to be: %d, but got: %d", tc.base, tc.power, tc.expected, actual)
}
})
}
}
func TestRecursivePower1(t *testing.T) {
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actual := RecursivePower1(tc.base, tc.power)
if actual != tc.expected {
t.Errorf("Expected %d to the power of %d to be: %d, but got: %d", tc.base, tc.power, tc.expected, actual)
}
})
}
}
func BenchmarkIterativePower(b *testing.B) {
for i := 0; i < b.N; i++ {
IterativePower(10, 5)
}
}
func BenchmarkRecursivePower(b *testing.B) {
for i := 0; i < b.N; i++ {
RecursivePower(10, 5)
}
}
func BenchmarkRecursivePower1(b *testing.B) {
for i := 0; i < b.N; i++ {
RecursivePower1(10, 5)
}
}