star-2d

Contour structuring for efficient 2D geometric queries
git clone git://git.meso-star.fr/star-2d.git
Log | Files | Refs | README | LICENSE

commit a95760c2f6253f5c40f3180b4ac4c723a8e1c8ff
parent 55aa4aa37e6436160e4547570f979d416739d4af
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri, 12 Jan 2018 14:16:21 +0100

Clean up the tests of the scene API

Diffstat:
Mcmake/CMakeLists.txt | 2+-
Msrc/test_s2d_scene.c | 76+++++++++++++++++++++++-----------------------------------------------------
2 files changed, 24 insertions(+), 54 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -130,7 +130,7 @@ if(NOT NO_TEST) endfunction() new_test(test_s2d_device) - #new_test(test_s2d_scene) + new_test(test_s2d_scene) new_test(test_s2d_scene_view) # new_test(test_s2d_primitive) # new_test(test_s2d_sample) diff --git a/src/test_s2d_scene.c b/src/test_s2d_scene.c @@ -39,6 +39,7 @@ main(int argc, char** argv) struct s2d_device* dev; struct s2d_device* dev2; struct s2d_scene* scn; + struct s2d_scene_view* scnview; struct s2d_shape* shape; struct s2d_primitive prim; size_t nprims; @@ -47,7 +48,6 @@ main(int argc, char** argv) float tmp[2]; float length; float area; - int mask; (void)argc, (void)argv; mem_init_proxy_allocator(&allocator, &mem_default_allocator); @@ -72,7 +72,7 @@ main(int argc, char** argv) CHK(s2d_scene_attach_shape(scn, NULL) == RES_BAD_ARG); CHK(s2d_scene_attach_shape(NULL, shape) == RES_BAD_ARG); CHK(s2d_scene_attach_shape(scn, shape) == RES_OK); - CHK(s2d_scene_attach_shape(scn, shape) == RES_BAD_ARG); + CHK(s2d_scene_attach_shape(scn, shape) == RES_OK); CHK(s2d_scene_detach_shape(NULL, NULL) == RES_BAD_ARG); CHK(s2d_scene_detach_shape(scn, NULL) == RES_BAD_ARG); @@ -87,7 +87,7 @@ main(int argc, char** argv) CHK(s2d_scene_clear(scn) == RES_OK); CHK(s2d_scene_view_create(scn, S2D_TRACE, &scnview) == RES_OK); - CHK(s2d_scene_view_primitives_count(scn, &nprims) == RES_OK); + CHK(s2d_scene_view_primitives_count(scnview, &nprims) == RES_OK); CHK(nprims == 0); CHK(s2d_scene_view_ref_put(scnview) == RES_OK); @@ -97,19 +97,17 @@ main(int argc, char** argv) attrib.type = S2D_FLOAT2; attrib.usage = S2D_POSITION; attrib.get = line_segments_get_position; - CHECK(s2d_line_segments_setup_indexed_vertices - (shape, box_nsegs, line_segments_get_ids, box_nverts, &attrib, 1, - (void*)&box_desc), RES_OK); + CHK(s2d_line_segments_setup_indexed_vertices + (shape, square_nsegs, line_segments_get_ids, square_nverts, &attrib, 1, + (void*)&square_desc) == RES_OK); CHK(s2d_scene_attach_shape(scn, shape) == RES_OK); CHK(s2d_scene_view_create(scn, S2D_GET_PRIMITIVE, &scnview) == RES_OK); - CHK(s2d_scene_view_primitives_count(scn, &nprims) == RES_OK); + CHK(s2d_scene_view_primitives_count(scnview, &nprims) == RES_OK); CHK(nprims == 4); - CHK(s2d_scene_begin_session(scn, S2D_GET_PRIMITIVE) == RES_OK); FOR_EACH(i, 0, nprims) { struct s2d_attrib attr; - float tmp[2]; CHK(s2d_scene_view_get_primitive(scnview, (unsigned)i, &prim) == RES_OK); CHK(s2d_primitive_get_attrib(&prim, S2D_GEOMETRY_NORMAL, 0, &attr) == RES_OK); @@ -123,57 +121,29 @@ main(int argc, char** argv) } } - CHK(s2d_scene_view_compute_contour_length(NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_view_compute_contour_length(scn, NULL) == RES_BAD_ARG); - CHK(s2d_scene_view_compute_contour_length(NULL, &length) == RES_BAD_ARG); - CHK(s2d_scene_view_compute_contour_length(scn, &length) == RES_OK); - CHK(eq_epsf(length, 8.f, 1.e-6f) == 1); - - CHK(s2d_scene_compute_area(NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_compute_area(scn, NULL) == RES_BAD_ARG); - CHK(s2d_scene_compute_area(NULL, &area) == RES_BAD_ARG); - CHK(s2d_scene_compute_area(scn, &area) == RES_OK); - CHK(eq_epsf(area, 4.f, 1.e-6f) == 1); - - CHK(s2d_scene_get_aabb(NULL, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(scn, NULL, NULL) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(NULL, lower, NULL) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(scn, lower, NULL) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(NULL, NULL, upper) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(scn, NULL, upper) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(NULL, lower, upper) == RES_BAD_ARG); - CHK(s2d_scene_get_aabb(scn, lower, upper) == RES_OK); - CHK(f2_eq_eps(lower, f2(tmp, -1.f, -1.f), 1.e-6f) == 1); - CHK(f2_eq_eps(upper, f2(tmp, 1.f, 1.f), 1.e-6f) == 1); - - CHK(s2d_scene_end_session(scn) == RES_OK); - - CHK(s2d_scene_compute_contour_length(scn, &length) == RES_BAD_OP); - CHK(s2d_scene_compute_area(scn, &area) == RES_BAD_OP); - CHK(s2d_scene_get_aabb(scn, lower, upper) == RES_BAD_OP); + CHK(s2d_scene_view_compute_contour_length(scnview, &length) == RES_OK); + CHK(eq_epsf(length, 8.f, 1.e-6f)); - CHK(s2d_shape_flip_contour(shape) == RES_OK); + CHK(s2d_scene_view_compute_area(scnview, &area) == RES_OK); + CHK(eq_epsf(area, 4.f, 1.e-6f)); - CHK(s2d_scene_begin_session(scn, S2D_SAMPLE) == RES_OK); + CHK(s2d_scene_view_get_aabb(scnview, lower, upper) == RES_OK); + CHK(f2_eq_eps(lower, f2(tmp, -1.f, -1.f), 1.e-6f)); + CHK(f2_eq_eps(upper, f2(tmp, 1.f, 1.f), 1.e-6f)); - CHK(s2d_scene_compute_contour_length(scn, &length) == RES_OK); - CHK(eq_epsf(length, 8.f, 1.e-6f) == 1); - - CHK(s2d_scene_compute_area(scn, &area) == RES_OK); - CHK(eq_epsf(area, -4.f, 1.e-6f) == 1); - - CHK(s2d_scene_end_session(scn) == RES_OK); + CHK(s2d_scene_view_ref_put(scnview) == RES_OK); CHK(s2d_scene_clear(scn) == RES_OK); - CHK(s2d_scene_begin_session(scn, S2D_SAMPLE) == RES_OK); - CHK(s2d_scene_compute_contour_length(scn, &length) == RES_OK); + CHK(s2d_scene_view_create(scn, S2D_SAMPLE, &scnview) == RES_OK); + CHK(s2d_scene_view_compute_contour_length(scnview, &length) == RES_OK); CHK(length == 0.f); - CHK(s2d_scene_compute_area(scn, &area) == RES_OK); + CHK(s2d_scene_view_compute_area(scnview, &area) == RES_OK); CHK(area == 0.f); - CHK(s2d_scene_get_aabb(scn, lower, upper) == RES_OK); - CHK(lower[0] > upper[0] == 1); - CHK(lower[1] > upper[1] == 1); - CHK(s2d_scene_end_session(scn) == RES_OK); + CHK(s2d_scene_view_get_aabb(scnview, lower, upper) == RES_OK); + CHK(lower[0] > upper[0]); + CHK(lower[1] > upper[1]); + + CHK(s2d_scene_view_ref_put(scnview) == RES_OK); CHK(s2d_scene_get_device(NULL, NULL) == RES_BAD_ARG); CHK(s2d_scene_get_device(scn, NULL) == RES_BAD_ARG);