loader_aw

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

commit 6de6e201f5b182780b4fa4807ebf7cbae6e26b94
parent c145160f3046f4bb9d0c31c24e2bf0db73ab29c6
Author: vaplv <vaplv@free.fr>
Date:   Tue,  6 Jan 2015 15:12:37 +0100

Handle empty group name

Diffstat:
Msrc/aw_obj.c | 6+-----
Msrc/test_aw_obj.c | 18++++++++++++++++--
2 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/src/aw_obj.c b/src/aw_obj.c @@ -300,10 +300,6 @@ parse_group(struct aw_obj* obj, char** word_tk) flush_groups(obj); word = strtok_r(NULL, " \t", word_tk); - if(!word) { - res = RES_BAD_ARG; - goto error; - } ngrps = igrp = darray_named_group_size_get(&obj->groups); obj->igroups_active = ngrps; do { @@ -313,7 +309,7 @@ parse_group(struct aw_obj* obj, char** word_tk) goto error; grp = darray_named_group_data_get(&obj->groups) + ngrps; ++igrp; - res = str_set(&grp->name, word); + res = str_set(&grp->name, word ? word : "default"); if(res != RES_OK) goto error; grp->iface = darray_face_size_get(&obj->faces); diff --git a/src/test_aw_obj.c b/src/test_aw_obj.c @@ -28,6 +28,7 @@ test_plane(struct aw_obj* obj) static const char* plane_obj = "mtllib master.mtl" "\n" + "g\n" "v 0.0000 2.0000 0.0000\n" "v 0.0000 0.0000 0.0000\n" "v 2.0000 0.0000 0.0000\n" @@ -44,6 +45,7 @@ test_plane(struct aw_obj* obj) float v4[4]; struct aw_obj_desc desc; struct aw_obj_face face; + struct aw_obj_group group; struct aw_obj_mtl mtl; struct aw_obj_vertex vertex; FILE* file; @@ -67,7 +69,7 @@ test_plane(struct aw_obj* obj) 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, 0); + CHECK(desc.groups_count, 1); CHECK(desc.smooth_groups_count, 0); CHECK(desc.usemtls_count, 1); CHECK(desc.mtllibs_count, 1); @@ -82,7 +84,7 @@ test_plane(struct aw_obj* obj) CHECK(aw_obj_face_get(obj, 0, &face), RES_OK); CHECK(face.vertex_id, 0); CHECK(face.vertices_count, 4); - CHECK(face.group_id, AW_ID_NONE); + CHECK(face.group_id, 0); CHECK(face.smooth_group_id, AW_ID_NONE); CHECK(face.mtl_id, 0); @@ -128,6 +130,18 @@ test_plane(struct aw_obj* obj) 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(group.name, "default"), 0); + CHECK(group.face_id, 0); + CHECK(group.faces_count, 1); } static void