Skip to content

Commit 0b40a35

Browse files
committed
Bug-fix : fixed the loss of order due to usage of Hashset in ConvexHull code
1 parent 5c18b74 commit 0b40a35

File tree

1 file changed

+16
-34
lines changed

1 file changed

+16
-34
lines changed
Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,28 @@
11
package com.thealgorithms.geometry;
2-
3-
import static org.junit.jupiter.api.Assertions.assertEquals;
4-
2+
import org.junit.jupiter.api.Test;
53
import java.util.Arrays;
4+
import java.util.HashSet;
65
import java.util.List;
7-
import org.junit.jupiter.api.Test;
6+
import java.util.Set;
7+
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
89

910
public class ConvexHullTest {
1011

1112
@Test
12-
void testConvexHullRecursive() {
13-
List<Point> points = Arrays.asList(new Point(0, 0), new Point(1, 0), new Point(10, 1));
14-
List<Point> expected = Arrays.asList(new Point(0, 0), new Point(1, 0), new Point(10, 1));
15-
assertEquals(expected, ConvexHull.convexHullRecursive(points));
16-
17-
points = Arrays.asList(new Point(0, 0), new Point(1, 0), new Point(10, 0));
18-
expected = Arrays.asList(new Point(0, 0), new Point(10, 0));
19-
assertEquals(expected, ConvexHull.convexHullRecursive(points));
20-
21-
points = Arrays.asList(
22-
new Point(0, 3),
23-
new Point(2, 2),
24-
new Point(1, 1),
25-
new Point(2, 1),
26-
new Point(3, 0),
27-
new Point(0, 0),
28-
new Point(3, 3),
29-
new Point(2, -1),
30-
new Point(2, -4),
31-
new Point(1, -3)
13+
public void testConvexHull() {
14+
List<Point> points =
15+
Arrays.asList(new Point(0, 3), new Point(2, 2), new Point(1, 1), new Point(2, 1), new Point(3, 0),
16+
new Point(0, 0), new Point(3, 3), new Point(2, -1), new Point(2, -4), new Point(1, -3));
17+
18+
Set<Point> expected = new HashSet<>(
19+
Arrays.asList(new Point(2, -4), new Point(1, -3), new Point(0, 0), new Point(3, 0), new Point(0, 3),
20+
new Point(3, 3))
3221
);
3322

34-
// Updated expected hull to match the output of monotone chain
35-
List<Point> expectedHull = Arrays.asList(
36-
new Point(2, -4),
37-
new Point(3, 0),
38-
new Point(3, 3),
39-
new Point(0, 3),
40-
new Point(0, 0),
41-
new Point(1, -3)
42-
);
23+
List<Point> hull = ConvexHull.convexHullRecursive(points);
24+
Set<Point> actual = new HashSet<>(hull);
4325

44-
assertEquals(expectedHull, ConvexHull.convexHullRecursive(points));
26+
assertEquals(expected, actual);
4527
}
4628
}

0 commit comments

Comments
 (0)