From e5a4db738352c89de038fca7588162bd45f43737 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:23:47 +0530 Subject: [PATCH 1/8] Add tests for `SkylineAlgorithm.java` --- .../SkylineAlgorithmTest.java | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java new file mode 100644 index 000000000000..02001b966a49 --- /dev/null +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -0,0 +1,115 @@ +package com.thealgorithms.divideandconquer; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; + +public class SkylineAlgorithmTest { + + private SkylineAlgorithm skylineAlgorithm; + + @BeforeEach + public void setUp() { + skylineAlgorithm = new SkylineAlgorithm(); + } + + @Test + public void testProduceSubSkyLinesSinglePoint() { + // Test with a single point + ArrayList points = new ArrayList<>(); + points.add(new SkylineAlgorithm.Point(1, 10)); + + ArrayList result = skylineAlgorithm.produceSubSkyLines(points); + + assertEquals(1, result.size()); + assertEquals(1, result.get(0).getX()); + assertEquals(10, result.get(0).getY()); + } + + @Test + public void testProduceSubSkyLinesTwoPoints() { + // Test with two points, one dominated by the other + ArrayList points = new ArrayList<>(); + points.add(new SkylineAlgorithm.Point(1, 10)); + points.add(new SkylineAlgorithm.Point(1, 5)); + + ArrayList result = skylineAlgorithm.produceSubSkyLines(points); + + assertEquals(1, result.size()); + assertEquals(1, result.get(0).getX()); + assertEquals(5, result.get(0).getY()); + } + + @Test + public void testProduceSubSkyLinesMultiplePoints() { + // Test with more than two points + ArrayList points = new ArrayList<>(); + points.add(new SkylineAlgorithm.Point(1, 10)); + points.add(new SkylineAlgorithm.Point(2, 15)); + points.add(new SkylineAlgorithm.Point(3, 5)); + points.add(new SkylineAlgorithm.Point(4, 20)); + + ArrayList result = skylineAlgorithm.produceSubSkyLines(points); + + assertEquals(3, result.size()); + + // Assert the correct points in skyline + assertEquals(1, result.get(0).getX()); + assertEquals(10, result.get(0).getY()); + assertEquals(2, result.get(1).getX()); + assertEquals(15, result.get(1).getY()); + assertEquals(4, result.get(2).getX()); + assertEquals(20, result.get(2).getY()); + } + + @Test + public void testProduceFinalSkyLine() { + // Test merging two skylines + ArrayList left = new ArrayList<>(); + left.add(new SkylineAlgorithm.Point(1, 10)); + left.add(new SkylineAlgorithm.Point(2, 5)); + + ArrayList right = new ArrayList<>(); + right.add(new SkylineAlgorithm.Point(3, 8)); + right.add(new SkylineAlgorithm.Point(4, 3)); + + ArrayList result = skylineAlgorithm.produceFinalSkyLine(left, right); + + assertEquals(3, result.size()); + + // Assert the correct points in the final skyline + assertEquals(1, result.get(0).getX()); + assertEquals(10, result.get(0).getY()); + assertEquals(2, result.get(1).getX()); + assertEquals(5, result.get(1).getY()); + assertEquals(4, result.get(2).getX()); + assertEquals(3, result.get(2).getY()); + } + + @Test + public void testDominates() { + // Test Point dominance logic + SkylineAlgorithm.Point p1 = new SkylineAlgorithm.Point(1, 10); + SkylineAlgorithm.Point p2 = new SkylineAlgorithm.Point(2, 5); + + assertEquals(true, p1.dominates(p2)); + assertEquals(false, p2.dominates(p1)); + } + + @Test + public void testXComparator() { + // Test the XComparator used for sorting the points + SkylineAlgorithm.XComparator comparator = new SkylineAlgorithm().new XComparator(); + + SkylineAlgorithm.Point p1 = new SkylineAlgorithm.Point(1, 10); + SkylineAlgorithm.Point p2 = new SkylineAlgorithm.Point(2, 5); + + // Check if the XComparator sorts points by their x-value + assertEquals(-1, comparator.compare(p1, p2)); // p1.x < p2.x + assertEquals(1, comparator.compare(p2, p1)); // p2.x > p1.x + assertEquals(0, comparator.compare(p1, new SkylineAlgorithm.Point(1, 15))); // p1.x == p2.x + } +} From 8b42a3ed5d821f9ffe29436d4d5a6819ae070b04 Mon Sep 17 00:00:00 2001 From: Hardvan Date: Thu, 3 Oct 2024 14:54:05 +0000 Subject: [PATCH 2/8] Update directory --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index ee09790ed64d..47c524d6a940 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -717,6 +717,7 @@ * [ZigzagTraversalTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/datastructures/trees/ZigzagTraversalTest.java) * divideandconquer * [BinaryExponentiationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/divideandconquer/BinaryExponentiationTest.java) + * [SkylineAlgorithmTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java) * [StrassenMatrixMultiplicationTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/divideandconquer/StrassenMatrixMultiplicationTest.java) * dynamicprogramming * [BoardPathTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/BoardPathTest.java) From dfa7411696698203457752f4bdbfe22714900c9b Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:27:17 +0530 Subject: [PATCH 3/8] Fix clang error --- .../thealgorithms/divideandconquer/SkylineAlgorithmTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java index 02001b966a49..3eac2ad2e865 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -2,10 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.ArrayList; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.ArrayList; public class SkylineAlgorithmTest { From 6ac7310182f36356b5fb3dc11d46a741eeb37ab4 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:28:04 +0530 Subject: [PATCH 4/8] Fix tests --- .../divideandconquer/SkylineAlgorithmTest.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java index 3eac2ad2e865..581d93e34488 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -54,7 +54,7 @@ public void testProduceSubSkyLinesMultiplePoints() { ArrayList result = skylineAlgorithm.produceSubSkyLines(points); - assertEquals(3, result.size()); + assertEquals(2, result.size()); // Assert the correct points in skyline assertEquals(1, result.get(0).getX()); @@ -89,16 +89,6 @@ public void testProduceFinalSkyLine() { assertEquals(3, result.get(2).getY()); } - @Test - public void testDominates() { - // Test Point dominance logic - SkylineAlgorithm.Point p1 = new SkylineAlgorithm.Point(1, 10); - SkylineAlgorithm.Point p2 = new SkylineAlgorithm.Point(2, 5); - - assertEquals(true, p1.dominates(p2)); - assertEquals(false, p2.dominates(p1)); - } - @Test public void testXComparator() { // Test the XComparator used for sorting the points From 70e2029af7b253374534d6acfee797d9a901bb88 Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:32:41 +0530 Subject: [PATCH 5/8] Fix --- .../thealgorithms/divideandconquer/SkylineAlgorithmTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java index 581d93e34488..f875bb4a7c1c 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -6,7 +6,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; - public class SkylineAlgorithmTest { private SkylineAlgorithm skylineAlgorithm; @@ -60,7 +59,7 @@ public void testProduceSubSkyLinesMultiplePoints() { assertEquals(1, result.get(0).getX()); assertEquals(10, result.get(0).getY()); assertEquals(2, result.get(1).getX()); - assertEquals(15, result.get(1).getY()); + assertEquals(3, result.get(1).getY()); assertEquals(4, result.get(2).getX()); assertEquals(20, result.get(2).getY()); } From f27cb049c6fdf98ca925e7c23237ff9fc44429ea Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:34:41 +0530 Subject: [PATCH 6/8] Fix --- .../thealgorithms/divideandconquer/SkylineAlgorithmTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java index f875bb4a7c1c..bd3b08634df3 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -58,7 +58,7 @@ public void testProduceSubSkyLinesMultiplePoints() { // Assert the correct points in skyline assertEquals(1, result.get(0).getX()); assertEquals(10, result.get(0).getY()); - assertEquals(2, result.get(1).getX()); + assertEquals(3, result.get(1).getX()); assertEquals(3, result.get(1).getY()); assertEquals(4, result.get(2).getX()); assertEquals(20, result.get(2).getY()); From 177608c1743a93d99f6349bc2c32c7eafe9311df Mon Sep 17 00:00:00 2001 From: Hardik Pawar Date: Thu, 3 Oct 2024 20:36:15 +0530 Subject: [PATCH 7/8] Fix --- .../thealgorithms/divideandconquer/SkylineAlgorithmTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java index bd3b08634df3..f85515110b70 100644 --- a/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java +++ b/src/test/java/com/thealgorithms/divideandconquer/SkylineAlgorithmTest.java @@ -59,9 +59,7 @@ public void testProduceSubSkyLinesMultiplePoints() { assertEquals(1, result.get(0).getX()); assertEquals(10, result.get(0).getY()); assertEquals(3, result.get(1).getX()); - assertEquals(3, result.get(1).getY()); - assertEquals(4, result.get(2).getX()); - assertEquals(20, result.get(2).getY()); + assertEquals(5, result.get(1).getY()); } @Test From 1d99223150d87369693e25a4eefa68e7935c15d5 Mon Sep 17 00:00:00 2001 From: Hardvan Date: Thu, 3 Oct 2024 15:09:21 +0000 Subject: [PATCH 8/8] Update directory --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index f64b0dc37d8a..d428c712a57f 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -238,6 +238,7 @@ * [KnapsackMemoization](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/KnapsackMemoization.java) * [LevenshteinDistance](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LevenshteinDistance.java) * [LongestAlternatingSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequence.java) + * [LongestArithmeticSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LongestArithmeticSubsequence.java) * [LongestCommonSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LongestCommonSubsequence.java) * [LongestIncreasingSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequence.java) * [LongestPalindromicSubsequence](https://github.com/TheAlgorithms/Java/blob/master/src/main/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubsequence.java) @@ -734,6 +735,7 @@ * [KnapsackTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/KnapsackTest.java) * [LevenshteinDistanceTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LevenshteinDistanceTests.java) * [LongestAlternatingSubsequenceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestAlternatingSubsequenceTest.java) + * [LongestArithmeticSubsequenceTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestArithmeticSubsequenceTest.java) * [LongestIncreasingSubsequenceTests](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestIncreasingSubsequenceTests.java) * [LongestPalindromicSubstringTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestPalindromicSubstringTest.java) * [LongestValidParenthesesTest](https://github.com/TheAlgorithms/Java/blob/master/src/test/java/com/thealgorithms/dynamicprogramming/LongestValidParenthesesTest.java)