From eef8573a2adf3fb6068830325eafe553b123f322 Mon Sep 17 00:00:00 2001 From: Albina Gimaletdinova Date: Sat, 1 Jul 2023 15:21:54 +0300 Subject: [PATCH 1/3] Added unit tests to FibonacciNumberCheck --- ...iNumber.java => FibonacciNumberCheck.java} | 23 +++++--------- .../maths/FibonacciNumberCheckTest.java | 30 +++++++++++++++++++ 2 files changed, 38 insertions(+), 15 deletions(-) rename src/main/java/com/thealgorithms/maths/{FibonacciNumber.java => FibonacciNumberCheck.java} (60%) create mode 100644 src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java diff --git a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java b/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java similarity index 60% rename from src/main/java/com/thealgorithms/maths/FibonacciNumber.java rename to src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java index c39f2a8bcad9..937786546fc3 100644 --- a/src/main/java/com/thealgorithms/maths/FibonacciNumber.java +++ b/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java @@ -2,17 +2,10 @@ /** * 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 static void main(String[] args) { * @return true if {@code number} is a perfect square, otherwise * false */ - 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 static boolean isPerfectSquare(int number) { * false * @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); } } diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java new file mode 100644 index 000000000000..ff89e40d7787 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java @@ -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)); + } +} From 017385bd4b19bf9d5affa1505d0006a6552278a4 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sat, 1 Jul 2023 12:22:12 +0000 Subject: [PATCH 2/3] Update directory --- DIRECTORY.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DIRECTORY.md b/DIRECTORY.md index 4e20adc8b452..782bb74a06cf 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -272,7 +272,7 @@ * [FFT](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FFT.java) * [FFTBluestein](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FFTBluestein.java) * [FibonacciJavaStreams](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciJavaStreams.java) - * [FibonacciNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciNumber.java) + * [FibonacciNumberCheck](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FibonacciNumberCheck.java) * [FindKthNumber](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindKthNumber.java) * [FindMax](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindMax.java) * [FindMaxRecursion](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/maths/FindMaxRecursion.java) @@ -637,6 +637,7 @@ * [FactorialTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FactorialTest.java) * [FastInverseSqrtTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FastInverseSqrtTests.java) * [FFTTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FFTTest.java) + * [FibonacciNumberCheckTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java) * [FindMaxTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FindMaxTest.java) * [FindMinTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FindMinTest.java) * [FrizzyNumberTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/maths/FrizzyNumberTest.java) From 2529bfad1cff89fe01788a0a8f4a59445bf1053c Mon Sep 17 00:00:00 2001 From: Albina Gimaletdinova Date: Sat, 1 Jul 2023 15:26:40 +0300 Subject: [PATCH 3/3] Fix style --- .../com/thealgorithms/maths/FibonacciNumberCheckTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java b/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java index ff89e40d7787..6ba81639a11a 100644 --- a/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java +++ b/src/test/java/com/thealgorithms/maths/FibonacciNumberCheckTest.java @@ -14,8 +14,8 @@ 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(6765)); // 20th number + Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(832040)); // 30th number Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(102334155)); // 40th number Assertions.assertTrue(FibonacciNumberCheck.isFibonacciNumber(701408733)); // 45th number }