mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-27 22:43:30 +08:00
Add tests, remove main
, add negativity test in Fibonacci.java
(#5645)
This commit is contained in:
@ -0,0 +1,89 @@
|
||||
package com.thealgorithms.dynamicprogramming;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class FibonacciTest {
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
// Clear the cache before each test to avoid interference
|
||||
Fibonacci.CACHE.clear();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFibMemo() {
|
||||
// Test memoization method
|
||||
assertEquals(0, Fibonacci.fibMemo(0));
|
||||
assertEquals(1, Fibonacci.fibMemo(1));
|
||||
assertEquals(1, Fibonacci.fibMemo(2));
|
||||
assertEquals(2, Fibonacci.fibMemo(3));
|
||||
assertEquals(3, Fibonacci.fibMemo(4));
|
||||
assertEquals(5, Fibonacci.fibMemo(5));
|
||||
assertEquals(8, Fibonacci.fibMemo(6));
|
||||
assertEquals(13, Fibonacci.fibMemo(7));
|
||||
assertEquals(21, Fibonacci.fibMemo(8));
|
||||
assertEquals(34, Fibonacci.fibMemo(9));
|
||||
assertEquals(55, Fibonacci.fibMemo(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFibBotUp() {
|
||||
// Test bottom-up method
|
||||
assertEquals(0, Fibonacci.fibBotUp(0));
|
||||
assertEquals(1, Fibonacci.fibBotUp(1));
|
||||
assertEquals(1, Fibonacci.fibBotUp(2));
|
||||
assertEquals(2, Fibonacci.fibBotUp(3));
|
||||
assertEquals(3, Fibonacci.fibBotUp(4));
|
||||
assertEquals(5, Fibonacci.fibBotUp(5));
|
||||
assertEquals(8, Fibonacci.fibBotUp(6));
|
||||
assertEquals(13, Fibonacci.fibBotUp(7));
|
||||
assertEquals(21, Fibonacci.fibBotUp(8));
|
||||
assertEquals(34, Fibonacci.fibBotUp(9));
|
||||
assertEquals(55, Fibonacci.fibBotUp(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFibOptimized() {
|
||||
// Test optimized Fibonacci method
|
||||
assertEquals(0, Fibonacci.fibOptimized(0));
|
||||
assertEquals(1, Fibonacci.fibOptimized(1));
|
||||
assertEquals(1, Fibonacci.fibOptimized(2));
|
||||
assertEquals(2, Fibonacci.fibOptimized(3));
|
||||
assertEquals(3, Fibonacci.fibOptimized(4));
|
||||
assertEquals(5, Fibonacci.fibOptimized(5));
|
||||
assertEquals(8, Fibonacci.fibOptimized(6));
|
||||
assertEquals(13, Fibonacci.fibOptimized(7));
|
||||
assertEquals(21, Fibonacci.fibOptimized(8));
|
||||
assertEquals(34, Fibonacci.fibOptimized(9));
|
||||
assertEquals(55, Fibonacci.fibOptimized(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testFibBinet() {
|
||||
// Test Binet's formula method
|
||||
assertEquals(0, Fibonacci.fibBinet(0));
|
||||
assertEquals(1, Fibonacci.fibBinet(1));
|
||||
assertEquals(1, Fibonacci.fibBinet(2));
|
||||
assertEquals(2, Fibonacci.fibBinet(3));
|
||||
assertEquals(3, Fibonacci.fibBinet(4));
|
||||
assertEquals(5, Fibonacci.fibBinet(5));
|
||||
assertEquals(8, Fibonacci.fibBinet(6));
|
||||
assertEquals(13, Fibonacci.fibBinet(7));
|
||||
assertEquals(21, Fibonacci.fibBinet(8));
|
||||
assertEquals(34, Fibonacci.fibBinet(9));
|
||||
assertEquals(55, Fibonacci.fibBinet(10));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNegativeInput() {
|
||||
// Test negative input; Fibonacci is not defined for negative numbers
|
||||
assertThrows(IllegalArgumentException.class, () -> { Fibonacci.fibMemo(-1); });
|
||||
assertThrows(IllegalArgumentException.class, () -> { Fibonacci.fibBotUp(-1); });
|
||||
assertThrows(IllegalArgumentException.class, () -> { Fibonacci.fibOptimized(-1); });
|
||||
assertThrows(IllegalArgumentException.class, () -> { Fibonacci.fibBinet(-1); });
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user