From 7779c18ef612f50b8389382e9e43ff7e159dc21e Mon Sep 17 00:00:00 2001 From: Volodymyr Labliuk <50242030+n1ceFella@users.noreply.github.com> Date: Sat, 8 Apr 2023 12:56:07 -0400 Subject: [PATCH] Add More Tests (#4148) --- .../thealgorithms/maths/LeonardoNumber.java | 17 +++++---- .../com/thealgorithms/maths/LucasSeries.java | 16 ++------- .../java/com/thealgorithms/maths/Median.java | 11 +----- .../maths/LeonardoNumberTest.java | 28 +++++++++++++++ .../thealgorithms/maths/LucasSeriesTest.java | 27 ++++++++++++++ .../com/thealgorithms/maths/MedianTest.java | 36 +++++++++++++++++++ 6 files changed, 105 insertions(+), 30 deletions(-) create mode 100644 src/test/java/com/thealgorithms/maths/LeonardoNumberTest.java create mode 100644 src/test/java/com/thealgorithms/maths/LucasSeriesTest.java create mode 100644 src/test/java/com/thealgorithms/maths/MedianTest.java diff --git a/src/main/java/com/thealgorithms/maths/LeonardoNumber.java b/src/main/java/com/thealgorithms/maths/LeonardoNumber.java index 8af36e803..7b9620a46 100644 --- a/src/main/java/com/thealgorithms/maths/LeonardoNumber.java +++ b/src/main/java/com/thealgorithms/maths/LeonardoNumber.java @@ -1,20 +1,23 @@ package com.thealgorithms.maths; + /** + * https://en.wikipedia.org/wiki/Leonardo_number + */ public class LeonardoNumber { + /** + * Calculate nth Leonardo Number (1, 1, 3, 5, 9, 15, 25, 41, 67, 109, 177, ...) + * + * @param n the index of Leonardo Number to calculate + * @return nth number of Leonardo sequences + */ public static int leonardoNumber(int n) { if (n < 0) { - return 0; + throw new ArithmeticException(); } if (n == 0 || n == 1) { return 1; } return (leonardoNumber(n - 1) + leonardoNumber(n - 2) + 1); } - - public static void main(String args[]) { - for (int i = 0; i < 20; i++) { - System.out.print(leonardoNumber(i) + " "); - } - } } diff --git a/src/main/java/com/thealgorithms/maths/LucasSeries.java b/src/main/java/com/thealgorithms/maths/LucasSeries.java index e1d9c3361..59c9a9f3f 100644 --- a/src/main/java/com/thealgorithms/maths/LucasSeries.java +++ b/src/main/java/com/thealgorithms/maths/LucasSeries.java @@ -5,22 +5,12 @@ package com.thealgorithms.maths; */ public class LucasSeries { - public static void main(String[] args) { - assert lucasSeries(1) == 2 && lucasSeriesIteration(1) == 2; - assert lucasSeries(2) == 1 && lucasSeriesIteration(2) == 1; - assert lucasSeries(3) == 3 && lucasSeriesIteration(3) == 3; - assert lucasSeries(4) == 4 && lucasSeriesIteration(4) == 4; - assert lucasSeries(5) == 7 && lucasSeriesIteration(5) == 7; - assert lucasSeries(6) == 11 && lucasSeriesIteration(6) == 11; - assert lucasSeries(11) == 123 && lucasSeriesIteration(11) == 123; - } - /** - * Calculate nth number of lucas series(2, 1, 3, 4, 7, 11, 18, 29, 47, 76, + * Calculate nth number of Lucas Series(2, 1, 3, 4, 7, 11, 18, 29, 47, 76, * 123, ....) using recursion * * @param n nth - * @return nth number of lucas series + * @return nth number of Lucas Series */ public static int lucasSeries(int n) { return n == 1 @@ -29,7 +19,7 @@ public class LucasSeries { } /** - * Calculate nth number of lucas series(2, 1, 3, 4, 7, 11, 18, 29, 47, 76, + * Calculate nth number of Lucas Series(2, 1, 3, 4, 7, 11, 18, 29, 47, 76, * 123, ....) using iteration * * @param n nth diff --git a/src/main/java/com/thealgorithms/maths/Median.java b/src/main/java/com/thealgorithms/maths/Median.java index 3bc8bae26..44f94ad6b 100644 --- a/src/main/java/com/thealgorithms/maths/Median.java +++ b/src/main/java/com/thealgorithms/maths/Median.java @@ -7,18 +7,9 @@ import java.util.Arrays; */ public class Median { - public static void main(String[] args) { - assert median(new int[] { 0 }) == 0; - assert median(new int[] { 1, 2 }) == 1.5; - assert median(new int[] { 4, 1, 3, 2 }) == 2.5; - assert median(new int[] { 1, 3, 3, 6, 7, 8, 9 }) == 6; - assert median(new int[] { 1, 2, 3, 4, 5, 6, 8, 9 }) == 4.5; - } - /** * Calculate average median - * - * @param values number series + * @param values sorted numbers to find median of * @return median of given {@code values} */ public static double median(int[] values) { diff --git a/src/test/java/com/thealgorithms/maths/LeonardoNumberTest.java b/src/test/java/com/thealgorithms/maths/LeonardoNumberTest.java new file mode 100644 index 000000000..7af452e1b --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/LeonardoNumberTest.java @@ -0,0 +1,28 @@ +package com.thealgorithms.maths; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class LeonardoNumberTest { + @Test + void leonardoNumberNegative() { + assertThrows(ArithmeticException.class, ()-> LeonardoNumber.leonardoNumber(-1)); + } + @Test + void leonardoNumberZero() { + assertEquals(1, LeonardoNumber.leonardoNumber(0)); + } + @Test + void leonardoNumberOne() { + assertEquals(1, LeonardoNumber.leonardoNumber(1)); + } + @Test + void leonardoNumberFive() { + assertEquals(15, LeonardoNumber.leonardoNumber(5)); + } + @Test + void leonardoNumberTwenty() { + assertEquals(21891 , LeonardoNumber.leonardoNumber(20)); + } +} diff --git a/src/test/java/com/thealgorithms/maths/LucasSeriesTest.java b/src/test/java/com/thealgorithms/maths/LucasSeriesTest.java new file mode 100644 index 000000000..e5ac62240 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/LucasSeriesTest.java @@ -0,0 +1,27 @@ +package com.thealgorithms.maths; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class LucasSeriesTest { + @Test + void lucasSeriesTwo() { + assertEquals(2, LucasSeries.lucasSeries(1)); + assertEquals(2, LucasSeries.lucasSeriesIteration(1)); + } + @Test + void lucasSeriesOne() { + assertEquals(1, LucasSeries.lucasSeries(2)); + assertEquals(1, LucasSeries.lucasSeriesIteration(2)); + } + @Test + void lucasSeriesSeven() { + assertEquals(7, LucasSeries.lucasSeries(5)); + assertEquals(7, LucasSeries.lucasSeriesIteration(5)); + } + @Test + void lucasSeriesEleven() { + assertEquals(123, LucasSeries.lucasSeries(11)); + assertEquals(123, LucasSeries.lucasSeriesIteration(11)); + } +} diff --git a/src/test/java/com/thealgorithms/maths/MedianTest.java b/src/test/java/com/thealgorithms/maths/MedianTest.java new file mode 100644 index 000000000..f3825b7f1 --- /dev/null +++ b/src/test/java/com/thealgorithms/maths/MedianTest.java @@ -0,0 +1,36 @@ +package com.thealgorithms.maths; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class MedianTest { + @Test + void medianSingleValue() { + int[] arr = {0}; + assertEquals(0, Median.median(arr)); + } + + @Test + void medianTwoValues() { + int[] arr = {1, 2}; + assertEquals(1.5, Median.median(arr)); + } + + @Test + void medianThreeValues() { + int[] arr = {1, 2, 3}; + assertEquals(2, Median.median(arr)); + } + + @Test + void medianDecimalValueReturn() { + int[] arr = {1, 2, 3, 4, 5, 6, 8, 9}; + assertEquals(4.5, Median.median(arr)); + } + + @Test + void medianNegativeValues() { + int[] arr = {-27, -16, -7, -4, -2, -1}; + assertEquals(-5.5, Median.median(arr)); + } +}