diff options
author | pacien | 2017-12-23 21:52:22 +0100 |
---|---|---|
committer | pacien | 2017-12-23 21:52:22 +0100 |
commit | 39cbe5d0d7db78f0d2808abea5562db84d03a07e (patch) | |
tree | f8a70c5f4e36b334a4e0bff27f11f1b046b242fd /test | |
parent | 6802eedbdde0e5a42bb7b6fc251b3123c295666f (diff) | |
download | morpher-39cbe5d0d7db78f0d2808abea5562db84d03a07e.tar.gz |
Refactor quadrilateral tests
Signed-off-by: pacien <pacien.trangirard@pacien.net>
Diffstat (limited to 'test')
-rw-r--r-- | test/morpher/quadrilateral.c | 47 |
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 | */ |
22 | static void test_quadrilateral_flip_diagonal() { | 22 | static 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 | ||
41 | static void test_quadrilateral_is_delaunay() { | 43 | static 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 | ||
67 | int main(int argc, char **argv) { | 57 | int 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 | } |