Skip to content

Commit beca5b1

Browse files
committed
Readded
1 parent e7659fd commit beca5b1

File tree

1 file changed

+347
-0
lines changed

1 file changed

+347
-0
lines changed
Lines changed: 347 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,347 @@
1+
package mesh.creator.special.test;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.assertNotNull;
5+
import static org.junit.jupiter.api.Assertions.assertTrue;
6+
7+
import org.junit.Test;
8+
9+
import math.Mathf;
10+
import math.Vector3f;
11+
import mesh.Face3D;
12+
import mesh.Mesh3D;
13+
import mesh.creator.IMeshCreator;
14+
import mesh.creator.primitives.CircleCreator;
15+
import mesh.creator.special.GemCreator;
16+
import mesh.selection.FaceSelection;
17+
import util.MeshTestUtil;
18+
19+
public class GemTest {
20+
21+
@Test
22+
public void implementsCreatorInterface() {
23+
GemCreator creator = new GemCreator();
24+
assertTrue(creator instanceof IMeshCreator);
25+
}
26+
27+
@Test
28+
public void createdMeshIsNotNullByDefault() {
29+
GemCreator creator = new GemCreator();
30+
assertNotNull(creator.create());
31+
}
32+
33+
@Test
34+
public void getSegmentsReturnsDefaultValue() {
35+
int expected = 8;
36+
GemCreator creator = new GemCreator();
37+
assertEquals(expected, creator.getSegments());
38+
}
39+
40+
@Test
41+
public void getRadiusReturnsDefaultValue() {
42+
float expected = 1;
43+
GemCreator creator = new GemCreator();
44+
assertEquals(expected, creator.getPavillionRadius(), 0);
45+
}
46+
47+
@Test
48+
public void getTableRadiusReturnsDefaultValue() {
49+
float expected = 0.6f;
50+
GemCreator creator = new GemCreator();
51+
assertEquals(expected, creator.getTableRadius(), 0);
52+
}
53+
54+
@Test
55+
public void getTableHeightReturnsDefaultValue() {
56+
float expected = 0.35f;
57+
GemCreator creator = new GemCreator();
58+
assertEquals(expected, creator.getTableHeight(), 0);
59+
}
60+
61+
@Test
62+
public void getPavillionHeightReturnsDefaultValue() {
63+
float expected = 0.8f;
64+
GemCreator creator = new GemCreator();
65+
assertEquals(expected, creator.getPavillionHeight(), 0);
66+
}
67+
68+
@Test
69+
public void getSetSegments() {
70+
int expected = 76;
71+
GemCreator creator = new GemCreator();
72+
creator.setSegments(expected);
73+
assertEquals(expected, creator.getSegments());
74+
}
75+
76+
@Test
77+
public void getSetRadius() {
78+
float expected = 0.8253f;
79+
GemCreator creator = new GemCreator();
80+
creator.setPavillionRadius(expected);
81+
assertEquals(expected, creator.getPavillionRadius(), 0);
82+
}
83+
84+
@Test
85+
public void getSetTableRadius() {
86+
float expected = 542.21f;
87+
GemCreator creator = new GemCreator();
88+
creator.setTableRadius(expected);
89+
assertEquals(expected, creator.getTableRadius(), 0);
90+
}
91+
92+
@Test
93+
public void getSetTableHeight() {
94+
float expected = 762.1234f;
95+
GemCreator creator = new GemCreator();
96+
creator.setTableHeight(expected);
97+
assertEquals(expected, creator.getTableHeight(), 0);
98+
}
99+
100+
@Test
101+
public void getSetPavillionHeight() {
102+
float expected = 62.1209f;
103+
GemCreator creator = new GemCreator();
104+
creator.setPavillionHeight(expected);
105+
assertEquals(expected, creator.getPavillionHeight(), 0);
106+
}
107+
108+
@Test
109+
public void createdMeshHasFourtyEightFacesByDefault() {
110+
int expected = 48;
111+
Mesh3D gem = new GemCreator().create();
112+
assertEquals(expected, gem.getFaceCount());
113+
}
114+
115+
@Test
116+
public void createdMeshThirtyFourVerticesByDefault() {
117+
int expected = 34;
118+
Mesh3D gem = new GemCreator().create();
119+
assertEquals(expected, gem.getVertexCount());
120+
}
121+
122+
@Test
123+
public void createdMeshHasThirtyTwoTriangularFaces() {
124+
Mesh3D gem = new GemCreator().create();
125+
FaceSelection selection = new FaceSelection(gem);
126+
selection.selectTriangles();
127+
assertEquals(32, selection.size());
128+
}
129+
130+
@Test
131+
public void createdMeshHasSixteenQuadFaces() {
132+
Mesh3D gem = new GemCreator().create();
133+
FaceSelection selection = new FaceSelection(gem);
134+
selection.selectQuads();
135+
assertEquals(16, selection.size());
136+
}
137+
138+
@Test
139+
public void trianglesCountDependsOnSegments() {
140+
int expected = 44;
141+
GemCreator creator = new GemCreator();
142+
creator.setSegments(11);
143+
Mesh3D gem = creator.create();
144+
FaceSelection selection = new FaceSelection(gem);
145+
selection.selectTriangles();
146+
assertEquals(expected, selection.size());
147+
}
148+
149+
@Test
150+
public void quadCountDependsOnSegments() {
151+
int expected = 54;
152+
GemCreator creator = new GemCreator();
153+
creator.setSegments(27);
154+
Mesh3D gem = creator.create();
155+
FaceSelection selection = new FaceSelection(gem);
156+
selection.selectQuads();
157+
assertEquals(expected, selection.size());
158+
}
159+
160+
@Test
161+
public void createdMeshContainsCenterCircleVertices() {
162+
CircleCreator circleCreator = new CircleCreator();
163+
circleCreator.setRadius(1);
164+
circleCreator.setVertices(8);
165+
Mesh3D circle = circleCreator.create();
166+
circle.rotateY(-Mathf.TWO_PI / 8.0f);
167+
Mesh3D gem = new GemCreator().create();
168+
for (Vector3f v : circle.vertices) {
169+
assertTrue(gem.vertices.contains(v));
170+
}
171+
}
172+
173+
@Test
174+
public void createdMeshContainsTableCircleVertices() {
175+
CircleCreator circleCreator = new CircleCreator();
176+
circleCreator.setRadius(0.6f);
177+
circleCreator.setVertices(8);
178+
circleCreator.setCenterY(-0.35f);
179+
Mesh3D circle = circleCreator.create();
180+
Mesh3D gem = new GemCreator().create();
181+
for (Vector3f v : circle.vertices) {
182+
assertTrue(gem.vertices.contains(v));
183+
}
184+
}
185+
186+
@Test
187+
public void createdMeshContainsPavillionVertex() {
188+
float pavillionHeight = 0.8f;
189+
Vector3f v = new Vector3f(0, pavillionHeight, 0);
190+
Mesh3D gem = new GemCreator().create();
191+
assertTrue(gem.vertices.contains(v));
192+
}
193+
194+
@Test
195+
public void createdMeshContainsTableVertex() {
196+
float tableHeight = 0.35f;
197+
Vector3f v = new Vector3f(0, -tableHeight, 0);
198+
Mesh3D gem = new GemCreator().create();
199+
assertTrue(gem.vertices.contains(v));
200+
}
201+
202+
@Test
203+
public void createdMeshContainsVerticesAtTableHeight() {
204+
int segments = 26;
205+
float tableRadius = 0.22f;
206+
float tableHeight = 12.2114f;
207+
208+
GemCreator creator = new GemCreator();
209+
creator.setTableHeight(tableHeight);
210+
creator.setSegments(segments);
211+
creator.setTableRadius(tableRadius);
212+
Mesh3D gem = creator.create();
213+
214+
CircleCreator circleCreator = new CircleCreator();
215+
circleCreator.setRadius(tableRadius);
216+
circleCreator.setCenterY(-tableHeight);
217+
circleCreator.setVertices(segments);
218+
219+
Mesh3D circle = circleCreator.create();
220+
221+
for (Vector3f v : circle.vertices) {
222+
assertTrue(gem.vertices.contains(v));
223+
}
224+
}
225+
226+
@Test
227+
public void createdMeshContainsVerticesAtCenterHeight() {
228+
int segments = 56;
229+
float radius = 2.34f;
230+
GemCreator creator = new GemCreator();
231+
creator.setSegments(segments);
232+
creator.setPavillionRadius(radius);
233+
Mesh3D gem = creator.create();
234+
CircleCreator circleCreator = new CircleCreator();
235+
circleCreator.setRadius(radius);
236+
circleCreator.setVertices(segments);
237+
Mesh3D circle = circleCreator.create();
238+
circle.rotateY(-Mathf.TWO_PI / segments);
239+
for (Vector3f v : circle.vertices) {
240+
assertTrue(gem.vertices.contains(v));
241+
}
242+
}
243+
244+
@Test
245+
public void createdMeshContainsTableMidVertices() {
246+
float gemCenterRadius = 1;
247+
float tableRadius = 0.6f;
248+
int segments = 8;
249+
float angleStep = Mathf.TWO_PI / segments;
250+
float offset = angleStep / 2.0f;
251+
float tableHeight = 0.35f;
252+
float radius = ((gemCenterRadius + tableRadius) / 2.0f)
253+
/ Mathf.cos(offset);
254+
255+
CircleCreator circleCreator = new CircleCreator();
256+
circleCreator.setCenterY(-tableHeight / 2.0f);
257+
circleCreator.setRadius(radius);
258+
circleCreator.setVertices(8);
259+
Mesh3D circle = circleCreator.create();
260+
circle.rotateY(-offset);
261+
262+
Mesh3D gem = new GemCreator().create();
263+
264+
for (Vector3f v : circle.vertices) {
265+
assertTrue(gem.vertices.contains(v));
266+
}
267+
}
268+
269+
@Test
270+
public void createdMeshContainsTableMidVerticesWithParameters() {
271+
float gemCenterRadius = 65.45f;
272+
float tableRadius = 0.232f;
273+
int segments = 11;
274+
float angleStep = Mathf.TWO_PI / segments;
275+
float offset = -angleStep / 2.0f;
276+
float tableHeight = 0.2412f;
277+
float radius = ((gemCenterRadius + tableRadius) / 2.0f)
278+
/ Mathf.cos(offset);
279+
280+
CircleCreator circleCreator = new CircleCreator();
281+
circleCreator.setCenterY(-tableHeight / 2.0f);
282+
circleCreator.setRadius(radius);
283+
circleCreator.setVertices(segments);
284+
Mesh3D circle = circleCreator.create();
285+
circle.rotateY(offset);
286+
287+
GemCreator creator = new GemCreator();
288+
creator.setPavillionRadius(gemCenterRadius);
289+
creator.setTableRadius(tableRadius);
290+
creator.setSegments(segments);
291+
creator.setTableHeight(tableHeight);
292+
Mesh3D gem = creator.create();
293+
294+
for (Vector3f v : circle.vertices) {
295+
assertTrue(gem.vertices.contains(v));
296+
}
297+
}
298+
299+
@Test
300+
public void hasEightTopFaces() {
301+
GemCreator creator = new GemCreator();
302+
Mesh3D gem = creator.create();
303+
FaceSelection selection = new FaceSelection(gem);
304+
selection.selectSimilarNormal(new Vector3f(0, -1, 0), 0.00001f);
305+
assertEquals(8, selection.size());
306+
}
307+
308+
@Test
309+
public void hasEightTriangularTopFaces() {
310+
GemCreator creator = new GemCreator();
311+
Mesh3D gem = creator.create();
312+
FaceSelection selection = new FaceSelection(gem);
313+
selection.selectSimilarNormal(new Vector3f(0, -1, 0), 0.00001f);
314+
for (Face3D face : selection.getFaces()) {
315+
assertEquals(3, face.indices.length);
316+
}
317+
}
318+
319+
@Test
320+
public void createdMeshIsManifold() {
321+
GemCreator creator = new GemCreator();
322+
Mesh3D gem = creator.create();
323+
assertTrue(MeshTestUtil.isManifold(gem));
324+
}
325+
326+
@Test
327+
public void createdMeshHasNoLooseVertices() {
328+
GemCreator creator = new GemCreator();
329+
Mesh3D gem = creator.create();
330+
assertTrue(MeshTestUtil.meshHasNoLooseVertices(gem));
331+
}
332+
333+
@Test
334+
public void createdMeshHasNoDuplicatedFaces() {
335+
GemCreator creator = new GemCreator();
336+
Mesh3D gem = creator.create();
337+
assertTrue(MeshTestUtil.meshHasNoDuplicatedFaces(gem));
338+
}
339+
340+
@Test
341+
public void testNormalsPointOutwards() {
342+
GemCreator creator = new GemCreator();
343+
Mesh3D gem = creator.create();
344+
assertTrue(MeshTestUtil.normalsPointOutwards(gem));
345+
}
346+
347+
}

0 commit comments

Comments
 (0)