1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.htmlunit.util.geometry;
16
17 import static org.junit.jupiter.api.Assertions.assertFalse;
18 import static org.junit.jupiter.api.Assertions.assertTrue;
19
20 import org.junit.jupiter.api.Test;
21
22
23
24
25
26
27
28
29 public class Polygon2DTest {
30
31
32
33
34 @Test
35 public void testSimplePolygon() {
36 final Polygon2D polygon =
37 new Polygon2D(1, 3)
38 .lineTo(2, 8)
39 .lineTo(5, 4)
40 .lineTo(5, 9)
41 .lineTo(7, 5)
42 .lineTo(6, 1)
43 .lineTo(3, 1);
44
45 assertTrue(polygon.contains(5.5, 7));
46 assertFalse(polygon.contains(4.5, 7));
47
48 assertTrue(polygon.contains(5, 9));
49 assertTrue(polygon.contains(2, 2));
50
51 assertFalse(polygon.contains(100, 200));
52 }
53
54
55
56
57 @Test
58 public void testPolygonFigure6() {
59
60 Polygon2D polygon =
61 new Polygon2D(1, 3)
62 .lineTo(9, 3)
63 .lineTo(9, 7)
64 .lineTo(7, 5)
65 .lineTo(5, 7)
66 .lineTo(3, 5)
67 .lineTo(1, 7);
68
69 assertTrue(polygon.contains(5, 5));
70
71
72 polygon = new Polygon2D(1, 3)
73 .lineTo(3, 5)
74 .lineTo(5, 3)
75 .lineTo(7, 5)
76 .lineTo(9, 3)
77 .lineTo(9, 7)
78 .lineTo(1, 7);
79
80 assertTrue(polygon.contains(5, 5));
81 }
82
83
84
85
86 @Test
87 public void testMapCoordinates1() {
88 final Polygon2D polygon =
89 new Polygon2D(42.499148, 27.485196)
90 .lineTo(42.498600, 27.480000)
91 .lineTo(42.503800, 27.474680)
92 .lineTo(42.510000, 27.468270)
93 .lineTo(42.510788, 27.466904)
94 .lineTo(42.512116, 27.465350)
95 .lineTo(42.512000, 27.467000)
96 .lineTo(42.513579, 27.471027)
97 .lineTo(42.512938, 27.472668)
98 .lineTo(42.511829, 27.474922)
99 .lineTo(42.507945, 27.480124)
100 .lineTo(42.509082, 27.482892)
101 .lineTo(42.536026, 27.490519)
102 .lineTo(42.534470, 27.499703)
103 .lineTo(42.499148, 27.485196);
104
105 assertTrue(polygon.contains(42.508956f, 27.483328f));
106 assertTrue(polygon.contains(42.505f, 27.48f));
107 }
108
109
110
111
112 @Test
113 public void testMapCoordinates2() {
114 final Polygon2D polygon =
115 new Polygon2D(40.481171, 6.4107070)
116 .lineTo(40.480248, 6.4101200)
117 .lineTo(40.480237, 6.4062790)
118 .lineTo(40.481161, 6.4062610);
119
120 assertTrue(polygon.contains(40.480890f, 6.4081030f));
121 }
122
123
124
125
126 @Test
127 public void testParallel() {
128 final Polygon2D polygon =
129 new Polygon2D(0, 0)
130 .lineTo(0, 1)
131 .lineTo(1, 2)
132 .lineTo(1, 99)
133 .lineTo(100, 0);
134
135 assertTrue(polygon.contains(3, 4));
136 assertTrue(polygon.contains(3, 4.1));
137 assertTrue(polygon.contains(3, 3.9));
138 }
139
140
141
142
143 @Test
144 public void testBorders() {
145
146
147
148
149 final Polygon2D polygon =
150 new Polygon2D(-1, -1)
151 .lineTo(-1, 1)
152 .lineTo(1, 1)
153 .lineTo(1, -1);
154
155 assertTrue(polygon.contains(0, 1));
156 assertTrue(polygon.contains(-1, 0));
157 }
158 }