solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

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:
Msrc/test_ssol_shape.c | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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);