Skip to content

Commit 8862a4d

Browse files
authored
Add unit tests for FibonacciNumberCheck (TheAlgorithms#4225)
1 parent bc699b8 commit 8862a4d

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

DIRECTORY.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@
272272
* [FFT](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FFT.java)
273273
* [FFTBluestein](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FFTBluestein.java)
274274
* [FibonacciJavaStreams](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java)
275-
* [FibonacciNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciNumber.java)
275+
* [FibonacciNumberCheck](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java)
276276
* [FindKthNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindKthNumber.java)
277277
* [FindMax](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindMax.java)
278278
* [FindMaxRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindMaxRecursion.java)
@@ -637,6 +637,7 @@
637637
* [FactorialTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FactorialTest.java)
638638
* [FastInverseSqrtTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java)
639639
* [FFTTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FFTTest.java)
640+
* [FibonacciNumberCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java)
640641
* [FindMaxTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FindMaxTest.java)
641642
* [FindMinTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FindMinTest.java)
642643
* [FrizzyNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FrizzyNumberTest.java)

src/main/java/com/thealgorithms/maths/FibonacciNumber.java renamed to src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,19 @@
22

33
/**
44
* Fibonacci: 0 1 1 2 3 5 8 13 21 ...
5+
* This code checks Fibonacci Numbers up to 45th number.
6+
* Other checks fail because of 'long'-type overflow.
57
*/
6-
public class FibonacciNumber {
7-
8-
public static void main(String[] args) {
9-
assert isFibonacciNumber(1);
10-
assert isFibonacciNumber(2);
11-
assert isFibonacciNumber(21);
12-
assert !isFibonacciNumber(9);
13-
assert !isFibonacciNumber(10);
14-
}
15-
8+
public class FibonacciNumberCheck {
169
/**
1710
* Check if a number is perfect square number
1811
*
1912
* @param number the number to be checked
2013
* @return <tt>true</tt> if {@code number} is a perfect square, otherwise
2114
* <tt>false</tt>
2215
*/
23-
public static boolean isPerfectSquare(int number) {
24-
int sqrt = (int) Math.sqrt(number);
16+
public static boolean isPerfectSquare(long number) {
17+
long sqrt = (long) Math.sqrt(number);
2518
return sqrt * sqrt == number;
2619
}
2720

@@ -34,9 +27,9 @@ public static boolean isPerfectSquare(int number) {
3427
* <tt>false</tt>
3528
* @link https://en.wikipedia.org/wiki/Fibonacci_number#Identification
3629
*/
37-
public static boolean isFibonacciNumber(int number) {
38-
int value1 = 5 * number * number + 4;
39-
int value2 = 5 * number * number - 4;
30+
public static boolean isFibonacciNumber(long number) {
31+
long value1 = 5 * number * number + 4;
32+
long value2 = 5 * number * number - 4;
4033
return isPerfectSquare(value1) || isPerfectSquare(value2);
4134
}
4235
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.thealgorithms.maths;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
6+
/**
7+
* Fibonacci Sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144...
8+
*
9+
* @author Albina Gimaletdinova on 01/07/2023
10+
*/
11+
public class FibonacciNumberCheckTest {
12+
@Test
13+
public void testNumberIsFibonacciNumber() {
14+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(1));
15+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(2));
16+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(21));
17+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(6765)); // 20th number
18+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(832040)); // 30th number
19+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(102334155)); // 40th number
20+
Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(701408733)); // 45th number
21+
}
22+
23+
@Test
24+
public void testNumberIsNotFibonacciNumber() {
25+
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(9));
26+
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(10));
27+
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(145));
28+
Assertions.assertFalse(FibonacciNumberCheck.isFibonacciNumber(701408734));
29+
}
30+
}

0 commit comments

Comments
 (0)