summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpacien2017-12-23 21:52:22 +0100
committerpacien2017-12-23 21:52:22 +0100
commit39cbe5d0d7db78f0d2808abea5562db84d03a07e (patch)
treef8a70c5f4e36b334a4e0bff27f11f1b046b242fd
parent6802eedbdde0e5a42bb7b6fc251b3123c295666f (diff)
downloadmorpher-39cbe5d0d7db78f0d2808abea5562db84d03a07e.tar.gz
Refactor quadrilateral tests
Signed-off-by: pacien <pacien.trangirard@pacien.net>
-rw-r--r--test/morpher/quadrilateral.c47
1 files changed, 19 insertions, 28 deletions
diff --git a/test/morpher/quadrilateral.c b/test/morpher/quadrilateral.c
index 0ab0e4b..963d1d6 100644
--- a/test/morpher/quadrilateral.c
+++ b/test/morpher/quadrilateral.c
@@ -20,17 +20,19 @@ static inline bool vertices_equals(CartesianMapping maps[],
20 * --- 20 * ---
21 */ 21 */
22static void test_quadrilateral_flip_diagonal() { 22static void test_quadrilateral_flip_diagonal() {
23 TriangleMap *t = trianglemap_create(m(50, 0), m(0, 100), m(100, 100)); 23 CartesianMapping A = m(50, 0), B = m(0, 100), C = m(100, 100), D = m(0, 200), E = m(100, 200);
24 TriangleMap *r = trianglemap_create(m(100, 100), m(0, 100), m(100, 200)); 24
25 TriangleMap *l = trianglemap_create(m(0, 100), m(0, 200), m(100, 200)); 25 TriangleMap *t = trianglemap_create(A, B, C);
26 TriangleMap *r = trianglemap_create(C, B, E);
27 TriangleMap *l = trianglemap_create(B, D, E);
26 trianglemap_set_neighbors(t, NULL, r, NULL, r); 28 trianglemap_set_neighbors(t, NULL, r, NULL, r);
27 trianglemap_set_neighbors(r, t, l, NULL, l); 29 trianglemap_set_neighbors(r, t, l, NULL, l);
28 trianglemap_set_neighbors(l, NULL, NULL, r, NULL); 30 trianglemap_set_neighbors(l, NULL, NULL, r, NULL);
29 quadrilateral_flip_diagonal(r, l); 31 quadrilateral_flip_diagonal(r, l);
30 32
31 assert(vertices_equals(t->vertices, m(50, 0), m(0, 100), m(100, 100))); 33 assert(vertices_equals(t->vertices, A, B, C));
32 assert(vertices_equals(r->vertices, m(0, 100), m(0, 200), m(100, 100))); 34 assert(vertices_equals(r->vertices, B, D, C));
33 assert(vertices_equals(l->vertices, m(0, 200), m(100, 200), m(100, 100))); 35 assert(vertices_equals(l->vertices, D, E, C));
34 assert(neighbors_equals(t->neighbors, NULL, r, NULL)); 36 assert(neighbors_equals(t->neighbors, NULL, r, NULL));
35 assert(neighbors_equals(r->neighbors, NULL, l, t)); 37 assert(neighbors_equals(r->neighbors, NULL, l, t));
36 assert(neighbors_equals(l->neighbors, NULL, NULL, r)); 38 assert(neighbors_equals(l->neighbors, NULL, NULL, r));
@@ -38,34 +40,23 @@ static void test_quadrilateral_flip_diagonal() {
38 while (t != NULL) t = trianglemap_destroy(t); 40 while (t != NULL) t = trianglemap_destroy(t);
39} 41}
40 42
41static void test_quadrilateral_is_delaunay() { 43static void test_quadrilateral_is_delaunay(CartesianMapping A, CartesianMapping B, CartesianMapping C,
42 { 44 CartesianMapping D, bool expected) {
43 TriangleMap *l = trianglemap_create(m(0, 0), m(0, 3), m(3, 3));
44 TriangleMap *r = trianglemap_create(m(0, 0), m(3, 3), m(2, 1));
45 trianglemap_set_neighbors(l, NULL, NULL, r, r);
46 trianglemap_set_neighbors(r, l, NULL, NULL, NULL);
47
48 assert(!quadrilateral_is_delaunay(l, r));
49
50 trianglemap_destroy(l);
51 trianglemap_destroy(r);
52 }
53 45
54 { 46 TriangleMap *l = trianglemap_create(A, B, C);
55 TriangleMap *l = trianglemap_create(m(0, 0), m(0, 3), m(3, 3)); 47 TriangleMap *r = trianglemap_create(A, C, D);
56 TriangleMap *r = trianglemap_create(m(0, 0), m(3, 3), m(4, -1)); 48 trianglemap_set_neighbors(l, NULL, NULL, r, r);
57 trianglemap_set_neighbors(l, NULL, NULL, r, r); 49 trianglemap_set_neighbors(r, l, NULL, NULL, NULL);
58 trianglemap_set_neighbors(r, l, NULL, NULL, NULL);
59 50
60 assert(quadrilateral_is_delaunay(l, r)); 51 assert(quadrilateral_is_delaunay(l, r) == expected);
61 52
62 trianglemap_destroy(l); 53 trianglemap_destroy(l);
63 trianglemap_destroy(r); 54 trianglemap_destroy(r);
64 }
65} 55}
66 56
67int main(int argc, char **argv) { 57int main(int argc, char **argv) {
68 test_quadrilateral_flip_diagonal(); 58 test_quadrilateral_flip_diagonal();
69 test_quadrilateral_is_delaunay(); 59 test_quadrilateral_is_delaunay(m(0, 0), m(0, 3), m(3, 3), m(2, 1), false);
60 test_quadrilateral_is_delaunay(m(0, 0), m(0, 3), m(3, 3), m(4, -1), true);
70 return 0; 61 return 0;
71} 62}