mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-29 07:26:01 +08:00
Add unit tests for FibonacciNumberCheck (#4225)
This commit is contained in:

committed by
GitHub

parent
bc699b86e5
commit
8862a4dea5
@ -2,17 +2,10 @@ package com.thealgorithms.maths;
|
||||
|
||||
/**
|
||||
* Fibonacci: 0 1 1 2 3 5 8 13 21 ...
|
||||
* This code checks Fibonacci Numbers up to 45th number.
|
||||
* Other checks fail because of 'long'-type overflow.
|
||||
*/
|
||||
public class FibonacciNumber {
|
||||
|
||||
public static void main(String[] args) {
|
||||
assert isFibonacciNumber(1);
|
||||
assert isFibonacciNumber(2);
|
||||
assert isFibonacciNumber(21);
|
||||
assert !isFibonacciNumber(9);
|
||||
assert !isFibonacciNumber(10);
|
||||
}
|
||||
|
||||
public class FibonacciNumberCheck {
|
||||
/**
|
||||
* Check if a number is perfect square number
|
||||
*
|
||||
@ -20,8 +13,8 @@ public class FibonacciNumber {
|
||||
* @return <tt>true</tt> if {@code number} is a perfect square, otherwise
|
||||
* <tt>false</tt>
|
||||
*/
|
||||
public static boolean isPerfectSquare(int number) {
|
||||
int sqrt = (int) Math.sqrt(number);
|
||||
public static boolean isPerfectSquare(long number) {
|
||||
long sqrt = (long) Math.sqrt(number);
|
||||
return sqrt * sqrt == number;
|
||||
}
|
||||
|
||||
@ -34,9 +27,9 @@ public class FibonacciNumber {
|
||||
* <tt>false</tt>
|
||||
* @link https://en.wikipedia.org/wiki/Fibonacci_number#Identification
|
||||
*/
|
||||
public static boolean isFibonacciNumber(int number) {
|
||||
int value1 = 5 * number * number + 4;
|
||||
int value2 = 5 * number * number - 4;
|
||||
public static boolean isFibonacciNumber(long number) {
|
||||
long value1 = 5 * number * number + 4;
|
||||
long value2 = 5 * number * number - 4;
|
||||
return isPerfectSquare(value1) || isPerfectSquare(value2);
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
package com.thealgorithms.maths;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* Fibonacci Sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...
|
||||
*
|
||||
* @author Albina Gimaletdinova on 01/07/2023
|
||||
*/
|
||||
public class FibonacciNumberCheckTest {
|
||||
@Test
|
||||
public void testNumberIsFibonacciNumber() {
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(1));
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(2));
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(21));
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(6765)); // 20th number
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(832040)); // 30th number
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(102334155)); // 40th number
|
||||
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(701408733)); // 45th number
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNumberIsNotFibonacciNumber() {
|
||||
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(9));
|
||||
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(10));
|
||||
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(145));
|
||||
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(701408734));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user