|
@@ -0,0 +1,46 @@
|
|
|
+package kata_test
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ . "github.com/onsi/ginkgo"
|
|
|
+ . "github.com/onsi/gomega"
|
|
|
+
|
|
|
+ . "code.osinet.fr/fgm/codewars/kyu5/product_of_consecutive_fib_numbers"
|
|
|
+)
|
|
|
+
|
|
|
+func dotest(prod uint64, exp [3]uint64) {
|
|
|
+ var ans = ProductFib(prod)
|
|
|
+ Expect(ans).To(Equal(exp))
|
|
|
+}
|
|
|
+
|
|
|
+var _ = Describe("Test Example", func() {
|
|
|
+
|
|
|
+ It("should handle basic cases", func() {
|
|
|
+ dotest(4895, [3]uint64{55, 89, 1})
|
|
|
+ dotest(5895, [3]uint64{89, 144, 0})
|
|
|
+ dotest(229970, [3]uint64{377, 610, 1})
|
|
|
+ dotest(74049690, [3]uint64{6765, 10946, 1})
|
|
|
+ dotest(84049690, [3]uint64{10946, 17711, 0})
|
|
|
+ dotest(193864606, [3]uint64{10946, 17711, 1})
|
|
|
+ dotest(427859097160, [3]uint64{514229, 832040, 1})
|
|
|
+ dotest(5456077604922913920, [3]uint64{2971215073, 4807526976, 0})
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+func TestBinet(t *testing.T) {
|
|
|
+ OEIS_A000045 := [...]uint64{
|
|
|
+ 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597,
|
|
|
+ 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418,
|
|
|
+ 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465,
|
|
|
+ 14930352, 24157817, 39088169, 63245986, 102334155,
|
|
|
+ }
|
|
|
+ var n int
|
|
|
+ var actual, expected uint64
|
|
|
+ for n, expected = range OEIS_A000045 {
|
|
|
+ actual = Binet(uint64(n))
|
|
|
+ if actual != expected {
|
|
|
+ t.Errorf("n: %d, expected: %d, got %d\n", n, expected, actual)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|