loader_aw

Load OBJ/MTL file formats
git clone git://git.meso-star.fr/loader_aw.git
Log | Files | Refs | README | LICENSE

commit 25b9ad89d69c69bdec64724c8c79e72331ee9bdb
parent db0412792f432a9ec29630815effbc818ec446d7
Author: vaplv <vaplv@free.fr>
Date:   Tue, 12 Dec 2017 15:10:13 +0100

Merge branch 'release_1.3.1'

Diffstat:
MREADME.md | 9+++++++--
Mcmake/CMakeLists.txt | 19+++++++++----------
Msrc/aw_obj.c | 4++--
Msrc/test_aw_mtl.c | 382++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/test_aw_obj.c | 678++++++++++++++++++++++++++++++++++++++++----------------------------------------
5 files changed, 548 insertions(+), 544 deletions(-)

diff --git a/README.md b/README.md @@ -28,11 +28,16 @@ can be edited, built, tested and installed as any CMake project. ## Release notes +### Version 1.3.1 + +- Update the version of the RSys dependency to 0.6: replace the deprecated + `[N]CHECK` macros by the new macro `CHK`. + ### Version 1.3 - Add the `aw_obj_purge` and `aw_mtl_purge` functions that not only reset the -state of the loaders, as the `aw_obj_clear` and `aw_mtl_clear` functions, but -also free their internal memory. + state of the loaders, as the `aw_obj_clear` and `aw_mtl_clear` functions, but + also free their internal memory. ## License diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -25,9 +25,8 @@ set(AW_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src) ################################################################################ # Dependencies ################################################################################ -find_package(RCMake REQUIRED) -find_package(RSys 0.2 REQUIRED) -include_directories(${RCMake_INCLUDE_DIR} ${RSys_INCLUDE_DIR}) +find_package(RCMake 0.4 REQUIRED) +find_package(RSys 0.6 REQUIRED) set(CMAKE_MODULE_PATH ${RCMAKE_SOURCE_DIR}) include(rcmake) @@ -37,6 +36,11 @@ rcmake_append_runtime_dirs(_runtime_dirs RSys) ################################################################################ # Define targets ################################################################################ +set(VERSION_MAJOR 1) +set(VERSION_MINOR 3) +set(VERSION_PATCH 1) +set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) + set(AW_FILES_SRC aw_c.h aw.c aw_obj.c aw_mtl.c) set(AW_FILES_INC aw.h) set(AW_FILES_DOC COPYING COPYING.LESSER README.md) @@ -45,16 +49,11 @@ rcmake_prepend_path(AW_FILES_INC ${AW_SOURCE_DIR}) rcmake_prepend_path(AW_FILES_DOC ${PROJECT_SOURCE_DIR}/../) add_library(aw SHARED ${AW_FILES_SRC} ${AW_FILES_INC}) -target_link_libraries(aw RSys) - -set(VERSION_MAJOR 1) -set(VERSION_MINOR 3) -set(VERSION_PATCH 0) -set(VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) set_target_properties(aw PROPERTIES DEFINE_SYMBOL AW_SHARED_BUILD VERSION ${VERSION} SOVERSION ${VERSION_MAJOR}) +target_link_libraries(aw RSys) if(MSVC) # The CL compiler does not support the strtok_r POSIX function but proposes @@ -71,7 +70,7 @@ if(NOT NO_TEST) add_executable(test_aw_obj ${AW_SOURCE_DIR}/test_aw_obj.c) target_link_libraries(test_aw_obj aw) add_test(test_aw_obj test_aw_obj) - rcmake_set_test_runtime_dirs(test_aw_obj _runtime_dirs) + # rcmake_set_test_runtime_dirs(test_aw_obj _runtime_dirs) add_executable(test_aw_mtl ${AW_SOURCE_DIR}/test_aw_mtl.c) target_link_libraries(test_aw_mtl aw) diff --git a/src/aw_obj.c b/src/aw_obj.c @@ -286,7 +286,7 @@ exit: return res; error: if(igrp != ngrps) - CHECK(darray_named_group_resize(&obj->groups, ngrps), RES_OK); + CHK(darray_named_group_resize(&obj->groups, ngrps) == RES_OK); goto exit; } @@ -353,7 +353,7 @@ exit: return res; error: if(imtllib != nmtllibs) - CHECK(darray_mtllib_resize(&obj->mtllibs, nmtllibs), RES_OK); + CHK(darray_mtllib_resize(&obj->mtllibs, nmtllibs) == RES_OK); goto exit; } diff --git a/src/test_aw_mtl.c b/src/test_aw_mtl.c @@ -53,115 +53,115 @@ test_common(struct aw_mtl* mtl) float tmp[3]; struct aw_material mtr; - NCHECK(mtl, NULL); + CHK(mtl != NULL); file = fopen("test_mtl_common.mtl", "w"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(mtl_common, sizeof(char), strlen(mtl_common), file); fclose(file); - CHECK(aw_mtl_load(NULL, NULL), RES_BAD_ARG); - CHECK(aw_mtl_load(mtl, NULL), RES_BAD_ARG); - CHECK(aw_mtl_load(NULL, "test_mtl_common.mtl"), RES_BAD_ARG); - CHECK(aw_mtl_load(mtl, "none.mtl"), RES_IO_ERR); - CHECK(aw_mtl_load(mtl, "test_mtl_common.mtl"), RES_OK); - - CHECK(aw_mtl_materials_count_get(NULL, NULL), RES_BAD_ARG); - CHECK(aw_mtl_materials_count_get(mtl, NULL), RES_BAD_ARG); - CHECK(aw_mtl_materials_count_get(NULL, &nmtls), RES_BAD_ARG); - CHECK(aw_mtl_materials_count_get(mtl, &nmtls), RES_OK); - - CHECK(nmtls, 1); - - CHECK(aw_mtl_clear(NULL), RES_BAD_ARG); - CHECK(aw_mtl_clear(mtl), RES_OK); - CHECK(aw_mtl_materials_count_get(mtl, &nmtls), RES_OK); - CHECK(nmtls, 0); - - CHECK(aw_mtl_load(mtl, "test_mtl_common.mtl"), RES_OK); - - CHECK(aw_material_init(NULL, NULL), RES_BAD_ARG); - CHECK(aw_material_init(NULL, &mtr), RES_OK); - CHECK(aw_mtl_material_get(NULL, SIZE_MAX, NULL), RES_BAD_ARG); - CHECK(aw_mtl_material_get(mtl, SIZE_MAX, NULL), RES_BAD_ARG); - CHECK(aw_mtl_material_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_mtl_material_get(mtl, 0, NULL), RES_BAD_ARG); - CHECK(aw_mtl_material_get(NULL, SIZE_MAX, &mtr), RES_BAD_ARG); - CHECK(aw_mtl_material_get(mtl, SIZE_MAX, &mtr), RES_BAD_ARG); - CHECK(aw_mtl_material_get(NULL, 0, &mtr), RES_BAD_ARG); - CHECK(aw_mtl_material_get(mtl, 0, &mtr), RES_OK); - - CHECK(strcmp(str_cget(&mtr.name), "my_mtl"), 0); - CHECK(mtr.ambient.color_space, AW_COLOR_RGB); + CHK(aw_mtl_load(NULL, NULL) == RES_BAD_ARG); + CHK(aw_mtl_load(mtl, NULL) == RES_BAD_ARG); + CHK(aw_mtl_load(NULL, "test_mtl_common.mtl") == RES_BAD_ARG); + CHK(aw_mtl_load(mtl, "none.mtl") == RES_IO_ERR); + CHK(aw_mtl_load(mtl, "test_mtl_common.mtl") == RES_OK); + + CHK(aw_mtl_materials_count_get(NULL, NULL) == RES_BAD_ARG); + CHK(aw_mtl_materials_count_get(mtl, NULL) == RES_BAD_ARG); + CHK(aw_mtl_materials_count_get(NULL, &nmtls) == RES_BAD_ARG); + CHK(aw_mtl_materials_count_get(mtl, &nmtls) == RES_OK); + + CHK(nmtls == 1); + + CHK(aw_mtl_clear(NULL) == RES_BAD_ARG); + CHK(aw_mtl_clear(mtl) == RES_OK); + CHK(aw_mtl_materials_count_get(mtl, &nmtls) == RES_OK); + CHK(nmtls == 0); + + CHK(aw_mtl_load(mtl, "test_mtl_common.mtl") == RES_OK); + + CHK(aw_material_init(NULL, NULL) == RES_BAD_ARG); + CHK(aw_material_init(NULL, &mtr) == RES_OK); + CHK(aw_mtl_material_get(NULL, SIZE_MAX, NULL) == RES_BAD_ARG); + CHK(aw_mtl_material_get(mtl, SIZE_MAX, NULL) == RES_BAD_ARG); + CHK(aw_mtl_material_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_mtl_material_get(mtl, 0, NULL) == RES_BAD_ARG); + CHK(aw_mtl_material_get(NULL, SIZE_MAX, &mtr) == RES_BAD_ARG); + CHK(aw_mtl_material_get(mtl, SIZE_MAX, &mtr) == RES_BAD_ARG); + CHK(aw_mtl_material_get(NULL, 0, &mtr) == RES_BAD_ARG); + CHK(aw_mtl_material_get(mtl, 0, &mtr) == RES_OK); + + CHK(strcmp(str_cget(&mtr.name), "my_mtl") == 0); + CHK(mtr.ambient.color_space == AW_COLOR_RGB); f3(tmp, 0.0435f, 0.0436f, 0.0437f); - CHECK(f3_eq(mtr.ambient.value, tmp), 1); + CHK(f3_eq(mtr.ambient.value, tmp) == 1); - CHECK(mtr.diffuse.color_space, AW_COLOR_RGB); + CHK(mtr.diffuse.color_space == AW_COLOR_RGB); f3(tmp, 0.1086f, 0.1087f, 0.1088f); - CHECK(f3_eq(mtr.diffuse.value, tmp), 1); + CHK(f3_eq(mtr.diffuse.value, tmp) == 1); - CHECK(mtr.specular.color_space, AW_COLOR_RGB); + CHK(mtr.specular.color_space == AW_COLOR_RGB); f3_splat(tmp, 0.f); - CHECK(f3_eq(mtr.specular.value, tmp), 1); + CHK(f3_eq(mtr.specular.value, tmp) == 1); - CHECK(mtr.transmission.color_space, AW_COLOR_XYZ); + CHK(mtr.transmission.color_space == AW_COLOR_XYZ); f3(tmp, 0.987f, 0.988f, 0.989f); - CHECK(f3_eq(mtr.transmission.value, tmp), 1); - - CHECK(mtr.specular_exponent, 10.f); - CHECK(mtr.refraction_index, (float)1.19713f); - CHECK(mtr.illumination_model, 6); - - CHECK(strcmp(str_cget(&mtr.ambient_map.filename), "chrome.mpc"), 0); - CHECK(mtr.ambient_map.options_mask, 0); - CHECK(mtr.ambient_map.image_bias, 0.f); - CHECK(mtr.ambient_map.image_scale, 1.f); - CHECK(f3_eq(mtr.ambient_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.ambient_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.ambient_map.texcoord_turbulence, f3_splat(tmp, 0.f)), 1); - - CHECK(strcmp(str_cget(&mtr.diffuse_map.filename), "chrome.mpc"), 0); - CHECK(mtr.diffuse_map.options_mask, 0); - CHECK(mtr.diffuse_map.image_bias, 0.f); - CHECK(mtr.diffuse_map.image_scale, 1.f); - CHECK(f3_eq(mtr.diffuse_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.diffuse_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.diffuse_map.texcoord_turbulence, f3_splat(tmp, 0.f)), 1); - - CHECK(strcmp(str_cget(&mtr.specular_map.filename), "chrome.mpc"), 0); - CHECK(mtr.specular_map.options_mask, 0); - CHECK(mtr.specular_map.image_bias, 0.f); - CHECK(mtr.specular_map.image_scale, 1.f); - CHECK(f3_eq(mtr.specular_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.specular_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.specular_map.texcoord_turbulence, f3_splat(tmp, 0.f)), 1); - - CHECK(strcmp(str_cget(&mtr.specular_exponent_map.filename), "wisp.mps"), 0); - CHECK(mtr.specular_exponent_map.options_mask, 0); - CHECK(mtr.specular_exponent_map.image_bias, 0.f); - CHECK(mtr.specular_exponent_map.image_scale, 1.f); - CHECK(f3_eq(mtr.specular_exponent_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.specular_exponent_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.specular_exponent_map.texcoord_turbulence, tmp), 1); - CHECK(mtr.specular_exponent_map.scalar, AW_MAP_CHANNEL_LUMINANCE); - - CHECK(strcmp(str_cget(&mtr.bump_map.filename), "sand.mpb"), 0); - CHECK(mtr.bump_map.options_mask, 0); - CHECK(mtr.bump_map.image_bias, 0.f); - CHECK(mtr.bump_map.image_scale, 1.f); - CHECK(f3_eq(mtr.bump_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.bump_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.bump_map.texcoord_turbulence, tmp), 1); - CHECK(mtr.bump_map.scalar, AW_MAP_CHANNEL_LUMINANCE); - CHECK(mtr.bump_map.bump_multiplier, 1.f); - - CHECK(aw_material_release(NULL), RES_BAD_ARG); - CHECK(aw_material_release(&mtr), RES_OK); - - CHECK(aw_mtl_purge(NULL), RES_BAD_ARG); - CHECK(aw_mtl_purge(mtl), RES_OK); - CHECK(aw_mtl_materials_count_get(mtl, &nmtls), RES_OK); - CHECK(nmtls, 0); + CHK(f3_eq(mtr.transmission.value, tmp) == 1); + + CHK(mtr.specular_exponent == 10.f); + CHK(mtr.refraction_index == (float)1.19713f); + CHK(mtr.illumination_model == 6); + + CHK(strcmp(str_cget(&mtr.ambient_map.filename), "chrome.mpc") == 0); + CHK(mtr.ambient_map.options_mask == 0); + CHK(mtr.ambient_map.image_bias == 0.f); + CHK(mtr.ambient_map.image_scale == 1.f); + CHK(f3_eq(mtr.ambient_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.ambient_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.ambient_map.texcoord_turbulence, f3_splat(tmp, 0.f)) == 1); + + CHK(strcmp(str_cget(&mtr.diffuse_map.filename), "chrome.mpc") == 0); + CHK(mtr.diffuse_map.options_mask == 0); + CHK(mtr.diffuse_map.image_bias == 0.f); + CHK(mtr.diffuse_map.image_scale == 1.f); + CHK(f3_eq(mtr.diffuse_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.diffuse_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.diffuse_map.texcoord_turbulence, f3_splat(tmp, 0.f)) == 1); + + CHK(strcmp(str_cget(&mtr.specular_map.filename), "chrome.mpc") == 0); + CHK(mtr.specular_map.options_mask == 0); + CHK(mtr.specular_map.image_bias == 0.f); + CHK(mtr.specular_map.image_scale == 1.f); + CHK(f3_eq(mtr.specular_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.specular_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.specular_map.texcoord_turbulence, f3_splat(tmp, 0.f)) == 1); + + CHK(strcmp(str_cget(&mtr.specular_exponent_map.filename), "wisp.mps") == 0); + CHK(mtr.specular_exponent_map.options_mask == 0); + CHK(mtr.specular_exponent_map.image_bias == 0.f); + CHK(mtr.specular_exponent_map.image_scale == 1.f); + CHK(f3_eq(mtr.specular_exponent_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.specular_exponent_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.specular_exponent_map.texcoord_turbulence, tmp) == 1); + CHK(mtr.specular_exponent_map.scalar == AW_MAP_CHANNEL_LUMINANCE); + + CHK(strcmp(str_cget(&mtr.bump_map.filename), "sand.mpb") == 0); + CHK(mtr.bump_map.options_mask == 0); + CHK(mtr.bump_map.image_bias == 0.f); + CHK(mtr.bump_map.image_scale == 1.f); + CHK(f3_eq(mtr.bump_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.bump_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.bump_map.texcoord_turbulence, tmp) == 1); + CHK(mtr.bump_map.scalar == AW_MAP_CHANNEL_LUMINANCE); + CHK(mtr.bump_map.bump_multiplier == 1.f); + + CHK(aw_material_release(NULL) == RES_BAD_ARG); + CHK(aw_material_release(&mtr) == RES_OK); + + CHK(aw_mtl_purge(NULL) == RES_BAD_ARG); + CHK(aw_mtl_purge(mtl) == RES_OK); + CHK(aw_mtl_materials_count_get(mtl, &nmtls) == RES_OK); + CHK(nmtls == 0); } static void @@ -208,88 +208,88 @@ test_multiple_materials(struct aw_mtl* mtl) float tmp[3]; struct aw_material mtr; - NCHECK(mtl, NULL); + CHK(mtl != NULL); file = fopen("test_mtl_multi.mtl", "w+"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(mtl_multi, sizeof(char), strlen(mtl_multi), file); - CHECK(fseek(file, 0, SEEK_SET), 0); - - CHECK(aw_mtl_load_stream(NULL, NULL), RES_BAD_ARG); - CHECK(aw_mtl_load_stream(mtl, NULL), RES_BAD_ARG); - CHECK(aw_mtl_load_stream(NULL, file), RES_BAD_ARG); - CHECK(aw_mtl_load_stream(mtl, file), RES_OK); - CHECK(aw_mtl_materials_count_get(mtl, &nmtls), RES_OK); - CHECK(nmtls, 3); - - CHECK(aw_material_init(NULL, &mtr), RES_OK); - CHECK(aw_mtl_material_get(mtl, 0, &mtr), RES_OK); - CHECK(strcmp(str_cget(&mtr.name), "material_0"), 0); - CHECK(mtr.specular_exponent, 8.f); - CHECK(mtr.refraction_index, 1.5f); - CHECK(mtr.transmission.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.transmission.value, f3_splat(tmp, 1.f)), 1); - CHECK(mtr.illumination_model, 2); - CHECK(mtr.ambient.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)), 1); - CHECK(mtr.diffuse.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.diffuse.value, f3(tmp, 0.734118f, 0.730588f, 0.674118f)), 1); - CHECK(mtr.specular.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.specular.value, f3_splat(tmp, 0.f)), 1); - CHECK(strcmp + CHK(fseek(file, 0, SEEK_SET) == 0); + + CHK(aw_mtl_load_stream(NULL, NULL) == RES_BAD_ARG); + CHK(aw_mtl_load_stream(mtl, NULL) == RES_BAD_ARG); + CHK(aw_mtl_load_stream(NULL, file) == RES_BAD_ARG); + CHK(aw_mtl_load_stream(mtl, file) == RES_OK); + CHK(aw_mtl_materials_count_get(mtl, &nmtls) == RES_OK); + CHK(nmtls == 3); + + CHK(aw_material_init(NULL, &mtr) == RES_OK); + CHK(aw_mtl_material_get(mtl, 0, &mtr) == RES_OK); + CHK(strcmp(str_cget(&mtr.name), "material_0") == 0); + CHK(mtr.specular_exponent == 8.f); + CHK(mtr.refraction_index == 1.5f); + CHK(mtr.transmission.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.transmission.value, f3_splat(tmp, 1.f)) == 1); + CHK(mtr.illumination_model == 2); + CHK(mtr.ambient.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)) == 1); + CHK(mtr.diffuse.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.diffuse.value, f3(tmp, 0.734118f, 0.730588f, 0.674118f)) == 1); + CHK(mtr.specular.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.specular.value, f3_splat(tmp, 0.f)) == 1); + CHK(strcmp (str_cget(&mtr.ambient_map.filename), - "my_long_and_verbose_filename_of_a_RED_GREEN_BLUE_1024x64_image.png"), 0); - CHECK(mtr.ambient_map.options_mask, 0); - CHECK(mtr.ambient_map.image_bias, 0.f); - CHECK(mtr.ambient_map.image_scale, 1.f); - CHECK(f3_eq(mtr.ambient_map.texcoord_bias, f3_splat(tmp, 0.f)), 1); - CHECK(f3_eq(mtr.ambient_map.texcoord_scale, f3_splat(tmp, 1.f)), 1); - CHECK(f3_eq(mtr.ambient_map.texcoord_turbulence, f3_splat(tmp, 0.f)), 1); - CHECK(mtr.ambient_map.resolution, 0); - CHECK(strcmp(str_cget(&mtr.diffuse_map.filename), "tp.png"), 0); - CHECK(str_len(&mtr.specular_map.filename), 0); - CHECK(str_len(&mtr.specular_exponent_map.filename), 0); - CHECK(str_len(&mtr.bump_map.filename), 0); - - CHECK(aw_mtl_material_get(mtl, 1, &mtr), RES_OK); - CHECK(strcmp(str_cget(&mtr.name), "textured_material"), 0); - CHECK(mtr.specular_exponent, 6.f); - CHECK(mtr.refraction_index, (float)1.7f); - CHECK(mtr.transmission.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.transmission.value, f3(tmp, 1.f, 1.2f, 1.3f)), 1); - CHECK(mtr.illumination_model, 0); - CHECK(mtr.ambient.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)), 1); - CHECK(mtr.diffuse.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.diffuse.value, f3(tmp, 0.734118f, 0.709412f, 0.674118f)), 1); - CHECK(mtr.specular.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.specular.value, f3_splat(tmp, 0.f)), 1); - CHECK(strcmp(str_cget(&mtr.ambient_map.filename), "tex6x6.png"), 0); - CHECK(strcmp(str_cget(&mtr.diffuse_map.filename), "tex6x6.png"), 0); - CHECK(strcmp(str_cget(&mtr.bump_map.filename), "tex6x6-bump.png"), 0); - CHECK(mtr.bump_map.scalar, AW_MAP_CHANNEL_RED); - CHECK(mtr.bump_map.bump_multiplier, (float)0.2f); - CHECK(str_len(&mtr.specular_exponent_map.filename), 0); - - CHECK(aw_mtl_material_get(mtl, 2, &mtr), RES_OK); - CHECK(strcmp(str_cget(&mtr.name), "hello_world"), 0); - CHECK(mtr.specular_exponent, 8.f); - CHECK(mtr.refraction_index, 1.5f); - CHECK(mtr.transmission.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.transmission.value, f3_splat(tmp, 1.f)), 1); - CHECK(mtr.illumination_model, 2); - CHECK(mtr.ambient.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)), 1); - CHECK(mtr.diffuse.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.diffuse.value, f3(tmp, 0.546274f, 0.219608f, 0.183922f)), 1); - CHECK(mtr.specular.color_space, AW_COLOR_RGB); - CHECK(f3_eq(mtr.specular.value, f3_splat(tmp, 2.f)), 1); - CHECK(str_len(&mtr.ambient_map.filename), 0); - CHECK(str_len(&mtr.diffuse_map.filename), 0); - CHECK(str_len(&mtr.bump_map.filename), 0); - CHECK(str_len(&mtr.specular_exponent_map.filename), 0); - - CHECK(aw_material_release(&mtr), RES_OK); + "my_long_and_verbose_filename_of_a_RED_GREEN_BLUE_1024x64_image.png") == 0); + CHK(mtr.ambient_map.options_mask == 0); + CHK(mtr.ambient_map.image_bias == 0.f); + CHK(mtr.ambient_map.image_scale == 1.f); + CHK(f3_eq(mtr.ambient_map.texcoord_bias, f3_splat(tmp, 0.f)) == 1); + CHK(f3_eq(mtr.ambient_map.texcoord_scale, f3_splat(tmp, 1.f)) == 1); + CHK(f3_eq(mtr.ambient_map.texcoord_turbulence, f3_splat(tmp, 0.f)) == 1); + CHK(mtr.ambient_map.resolution == 0); + CHK(strcmp(str_cget(&mtr.diffuse_map.filename), "tp.png") == 0); + CHK(str_len(&mtr.specular_map.filename) == 0); + CHK(str_len(&mtr.specular_exponent_map.filename) == 0); + CHK(str_len(&mtr.bump_map.filename) == 0); + + CHK(aw_mtl_material_get(mtl, 1, &mtr) == RES_OK); + CHK(strcmp(str_cget(&mtr.name), "textured_material") == 0); + CHK(mtr.specular_exponent == 6.f); + CHK(mtr.refraction_index == (float)1.7f); + CHK(mtr.transmission.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.transmission.value, f3(tmp, 1.f, 1.2f, 1.3f)) == 1); + CHK(mtr.illumination_model == 0); + CHK(mtr.ambient.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)) == 1); + CHK(mtr.diffuse.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.diffuse.value, f3(tmp, 0.734118f, 0.709412f, 0.674118f)) == 1); + CHK(mtr.specular.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.specular.value, f3_splat(tmp, 0.f)) == 1); + CHK(strcmp(str_cget(&mtr.ambient_map.filename), "tex6x6.png") == 0); + CHK(strcmp(str_cget(&mtr.diffuse_map.filename), "tex6x6.png") == 0); + CHK(strcmp(str_cget(&mtr.bump_map.filename), "tex6x6-bump.png") == 0); + CHK(mtr.bump_map.scalar == AW_MAP_CHANNEL_RED); + CHK(mtr.bump_map.bump_multiplier == (float)0.2f); + CHK(str_len(&mtr.specular_exponent_map.filename) == 0); + + CHK(aw_mtl_material_get(mtl, 2, &mtr) == RES_OK); + CHK(strcmp(str_cget(&mtr.name), "hello_world") == 0); + CHK(mtr.specular_exponent == 8.f); + CHK(mtr.refraction_index == 1.5f); + CHK(mtr.transmission.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.transmission.value, f3_splat(tmp, 1.f)) == 1); + CHK(mtr.illumination_model == 2); + CHK(mtr.ambient.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.ambient.value, f3_splat(tmp, 0.f)) == 1); + CHK(mtr.diffuse.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.diffuse.value, f3(tmp, 0.546274f, 0.219608f, 0.183922f)) == 1); + CHK(mtr.specular.color_space == AW_COLOR_RGB); + CHK(f3_eq(mtr.specular.value, f3_splat(tmp, 2.f)) == 1); + CHK(str_len(&mtr.ambient_map.filename) == 0); + CHK(str_len(&mtr.diffuse_map.filename) == 0); + CHK(str_len(&mtr.bump_map.filename) == 0); + CHK(str_len(&mtr.specular_exponent_map.filename) == 0); + + CHK(aw_material_release(&mtr) == RES_OK); fclose(file); } @@ -310,16 +310,16 @@ test_unloadable(struct aw_mtl* mtl) FILE* file; size_t nmtls; - NCHECK(mtl, NULL); + CHK(mtl != NULL); file = fopen("mtl0.mtl", "w"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(mtl0, sizeof(char), strlen(mtl0), file); fclose(file); - CHECK(aw_mtl_load(mtl, "mtl0.mtl"), RES_BAD_ARG); - CHECK(aw_mtl_materials_count_get(mtl, &nmtls), RES_OK); - CHECK(nmtls, 0); + CHK(aw_mtl_load(mtl, "mtl0.mtl") == RES_BAD_ARG); + CHK(aw_mtl_materials_count_get(mtl, &nmtls) == RES_OK); + CHK(nmtls == 0); } int main(int argc, char** argv) @@ -330,23 +330,23 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(aw_mtl_create(NULL, NULL, 1, NULL), RES_BAD_ARG); - CHECK(aw_mtl_create(NULL, &allocator, 1, NULL), RES_BAD_ARG); - CHECK(aw_mtl_create(NULL, NULL, 1, &mtl), RES_OK); + CHK(aw_mtl_create(NULL, NULL, 1, NULL) == RES_BAD_ARG); + CHK(aw_mtl_create(NULL, &allocator, 1, NULL) == RES_BAD_ARG); + CHK(aw_mtl_create(NULL, NULL, 1, &mtl) == RES_OK); - CHECK(aw_mtl_ref_get(NULL), RES_BAD_ARG); - CHECK(aw_mtl_ref_get(mtl), RES_OK); - CHECK(aw_mtl_ref_put(NULL), RES_BAD_ARG); - CHECK(aw_mtl_ref_put(mtl), RES_OK); - CHECK(aw_mtl_ref_put(mtl), RES_OK); + CHK(aw_mtl_ref_get(NULL) == RES_BAD_ARG); + CHK(aw_mtl_ref_get(mtl) == RES_OK); + CHK(aw_mtl_ref_put(NULL) == RES_BAD_ARG); + CHK(aw_mtl_ref_put(mtl) == RES_OK); + CHK(aw_mtl_ref_put(mtl) == RES_OK); - CHECK(aw_mtl_create(LOGGER_DEFAULT, &allocator, 1, &mtl), RES_OK); + CHK(aw_mtl_create(LOGGER_DEFAULT, &allocator, 1, &mtl) == RES_OK); test_common(mtl); test_multiple_materials(mtl); test_unloadable(mtl); - CHECK(aw_mtl_ref_put(mtl), RES_OK); + CHK(aw_mtl_ref_put(mtl) == RES_OK); if(MEM_ALLOCATED_SIZE(&allocator)) { char dump[512]; @@ -355,7 +355,7 @@ main(int argc, char** argv) FATAL("Memory leaks\n"); } mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; } diff --git a/src/test_aw_obj.c b/src/test_aw_obj.c @@ -51,105 +51,105 @@ test_plane(struct aw_obj* obj) FILE* file; const char* mtllib; - NCHECK(obj, NULL); + CHK(obj != NULL); file = fopen("test_obj_plane.obj", "w"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(plane_obj, sizeof(char), strlen(plane_obj), file); fclose(file); - CHECK(aw_obj_named_group_init(NULL, NULL), RES_BAD_ARG); - CHECK(aw_obj_named_group_init(NULL, &group), RES_OK); - CHECK(aw_obj_named_group_init(NULL, &mtl), RES_OK); - - CHECK(aw_obj_load(NULL, NULL), RES_BAD_ARG); - CHECK(aw_obj_load(obj, NULL), RES_BAD_ARG); - CHECK(aw_obj_load(NULL, "test_obj_plane.obj"), RES_BAD_ARG); - CHECK(aw_obj_load(obj, "none.obj"), RES_IO_ERR); - CHECK(aw_obj_load(obj, "test_obj_plane.obj"), RES_OK); - - CHECK(aw_obj_desc_get(NULL, NULL), RES_BAD_ARG); - CHECK(aw_obj_desc_get(obj, NULL), RES_BAD_ARG); - CHECK(aw_obj_desc_get(NULL, &desc), RES_BAD_ARG); - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 1); - CHECK(desc.groups_count, 1); - CHECK(desc.smooth_groups_count, 0); - CHECK(desc.usemtls_count, 1); - CHECK(desc.mtllibs_count, 1); - - CHECK(aw_obj_face_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_face_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_face_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_face_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_face_get(NULL, AW_ID_NONE, &face), RES_BAD_ARG); - CHECK(aw_obj_face_get(obj, AW_ID_NONE, &face), RES_BAD_ARG); - CHECK(aw_obj_face_get(NULL, 0, &face), RES_BAD_ARG); - CHECK(aw_obj_face_get(obj, 0, &face), RES_OK); - CHECK(face.vertex_id, 0); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 0); - CHECK(face.smooth_group_id, AW_ID_NONE); - CHECK(face.mtl_id, 0); - - CHECK(aw_obj_mtl_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(NULL, AW_ID_NONE, &mtl), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(obj, AW_ID_NONE, &mtl), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(NULL, 0, &mtl), RES_BAD_ARG); - CHECK(aw_obj_mtl_get(obj, 0, &mtl), RES_OK); - CHECK(strcmp(str_cget(&mtl.name), "wood"), 0); - CHECK(mtl.face_id, 0); - CHECK(mtl.faces_count, 1); - - CHECK(aw_obj_mtllib_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(NULL, AW_ID_NONE, &mtllib), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(obj, AW_ID_NONE, &mtllib), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(NULL, 0, &mtllib), RES_BAD_ARG); - CHECK(aw_obj_mtllib_get(obj, 0, &mtllib), RES_OK); - CHECK(strcmp(mtllib, "master.mtl"), 0); - - CHECK(aw_obj_vertex_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(NULL, AW_ID_NONE, &vertex), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(obj, AW_ID_NONE, &vertex), RES_BAD_ARG); - CHECK(aw_obj_vertex_get(NULL, 0, &vertex), RES_BAD_ARG); - - CHECK(aw_obj_vertex_get(obj, 0, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 0.f, 2.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.texcoord, f3(v4, 0.f, 1.f, 0.f)), 1); - CHECK(aw_obj_vertex_get(obj, 1, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 0.f, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.texcoord, f3(v4, 0.f, 0.f, 0.f)), 1); - CHECK(aw_obj_vertex_get(obj, 2, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.texcoord, f3(v4, 1.f, 0.f, 0.f)), 1); - CHECK(aw_obj_vertex_get(obj, 3, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.texcoord, f3(v4, 1.f, 1.f, 0.f)), 1); - - CHECK(aw_obj_group_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, AW_ID_NONE, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, AW_ID_NONE, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, 0, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, 0, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), "default"), 0); - CHECK(group.face_id, 0); - CHECK(group.faces_count, 1); - - CHECK(aw_obj_named_group_release(NULL), RES_BAD_ARG); - CHECK(aw_obj_named_group_release(&group), RES_OK); - CHECK(aw_obj_named_group_release(&mtl), RES_OK); + CHK(aw_obj_named_group_init(NULL, NULL) == RES_BAD_ARG); + CHK(aw_obj_named_group_init(NULL, &group) == RES_OK); + CHK(aw_obj_named_group_init(NULL, &mtl) == RES_OK); + + CHK(aw_obj_load(NULL, NULL) == RES_BAD_ARG); + CHK(aw_obj_load(obj, NULL) == RES_BAD_ARG); + CHK(aw_obj_load(NULL, "test_obj_plane.obj") == RES_BAD_ARG); + CHK(aw_obj_load(obj, "none.obj") == RES_IO_ERR); + CHK(aw_obj_load(obj, "test_obj_plane.obj") == RES_OK); + + CHK(aw_obj_desc_get(NULL, NULL) == RES_BAD_ARG); + CHK(aw_obj_desc_get(obj, NULL) == RES_BAD_ARG); + CHK(aw_obj_desc_get(NULL, &desc) == RES_BAD_ARG); + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 1); + CHK(desc.groups_count == 1); + CHK(desc.smooth_groups_count == 0); + CHK(desc.usemtls_count == 1); + CHK(desc.mtllibs_count == 1); + + CHK(aw_obj_face_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_face_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_face_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_face_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_face_get(NULL, AW_ID_NONE, &face) == RES_BAD_ARG); + CHK(aw_obj_face_get(obj, AW_ID_NONE, &face) == RES_BAD_ARG); + CHK(aw_obj_face_get(NULL, 0, &face) == RES_BAD_ARG); + CHK(aw_obj_face_get(obj, 0, &face) == RES_OK); + CHK(face.vertex_id == 0); + CHK(face.vertices_count == 4); + CHK(face.group_id == 0); + CHK(face.smooth_group_id == AW_ID_NONE); + CHK(face.mtl_id == 0); + + CHK(aw_obj_mtl_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(NULL, AW_ID_NONE, &mtl) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(obj, AW_ID_NONE, &mtl) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(NULL, 0, &mtl) == RES_BAD_ARG); + CHK(aw_obj_mtl_get(obj, 0, &mtl) == RES_OK); + CHK(strcmp(str_cget(&mtl.name), "wood") == 0); + CHK(mtl.face_id == 0); + CHK(mtl.faces_count == 1); + + CHK(aw_obj_mtllib_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(NULL, AW_ID_NONE, &mtllib) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(obj, AW_ID_NONE, &mtllib) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(NULL, 0, &mtllib) == RES_BAD_ARG); + CHK(aw_obj_mtllib_get(obj, 0, &mtllib) == RES_OK); + CHK(strcmp(mtllib, "master.mtl") == 0); + + CHK(aw_obj_vertex_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(NULL, AW_ID_NONE, &vertex) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(obj, AW_ID_NONE, &vertex) == RES_BAD_ARG); + CHK(aw_obj_vertex_get(NULL, 0, &vertex) == RES_BAD_ARG); + + CHK(aw_obj_vertex_get(obj, 0, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 0.f, 2.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.texcoord, f3(v4, 0.f, 1.f, 0.f)) == 1); + CHK(aw_obj_vertex_get(obj, 1, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 0.f, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.texcoord, f3(v4, 0.f, 0.f, 0.f)) == 1); + CHK(aw_obj_vertex_get(obj, 2, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.texcoord, f3(v4, 1.f, 0.f, 0.f)) == 1); + CHK(aw_obj_vertex_get(obj, 3, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.texcoord, f3(v4, 1.f, 1.f, 0.f)) == 1); + + CHK(aw_obj_group_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, AW_ID_NONE, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, AW_ID_NONE, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, 0, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, 0, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), "default") == 0); + CHK(group.face_id == 0); + CHK(group.faces_count == 1); + + CHK(aw_obj_named_group_release(NULL) == RES_BAD_ARG); + CHK(aw_obj_named_group_release(&group) == RES_OK); + CHK(aw_obj_named_group_release(&mtl) == RES_OK); } static void @@ -186,91 +186,91 @@ test_squares(struct aw_obj* obj) struct aw_obj_vertex vertex; FILE* file; - NCHECK(obj, NULL); - CHECK(aw_obj_named_group_init(NULL, &group), RES_OK); - CHECK(aw_obj_named_group_init(NULL, &mtl), RES_OK); + CHK(obj != NULL); + CHK(aw_obj_named_group_init(NULL, &group) == RES_OK); + CHK(aw_obj_named_group_init(NULL, &mtl) == RES_OK); file = fopen("test_obj_squares.obj", "w"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(squares_obj, sizeof(char), strlen(squares_obj), file); fclose(file); - CHECK(aw_obj_load(obj, "test_obj_squares.obj"), RES_OK); - - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 2); - CHECK(desc.groups_count, 1); - CHECK(desc.smooth_groups_count, 1); - CHECK(desc.usemtls_count, 0); - CHECK(desc.mtllibs_count, 0); - - CHECK(aw_obj_face_get(obj, 0, &face), RES_OK); - CHECK(face.vertex_id, 0); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 0); - CHECK(face.smooth_group_id, 0); - CHECK(face.mtl_id, AW_ID_NONE); - - CHECK(aw_obj_vertex_get(obj, 0, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 0.f, 2.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.f, 0.f, 1.f)), 1); - CHECK(aw_obj_vertex_get(obj, 1, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 0.f, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.f, 0.f, 1.f)), 1); - CHECK(aw_obj_vertex_get(obj, 2, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)), 1); - CHECK(aw_obj_vertex_get(obj, 3, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)), 1); - - CHECK(aw_obj_face_get(obj, 1, &face), RES_OK); - CHECK(face.vertex_id, 4); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 0); - CHECK(face.smooth_group_id, 0); - CHECK(face.mtl_id, AW_ID_NONE); - - CHECK(aw_obj_vertex_get(obj, 4, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)), 1); - CHECK(aw_obj_vertex_get(obj, 5, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)), 1); - CHECK(aw_obj_vertex_get(obj, 6, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 4.f, 0.f, -1.255298f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.531611f, 0.f, 0.846988f)), 1); - CHECK(aw_obj_vertex_get(obj, 7, &vertex), RES_OK); - CHECK(f4_eq(vertex.position, f4(v4, 4.f, 2.f, -1.255298f, 1.f)), 1); - CHECK(f3_eq(vertex.normal, f3(v4, 0.531611f, 0.f, 0.846988f)), 1); - - CHECK(aw_obj_group_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, AW_ID_NONE, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, AW_ID_NONE, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(NULL, 0, &group), RES_BAD_ARG); - CHECK(aw_obj_group_get(obj, 0, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), "all"), 0); - CHECK(group.face_id, 0); - CHECK(group.faces_count, 2); - - CHECK(aw_obj_smooth_group_get(NULL, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(obj, AW_ID_NONE, NULL), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(NULL, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(obj, 0, NULL), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(NULL, AW_ID_NONE, &sgroup), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(obj, AW_ID_NONE, &sgroup), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(NULL, 0, &sgroup), RES_BAD_ARG); - CHECK(aw_obj_smooth_group_get(obj, 0, &sgroup), RES_OK); - CHECK(sgroup.is_smoothed, 1); - CHECK(sgroup.face_id, 0); - CHECK(sgroup.faces_count, 2); - - CHECK(aw_obj_mtl_get(obj, 0, &mtl), RES_BAD_ARG); - - CHECK(aw_obj_named_group_release(&group), RES_OK); - CHECK(aw_obj_named_group_release(&mtl), RES_OK); + CHK(aw_obj_load(obj, "test_obj_squares.obj") == RES_OK); + + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 2); + CHK(desc.groups_count == 1); + CHK(desc.smooth_groups_count == 1); + CHK(desc.usemtls_count == 0); + CHK(desc.mtllibs_count == 0); + + CHK(aw_obj_face_get(obj, 0, &face) == RES_OK); + CHK(face.vertex_id == 0); + CHK(face.vertices_count == 4); + CHK(face.group_id == 0); + CHK(face.smooth_group_id == 0); + CHK(face.mtl_id == AW_ID_NONE); + + CHK(aw_obj_vertex_get(obj, 0, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 0.f, 2.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.f, 0.f, 1.f)) == 1); + CHK(aw_obj_vertex_get(obj, 1, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 0.f, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.f, 0.f, 1.f)) == 1); + CHK(aw_obj_vertex_get(obj, 2, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)) == 1); + CHK(aw_obj_vertex_get(obj, 3, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)) == 1); + + CHK(aw_obj_face_get(obj, 1, &face) == RES_OK); + CHK(face.vertex_id == 4); + CHK(face.vertices_count == 4); + CHK(face.group_id == 0); + CHK(face.smooth_group_id == 0); + CHK(face.mtl_id == AW_ID_NONE); + + CHK(aw_obj_vertex_get(obj, 4, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 2.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)) == 1); + CHK(aw_obj_vertex_get(obj, 5, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 2.f, 0.f, 0.f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.276597f, 0.f, 0.960986f)) == 1); + CHK(aw_obj_vertex_get(obj, 6, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 4.f, 0.f, -1.255298f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.531611f, 0.f, 0.846988f)) == 1); + CHK(aw_obj_vertex_get(obj, 7, &vertex) == RES_OK); + CHK(f4_eq(vertex.position, f4(v4, 4.f, 2.f, -1.255298f, 1.f)) == 1); + CHK(f3_eq(vertex.normal, f3(v4, 0.531611f, 0.f, 0.846988f)) == 1); + + CHK(aw_obj_group_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, AW_ID_NONE, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, AW_ID_NONE, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(NULL, 0, &group) == RES_BAD_ARG); + CHK(aw_obj_group_get(obj, 0, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), "all") == 0); + CHK(group.face_id == 0); + CHK(group.faces_count == 2); + + CHK(aw_obj_smooth_group_get(NULL, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(obj, AW_ID_NONE, NULL) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(NULL, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(obj, 0, NULL) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(NULL, AW_ID_NONE, &sgroup) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(obj, AW_ID_NONE, &sgroup) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(NULL, 0, &sgroup) == RES_BAD_ARG); + CHK(aw_obj_smooth_group_get(obj, 0, &sgroup) == RES_OK); + CHK(sgroup.is_smoothed == 1); + CHK(sgroup.face_id == 0); + CHK(sgroup.faces_count == 2); + + CHK(aw_obj_mtl_get(obj, 0, &mtl) == RES_BAD_ARG); + + CHK(aw_obj_named_group_release(&group) == RES_OK); + CHK(aw_obj_named_group_release(&mtl) == RES_OK); } static void @@ -317,84 +317,84 @@ test_cube(struct aw_obj* obj) const char* mtllib; size_t i; - NCHECK(obj, NULL); + CHK(obj != NULL); file = fopen("test_obj_cube.obj", "w+"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(cube_obj, sizeof(char), strlen(cube_obj), file); - CHECK(fseek(file, 0, SEEK_SET), 0); - - CHECK(aw_obj_load_stream(NULL, NULL), RES_BAD_ARG); - CHECK(aw_obj_load_stream(obj, NULL), RES_BAD_ARG); - CHECK(aw_obj_load_stream(NULL, file), RES_BAD_ARG); - CHECK(aw_obj_load_stream(obj, file), RES_OK); - - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 6); - CHECK(desc.groups_count, 6); - CHECK(desc.smooth_groups_count, 0); - CHECK(desc.usemtls_count, 6); - CHECK(desc.mtllibs_count, 3); - - CHECK(aw_obj_clear(NULL), RES_BAD_ARG); - CHECK(aw_obj_clear(obj), RES_OK); - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 0); - CHECK(desc.groups_count, 0); - CHECK(desc.smooth_groups_count, 0); - CHECK(desc.usemtls_count, 0); - CHECK(desc.mtllibs_count, 0); - - CHECK(fseek(file, 0, SEEK_SET), 0); - CHECK(aw_obj_load_stream(obj, file), RES_OK); - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); + CHK(fseek(file, 0, SEEK_SET) == 0); + + CHK(aw_obj_load_stream(NULL, NULL) == RES_BAD_ARG); + CHK(aw_obj_load_stream(obj, NULL) == RES_BAD_ARG); + CHK(aw_obj_load_stream(NULL, file) == RES_BAD_ARG); + CHK(aw_obj_load_stream(obj, file) == RES_OK); + + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 6); + CHK(desc.groups_count == 6); + CHK(desc.smooth_groups_count == 0); + CHK(desc.usemtls_count == 6); + CHK(desc.mtllibs_count == 3); + + CHK(aw_obj_clear(NULL) == RES_BAD_ARG); + CHK(aw_obj_clear(obj) == RES_OK); + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 0); + CHK(desc.groups_count == 0); + CHK(desc.smooth_groups_count == 0); + CHK(desc.usemtls_count == 0); + CHK(desc.mtllibs_count == 0); + + CHK(fseek(file, 0, SEEK_SET) == 0); + CHK(aw_obj_load_stream(obj, file) == RES_OK); + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); FOR_EACH(i, 0, 6) { struct aw_obj_face face; - CHECK(aw_obj_face_get(obj, i, &face), RES_OK); - CHECK(face.vertex_id, i*4); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, i); - CHECK(face.smooth_group_id, AW_ID_NONE); - CHECK(face.mtl_id, i); + CHK(aw_obj_face_get(obj, i, &face) == RES_OK); + CHK(face.vertex_id == i*4); + CHK(face.vertices_count == 4); + CHK(face.group_id == i); + CHK(face.smooth_group_id == AW_ID_NONE); + CHK(face.mtl_id == i); } FOR_EACH(i, 0, 6) { struct aw_obj_named_group group; - CHECK(aw_obj_named_group_init(NULL, &group), RES_OK); - CHECK(aw_obj_group_get(obj, i, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), group_names[i]), 0); - CHECK(group.face_id, i); - CHECK(group.faces_count, 1); - CHECK(aw_obj_named_group_release(&group), RES_OK); + CHK(aw_obj_named_group_init(NULL, &group) == RES_OK); + CHK(aw_obj_group_get(obj, i, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), group_names[i]) == 0); + CHK(group.face_id == i); + CHK(group.faces_count == 1); + CHK(aw_obj_named_group_release(&group) == RES_OK); } FOR_EACH(i, 0, 6) { struct aw_obj_named_group mtl; - CHECK(aw_obj_named_group_init(NULL, &mtl), RES_OK); - CHECK(aw_obj_mtl_get(obj, i, &mtl), RES_OK); - CHECK(strcmp(str_cget(&mtl.name), mtl_names[i]), 0); - CHECK(mtl.face_id, i); - CHECK(mtl.faces_count, 1); - CHECK(aw_obj_named_group_release(&mtl), RES_OK); + CHK(aw_obj_named_group_init(NULL, &mtl) == RES_OK); + CHK(aw_obj_mtl_get(obj, i, &mtl) == RES_OK); + CHK(strcmp(str_cget(&mtl.name), mtl_names[i]) == 0); + CHK(mtl.face_id == i); + CHK(mtl.faces_count == 1); + CHK(aw_obj_named_group_release(&mtl) == RES_OK); } - CHECK(aw_obj_mtllib_get(obj, 0, &mtllib), RES_OK); - CHECK(strcmp(mtllib, "master.mtl"), 0); - CHECK(aw_obj_mtllib_get(obj, 1, &mtllib), RES_OK); - CHECK(strcmp(mtllib, "hop.mtl"), 0); - CHECK(aw_obj_mtllib_get(obj, 2, &mtllib), RES_OK); - CHECK(strcmp(mtllib, "my.mtl"), 0); - CHECK(aw_obj_mtllib_get(obj, 3, &mtllib), RES_BAD_ARG); - - CHECK(aw_obj_purge(NULL), RES_BAD_ARG); - CHECK(aw_obj_purge(obj), RES_OK); - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 0); - CHECK(desc.groups_count, 0); - CHECK(desc.smooth_groups_count, 0); - CHECK(desc.usemtls_count, 0); - CHECK(desc.mtllibs_count, 0); + CHK(aw_obj_mtllib_get(obj, 0, &mtllib) == RES_OK); + CHK(strcmp(mtllib, "master.mtl") == 0); + CHK(aw_obj_mtllib_get(obj, 1, &mtllib) == RES_OK); + CHK(strcmp(mtllib, "hop.mtl") == 0); + CHK(aw_obj_mtllib_get(obj, 2, &mtllib) == RES_OK); + CHK(strcmp(mtllib, "my.mtl") == 0); + CHK(aw_obj_mtllib_get(obj, 3, &mtllib) == RES_BAD_ARG); + + CHK(aw_obj_purge(NULL) == RES_BAD_ARG); + CHK(aw_obj_purge(obj) == RES_OK); + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 0); + CHK(desc.groups_count == 0); + CHK(desc.smooth_groups_count == 0); + CHK(desc.usemtls_count == 0); + CHK(desc.mtllibs_count == 0); fclose(file); } @@ -451,101 +451,101 @@ test_cbox(struct aw_obj* obj) float tmp[3]; FILE* file; - NCHECK(obj, NULL); - CHECK(aw_obj_named_group_init(NULL, &group), RES_OK); - CHECK(aw_obj_named_group_init(NULL, &mtl), RES_OK); + CHK(obj != NULL); + CHK(aw_obj_named_group_init(NULL, &group) == RES_OK); + CHK(aw_obj_named_group_init(NULL, &mtl) == RES_OK); file = fopen("test_cbox.obj", "w+"); - NCHECK(file, NULL); + CHK(file != NULL); fwrite(cbox_obj, sizeof(char), strlen(cbox_obj), file); - CHECK(fseek(file, 0, SEEK_SET), 0); - CHECK(aw_obj_load_stream(obj, file), RES_OK); + CHK(fseek(file, 0, SEEK_SET) == 0); + CHK(aw_obj_load_stream(obj, file) == RES_OK); fclose(file); - CHECK(aw_obj_desc_get(obj, &desc), RES_OK); - CHECK(desc.faces_count, 5); - CHECK(desc.groups_count, 5); - CHECK(desc.smooth_groups_count, 0); - CHECK(desc.usemtls_count, 5); - CHECK(desc.mtllibs_count, 1); - - CHECK(aw_obj_face_get(obj, 0, &face), RES_OK); - CHECK(face.vertex_id, 0); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 0); - CHECK(face.mtl_id, 0); - - CHECK(aw_obj_group_get(obj, 0, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), "floor"), 0); - CHECK(group.face_id, 0); - CHECK(group.faces_count, 1); - - CHECK(aw_obj_mtl_get(obj, 0, &mtl), RES_OK); - CHECK(strcmp(str_cget(&mtl.name), "floor"), 0); - CHECK(mtl.face_id, 0); - CHECK(mtl.faces_count, 1); - - CHECK(aw_obj_vertex_get(obj, 0, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.01f, 0.f, 0.99f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 1, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 0.f, 0.99f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 2, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 0.f, -1.04f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 3, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -0.99f, 0.f, -1.04f), 1.e-6f), 1); - - CHECK(aw_obj_face_get(obj, 1, &face), RES_OK); - CHECK(face.vertex_id, 4); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 1); - CHECK(face.mtl_id, 1); - - CHECK(aw_obj_group_get(obj, 1, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), "ceiling"), 0); - CHECK(group.face_id, 1); - CHECK(group.faces_count, 1); - - CHECK(aw_obj_mtl_get(obj, 1, &mtl), RES_OK); - CHECK(strcmp(str_cget(&mtl.name), "ceiling"), 0); - CHECK(mtl.face_id, 1); - CHECK(mtl.faces_count, 1); - - CHECK(aw_obj_vertex_get(obj, 4, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, 0.99f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 5, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, -1.04f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 6, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 1.99f, -1.04f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 7, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 1.99f, 0.99f), 1.e-6f), 1); - - CHECK(aw_obj_face_get(obj, 4, &face), RES_OK); - CHECK(face.vertex_id, 16); - CHECK(face.vertices_count, 4); - CHECK(face.group_id, 4); - CHECK(face.mtl_id, 4); - - CHECK(aw_obj_group_get(obj, 4, &group), RES_OK); - CHECK(strcmp(str_cget(&group.name), "left"), 0); - CHECK(group.face_id, 4); - CHECK(group.faces_count, 1); - - CHECK(aw_obj_mtl_get(obj, 4, &mtl), RES_OK); - CHECK(strcmp(str_cget(&mtl.name), "left"), 0); - CHECK(mtl.face_id, 4); - CHECK(mtl.faces_count, 1); - - CHECK(aw_obj_vertex_get(obj, 16, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.01f, 0.f, 0.99f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 17, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -0.99f, 0.f, -1.04f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 18, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, -1.04f), 1.e-6f), 1); - CHECK(aw_obj_vertex_get(obj, 19, &vertex), RES_OK); - CHECK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, 0.99f), 1.e-6f), 1); - - CHECK(aw_obj_named_group_release(&group), RES_OK); - CHECK(aw_obj_named_group_release(&mtl), RES_OK); + CHK(aw_obj_desc_get(obj, &desc) == RES_OK); + CHK(desc.faces_count == 5); + CHK(desc.groups_count == 5); + CHK(desc.smooth_groups_count == 0); + CHK(desc.usemtls_count == 5); + CHK(desc.mtllibs_count == 1); + + CHK(aw_obj_face_get(obj, 0, &face) == RES_OK); + CHK(face.vertex_id == 0); + CHK(face.vertices_count == 4); + CHK(face.group_id == 0); + CHK(face.mtl_id == 0); + + CHK(aw_obj_group_get(obj, 0, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), "floor") == 0); + CHK(group.face_id == 0); + CHK(group.faces_count == 1); + + CHK(aw_obj_mtl_get(obj, 0, &mtl) == RES_OK); + CHK(strcmp(str_cget(&mtl.name), "floor") == 0); + CHK(mtl.face_id == 0); + CHK(mtl.faces_count == 1); + + CHK(aw_obj_vertex_get(obj, 0, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.01f, 0.f, 0.99f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 1, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 0.f, 0.99f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 2, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 0.f, -1.04f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 3, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -0.99f, 0.f, -1.04f), 1.e-6f) == 1); + + CHK(aw_obj_face_get(obj, 1, &face) == RES_OK); + CHK(face.vertex_id == 4); + CHK(face.vertices_count == 4); + CHK(face.group_id == 1); + CHK(face.mtl_id == 1); + + CHK(aw_obj_group_get(obj, 1, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), "ceiling") == 0); + CHK(group.face_id == 1); + CHK(group.faces_count == 1); + + CHK(aw_obj_mtl_get(obj, 1, &mtl) == RES_OK); + CHK(strcmp(str_cget(&mtl.name), "ceiling") == 0); + CHK(mtl.face_id == 1); + CHK(mtl.faces_count == 1); + + CHK(aw_obj_vertex_get(obj, 4, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, 0.99f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 5, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, -1.04f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 6, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 1.99f, -1.04f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 7, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, 1.f, 1.99f, 0.99f), 1.e-6f) == 1); + + CHK(aw_obj_face_get(obj, 4, &face) == RES_OK); + CHK(face.vertex_id == 16); + CHK(face.vertices_count == 4); + CHK(face.group_id == 4); + CHK(face.mtl_id == 4); + + CHK(aw_obj_group_get(obj, 4, &group) == RES_OK); + CHK(strcmp(str_cget(&group.name), "left") == 0); + CHK(group.face_id == 4); + CHK(group.faces_count == 1); + + CHK(aw_obj_mtl_get(obj, 4, &mtl) == RES_OK); + CHK(strcmp(str_cget(&mtl.name), "left") == 0); + CHK(mtl.face_id == 4); + CHK(mtl.faces_count == 1); + + CHK(aw_obj_vertex_get(obj, 16, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.01f, 0.f, 0.99f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 17, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -0.99f, 0.f, -1.04f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 18, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, -1.04f), 1.e-6f) == 1); + CHK(aw_obj_vertex_get(obj, 19, &vertex) == RES_OK); + CHK(f3_eq_eps(vertex.position, f3(tmp, -1.02f, 1.99f, 0.99f), 1.e-6f) == 1); + + CHK(aw_obj_named_group_release(&group) == RES_OK); + CHK(aw_obj_named_group_release(&mtl) == RES_OK); } int @@ -557,26 +557,26 @@ main(int argc, char** argv) mem_init_proxy_allocator(&allocator, &mem_default_allocator); - CHECK(aw_obj_create(NULL, NULL, 1, NULL), RES_BAD_ARG); - CHECK(aw_obj_create(NULL, &allocator, 1, NULL), RES_BAD_ARG); - CHECK(aw_obj_create(NULL, NULL, 1, &obj), RES_OK); + CHK(aw_obj_create(NULL, NULL, 1, NULL) == RES_BAD_ARG); + CHK(aw_obj_create(NULL, &allocator, 1, NULL) == RES_BAD_ARG); + CHK(aw_obj_create(NULL, NULL, 1, &obj) == RES_OK); - CHECK(aw_obj_ref_get(NULL), RES_BAD_ARG); - CHECK(aw_obj_ref_get(obj), RES_OK); - CHECK(aw_obj_ref_put(NULL), RES_BAD_ARG); - CHECK(aw_obj_ref_put(obj), RES_OK); - CHECK(aw_obj_ref_put(obj), RES_OK); + CHK(aw_obj_ref_get(NULL) == RES_BAD_ARG); + CHK(aw_obj_ref_get(obj) == RES_OK); + CHK(aw_obj_ref_put(NULL) == RES_BAD_ARG); + CHK(aw_obj_ref_put(obj) == RES_OK); + CHK(aw_obj_ref_put(obj) == RES_OK); - CHECK(aw_obj_create(LOGGER_DEFAULT, &allocator, 1, &obj), RES_OK); + CHK(aw_obj_create(LOGGER_DEFAULT, &allocator, 1, &obj) == RES_OK); test_plane(obj); test_squares(obj); test_cube(obj); test_cbox(obj); FOR_EACH(i, 1, argc) - CHECK(aw_obj_load(obj, argv[i]), RES_OK); + CHK(aw_obj_load(obj, argv[i]) == RES_OK); - CHECK(aw_obj_ref_put(obj), RES_OK); + CHK(aw_obj_ref_put(obj) == RES_OK); if(MEM_ALLOCATED_SIZE(&allocator)) { char dump[512]; @@ -585,7 +585,7 @@ main(int argc, char** argv) FATAL("Memory leaks\n"); } mem_shutdown_proxy_allocator(&allocator); - CHECK(mem_allocated_size(), 0); + CHK(mem_allocated_size() == 0); return 0; }