commit 414e6a209075010ea01545a32c6b2191144c860c
parent 03e84d826d78f75747212f9955eab378934cd5ba
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 22 Feb 2017 10:25:04 +0100
Test the geometry data accessors
Diffstat:
1 file changed, 69 insertions(+), 0 deletions(-)
diff --git a/src/test_ssol_shape.c b/src/test_ssol_shape.c
@@ -36,6 +36,9 @@ main(int argc, char** argv)
-1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 0.f, -2.f
};
const size_t npolygon_verts = sizeof(polygon)/sizeof(double[2]);
+ double val[3];
+ unsigned ids[3];
+ unsigned i, n;
(void) argc, (void) argv;
mem_init_proxy_allocator(&allocator, &mem_default_allocator);
@@ -76,6 +79,72 @@ main(int argc, char** argv)
CHECK(ssol_mesh_setup(shape, SQUARE_NTRIS__, get_ids, SQUARE_NVERTS__,
attribs, 3, (void*)&SQUARE_DESC__), RES_OK);
+ CHECK(ssol_shape_get_vertices_count(NULL, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertices_count(shape, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertices_count(NULL, &n), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertices_count(shape, &n), RES_OK);
+ CHECK(n, SQUARE_NVERTS__);
+
+ CHECK(ssol_shape_get_vertex_attrib(NULL, n, (unsigned)-1, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, n, (unsigned)-1, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, 0, (unsigned)-1, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, 0, (unsigned)-1, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, n, SSOL_POSITION, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, n, SSOL_POSITION, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, 0, SSOL_POSITION, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, 0, SSOL_POSITION, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, n, (unsigned)-1, val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, n, (unsigned)-1, val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, 0, (unsigned)-1, val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, 0, (unsigned)-1,val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, n, SSOL_POSITION, val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(shape, n, SSOL_POSITION, val), RES_BAD_ARG);
+ CHECK(ssol_shape_get_vertex_attrib(NULL, 0, SSOL_POSITION, val), RES_BAD_ARG);
+
+ FOR_EACH(i, 0, n) {
+ float valf[3];
+
+ CHECK(ssol_shape_get_vertex_attrib(shape, i, SSOL_POSITION, val), RES_OK);
+ get_position(i, valf, (void*)&SQUARE_DESC__);
+ CHECK((float)val[0], valf[0]);
+ CHECK((float)val[1], valf[1]);
+ CHECK((float)val[2], valf[2]);
+
+ CHECK(ssol_shape_get_vertex_attrib(shape, i, SSOL_NORMAL, val), RES_OK);
+ get_normal(i, valf, (void*)&SQUARE_DESC__);
+ CHECK((float)val[0], valf[0]);
+ CHECK((float)val[1], valf[1]);
+ CHECK((float)val[2], valf[2]);
+
+ CHECK(ssol_shape_get_vertex_attrib(shape, i, SSOL_TEXCOORD, val), RES_OK);
+ get_uv(i, valf, (void*)&SQUARE_DESC__);
+ CHECK((float)val[0], valf[0]);
+ CHECK((float)val[1], valf[1]);
+ }
+
+ CHECK(ssol_shape_get_triangles_count(NULL, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangles_count(shape, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangles_count(NULL, &n), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangles_count(shape, &n), RES_OK);
+ CHECK(n, SQUARE_NTRIS__);
+
+ CHECK(ssol_shape_get_triangle_indices(NULL, n, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(shape, n, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(NULL, 0, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(shape, 0, NULL), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(NULL, n, ids), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(shape, n, ids), RES_BAD_ARG);
+ CHECK(ssol_shape_get_triangle_indices(NULL, 0, ids), RES_BAD_ARG);
+
+ FOR_EACH(i, 0, n) {
+ unsigned ids2[3];
+ CHECK(ssol_shape_get_triangle_indices(shape, i, ids), RES_OK);
+ get_ids(i, ids2, (void*)&SQUARE_DESC__);
+ CHECK(ids[0], ids2[0]);
+ CHECK(ids[1], ids2[1]);
+ CHECK(ids[2], ids2[2]);
+ }
+
CHECK(ssol_shape_ref_put(shape), RES_OK);
CHECK(ssol_shape_create_punched_surface(NULL, NULL), RES_BAD_ARG);