|
| 1 | +package com.thealgorithms.matrix.matrixexponentiation; |
| 2 | +import static org.junit.jupiter.api.Assertions.assertArrayEquals; |
| 3 | + |
| 4 | +import java.math.BigDecimal; |
| 5 | +import org.junit.jupiter.api.Test; |
| 6 | +class FibonacciTest { |
| 7 | + private static BigDecimal[][] matrix(String a, String b, String c, String d) { |
| 8 | + return new BigDecimal[][] {{new BigDecimal(a), new BigDecimal(b)}, {new BigDecimal(c), new BigDecimal(d)}}; |
| 9 | + } |
| 10 | + @Test |
| 11 | + void testFibZeroReturnsIdentityMatrix() { |
| 12 | + assertArrayEquals(matrix("1", "0", "0", "1"), Fibonacci.fib(0)); |
| 13 | + } |
| 14 | + @Test |
| 15 | + void testFibOne() { |
| 16 | + assertArrayEquals(matrix("1", "1", "1", "0"), Fibonacci.fib(1)); |
| 17 | + } |
| 18 | + @Test |
| 19 | + void testFibEvenInput() { |
| 20 | + assertArrayEquals(matrix("2", "1", "1", "1"), Fibonacci.fib(2)); |
| 21 | + } |
| 22 | + @Test |
| 23 | + void testFibOddInput() { |
| 24 | + assertArrayEquals(matrix("3", "2", "2", "1"), Fibonacci.fib(3)); |
| 25 | + } |
| 26 | + @Test |
| 27 | + void testFibTen() { |
| 28 | + assertArrayEquals(matrix("89", "55", "55", "34"), Fibonacci.fib(10)); |
| 29 | + } |
| 30 | + @Test |
| 31 | + void testFibLargeInput() { |
| 32 | + assertArrayEquals(matrix("20365011074", "12586269025", "12586269025", "7778742049"), Fibonacci.fib(50)); |
| 33 | + } |
| 34 | +} |
0 commit comments