Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit a43236b

Browse files
authored
V1.1 (#3)
Switched to [µnit](https://nemequ.github.io/munit/) for unit tests.
1 parent 3ac96fe commit a43236b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+5071
-1799
lines changed

CMakeLists.txt

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,54 +31,35 @@ add_custom_target(doc
3131
COMMENT "Generating API documentation with Doxygen"
3232
VERBATIM )
3333

34-
set(TINY_PDS_TEST_SOURCE_FILES test/utils.c test/test.c)
35-
3634
enable_testing()
3735

36+
add_library(munit STATIC ${CMAKE_CURRENT_SOURCE_DIR}/test/munit/munit.c)
37+
target_include_directories(munit PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/test/munit>)
38+
set_property(TARGET munit PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/test/munit>)
39+
3840
include_directories(.)
39-
add_executable(PDS_find_first test/PDS_find_first.c ${TINY_PDS_TEST_SOURCE_FILES})
40-
add_executable(PDS_parse_datetime test/PDS_parse_datetime.c ${TINY_PDS_TEST_SOURCE_FILES})
41-
add_executable(PDS_parse_identifier test/PDS_parse_identifier.c ${TINY_PDS_TEST_SOURCE_FILES})
42-
add_executable(PDS_parse_int_base test/PDS_parse_int_base.c ${TINY_PDS_TEST_SOURCE_FILES})
43-
add_executable(PDS_parse_int test/PDS_parse_int.c ${TINY_PDS_TEST_SOURCE_FILES})
44-
add_executable(PDS_parse_real test/PDS_parse_real.c ${TINY_PDS_TEST_SOURCE_FILES})
45-
add_executable(PDS_parse_sequence test/PDS_parse_sequence.c ${TINY_PDS_TEST_SOURCE_FILES})
46-
add_executable(PDS_parse_set test/PDS_parse_set.c ${TINY_PDS_TEST_SOURCE_FILES})
47-
add_executable(PDS_parse_statement test/PDS_parse_statement.c ${TINY_PDS_TEST_SOURCE_FILES})
48-
add_executable(PDS_parse_string test/PDS_parse_string.c ${TINY_PDS_TEST_SOURCE_FILES})
49-
add_executable(PDS_parse_symbol test/PDS_parse_symbol.c ${TINY_PDS_TEST_SOURCE_FILES})
50-
add_executable(PDS_parse_unit test/PDS_parse_unit.c ${TINY_PDS_TEST_SOURCE_FILES})
51-
add_executable(PDS_skip_whitespaces test/PDS_skip_whitespaces.c ${TINY_PDS_TEST_SOURCE_FILES})
52-
add_executable(PDS_string_case_compare test/PDS_string_case_compare.c ${TINY_PDS_TEST_SOURCE_FILES})
53-
add_executable(PDS_string_compare test/PDS_string_compare.c ${TINY_PDS_TEST_SOURCE_FILES})
54-
add_executable(PDS_trim test/PDS_trim.c ${TINY_PDS_TEST_SOURCE_FILES})
55-
add_executable(PDS_parse test/PDS_parse.c ${TINY_PDS_TEST_SOURCE_FILES})
56-
57-
add_executable(PDS_DOM_parse test/PDS_DOM_parse.c ${TINY_PDS_TEST_SOURCE_FILES})
41+
42+
add_executable(PDS_string_tests test/PDS_string_tests.c)
43+
target_link_libraries(PDS_string_tests munit)
44+
45+
add_executable(PDS_parse_tests test/PDS_parse_tests.c)
46+
target_link_libraries(PDS_parse_tests munit)
47+
48+
add_executable(PDS_parse test/PDS_parse.c test/utils.c)
49+
50+
add_executable(PDS_DOM_parse test/PDS_DOM_parse.c test/utils.c)
5851
target_link_libraries(PDS_DOM_parse tinypds)
5952

60-
add_executable(PDS_DOM_find test/PDS_DOM_find.c ${TINY_PDS_TEST_SOURCE_FILES})
61-
target_link_libraries(PDS_DOM_find tinypds tinypds_dom)
62-
63-
add_test(PDS_find_first PDS_find_first )
64-
add_test(PDS_parse_datetime PDS_parse_datetime)
65-
add_test(PDS_parse_identifier PDS_parse_identifier)
66-
add_test(PDS_parse_int_base PDS_parse_int_base)
67-
add_test(PDS_parse_int PDS_parse_int)
68-
add_test(PDS_parse_real PDS_parse_real)
69-
add_test(PDS_parse_sequence PDS_parse_sequence)
70-
add_test(PDS_parse_set PDS_parse_set)
71-
add_test(PDS_parse_statement PDS_parse_statement)
72-
add_test(PDS_parse_string PDS_parse_string)
73-
add_test(PDS_parse_symbol PDS_parse_symbol)
74-
add_test(PDS_parse_unit PDS_parse_unit)
75-
add_test(PDS_skip_whitespaces PDS_skip_whitespaces)
76-
add_test(PDS_string_case_compare PDS_string_case_compare)
77-
add_test(PDS_string_compare PDS_string_compare)
78-
add_test(PDS_trim PDS_trim)
53+
add_executable(PDS_DOM_find test/PDS_DOM_find.c)
54+
target_link_libraries(PDS_DOM_find tinypds_dom tinypds munit)
55+
56+
add_test(PDS_string_tests PDS_string_tests)
57+
add_test(PDS_parse_tests PDS_parse_tests)
7958
add_test(PDS_parse_GASPRA_SUMM_RTN.LBL PDS_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/GASPRA_SUMM_RTN.LBL)
8059
add_test(PDS_parse_LOR_0034851929_0X630_ENG_1.LBL PDS_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/LOR_0034851929_0X630_ENG_1.LBL)
8160
add_test(PDS_parse_W20140403T020157750ID20F12.IMG PDS_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/W20140403T020157750ID20F12.IMG)
61+
add_test(PDS_parse_AMI_LR3_R00976_00031_00040.IMG PDS_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/AMI_LR3_R00976_00031_00040.IMG)
62+
8263
add_test(PDS_DOM_parse_W20140403T020157750ID20F12.IMG PDS_DOM_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/W20140403T020157750ID20F12.IMG)
8364
add_test(PDS_DOM_parse_0844636876_lvl1_0.lbl PDS_DOM_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/0844636876_lvl1_0.lbl)
8465
add_test(PDS_DOM_parse_hayabusa_20050907_20050908_v01.lbl PDS_DOM_parse ${CMAKE_CURRENT_SOURCE_DIR}/test/data/hayabusa_20050907_20050908_v01.lbl)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,4 +301,4 @@ Finally the parsing is started by calling **PDS_parse**. An implementation examp
301301
302302
## License ##
303303
The MIT License
304-
Copyright (c) 2016 Vincent Cruz
304+
Copyright (c) 2018 Vincent Cruz

examples/rosetta/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
99
find_package(CFITSIO)
1010

1111
include_directories(${CFITSIO_INCLUDE_DIR} ../..)
12+
include_directories(${CFITSIO_INCLUDE_DIR} ../../dom)
1213

1314
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wshadow -Wextra")
1415

test/PDS_DOM_find.c

Lines changed: 116 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
#include <stdio.h>
2-
#include <stdlib.h>
3-
#include <string.h>
1+
#include <munit.h>
42

53
#include <tinypds.h>
64
#include <tinypds_dom.h>
75

8-
#include "test.h"
9-
106
static const char *pds_string =
117
"PDS_VERSION_ID = PDS3\r\n"
128
"OBJECT = object_0\r\n"
@@ -45,104 +41,122 @@ static const char *pds_string =
4541
"ATTRIBUTE_8 = 14\r\n"
4642
"END\r\n";
4743

48-
PDS_item *item = NULL;
44+
static void* pds_dom_setup(const MunitParameter params[], void* user_data) {
45+
(void)params;
46+
(void)user_data;
47+
return malloc(sizeof(PDS_item**));
48+
}
4949

50-
void cleanup()
51-
{
52-
if(item)
53-
{
54-
PDS_DOM_delete(item);
55-
}
50+
static void pds_dom_tear_down(void* fixture) {
51+
if(NULL == fixture) {
52+
return;
53+
}
54+
PDS_item **item = (PDS_item**)fixture;
55+
if(*item) {
56+
PDS_DOM_delete(*item);
57+
}
58+
free(item);
5659
}
5760

58-
int main()
59-
{
60-
PDS_item *found;
61-
PDS_scalar scalar;
62-
PDS_error_description err;
63-
int ret;
64-
65-
atexit(cleanup);
66-
67-
ret = PDS_DOM_parse(pds_string, strlen(pds_string), &item, &err);
68-
if(!ret)
69-
{
70-
fprintf(stderr, "parse error line %d:%d: %s\n", err.number, err.position, err.msg);
71-
return EXIT_FAILURE;
72-
}
73-
74-
found = PDS_DOM_find("ATTRIBUTE_0", item, PDS_ONLY_SIBLINGS, 0);
75-
check(NULL != found);
76-
check(PDS_DOM_is_attribute(found));
77-
check(PDS_SINGLE == PDS_DOM_scalar_typeof(found));
78-
79-
ret = PDS_DOM_scalar_get(found, &scalar);
80-
check(ret);
81-
check(PDS_INTEGER_VALUE == scalar.type);
82-
check(13 == scalar.integer.value);
83-
84-
found = PDS_DOM_find("ATTRIBUTE_8", found, PDS_ONLY_SIBLINGS, 0);
85-
check(NULL != found);
86-
check(PDS_DOM_is_attribute(found));
87-
check(PDS_SINGLE == PDS_DOM_scalar_typeof(found));
88-
89-
ret = PDS_DOM_scalar_get(found, &scalar);
90-
check(ret);
91-
check(PDS_INTEGER_VALUE == scalar.type);
92-
check(14 == scalar.integer.value);
93-
94-
found = PDS_DOM_find("ATTRIBUTE_1", item, PDS_ONLY_SIBLINGS, 1);
95-
check(NULL == found);
96-
97-
found = PDS_DOM_find("PDS_VERSION_ID", item, PDS_ONLY_SIBLINGS, 1);
98-
check(NULL != found);
99-
100-
found = PDS_DOM_find("ATTRIBUTE_8", item, PDS_ONLY_CHILDREN, 0);
101-
check(NULL == found);
102-
103-
found = PDS_DOM_find("object_0", item, PDS_ONLY_SIBLINGS, 0);
104-
check(NULL != found);
105-
check(PDS_DOM_is_object(found));
106-
107-
check(NULL == PDS_DOM_find("ATTRIBUTE_8", found, PDS_ONLY_CHILDREN, 0));
108-
109-
found = PDS_DOM_find("object_1", found, PDS_ONLY_CHILDREN, 0);
110-
check(NULL != found);
111-
check(PDS_DOM_is_object(found));
112-
113-
found = PDS_DOM_find("ATTRIBUTE_8", found, PDS_CHILDREN_RECURSIVE, 0);
114-
check(NULL != found);
115-
check(PDS_DOM_is_attribute(found));
116-
check(PDS_SINGLE == PDS_DOM_scalar_typeof(found));
117-
118-
ret = PDS_DOM_scalar_get(found, &scalar);
119-
check(ret);
120-
check(PDS_INTEGER_VALUE == scalar.type);
121-
check(8 == scalar.integer.value);
122-
123-
found = PDS_DOM_find("ATTRIBUTE_E", item, PDS_SIBLINGS_RECURSIVE, 1);
124-
check(NULL != found);
125-
check(PDS_DOM_is_attribute(found));
126-
check(PDS_SINGLE == PDS_DOM_scalar_typeof(found));
127-
128-
ret = PDS_DOM_scalar_get(found, &scalar);
129-
check(ret);
130-
check(PDS_INTEGER_VALUE == scalar.type);
131-
check(16 == scalar.integer.value);
132-
133-
found = PDS_DOM_find("ATTRIBUTE_2", item, PDS_SIBLINGS_RECURSIVE, 0);
134-
check(NULL != found);
135-
check(PDS_DOM_is_attribute(found));
136-
check(PDS_SINGLE == PDS_DOM_scalar_typeof(found));
137-
138-
ret = PDS_DOM_scalar_get(found, &scalar);
139-
check(ret);
140-
check(PDS_INTEGER_VALUE == scalar.type);
141-
check(2 == scalar.integer.value);
142-
143-
found = PDS_DOM_find("object_3", found, PDS_SIBLINGS_RECURSIVE, 0);
144-
check(NULL != found);
145-
check(PDS_DOM_is_object(found));
146-
147-
return EXIT_SUCCESS;
61+
MunitResult pds_dom_find_test(const MunitParameter params[], void* fixture) {
62+
(void)params;
63+
PDS_item **item = (PDS_item**)fixture;
64+
PDS_item *found;
65+
PDS_scalar scalar;
66+
PDS_error_description err;
67+
int ret;
68+
69+
ret = PDS_DOM_parse(pds_string, strlen(pds_string), item, &err);
70+
if(!ret) {
71+
munit_errorf("parse error line %d:%d: %s\n", err.number, err.position, err.msg);
72+
return MUNIT_FAIL;
73+
}
74+
75+
found = PDS_DOM_find("ATTRIBUTE_0", *item, PDS_ONLY_SIBLINGS, 0);
76+
munit_assert_ptr_not_equal(NULL, found);
77+
munit_assert_true(PDS_DOM_is_attribute(found));
78+
munit_assert_int(PDS_SINGLE, ==, PDS_DOM_scalar_typeof(found));
79+
80+
ret = PDS_DOM_scalar_get(found, &scalar);
81+
munit_assert_true(ret);
82+
munit_assert_int(PDS_INTEGER_VALUE, ==, scalar.type);
83+
munit_assert_int(13, ==, scalar.integer.value);
84+
85+
found = PDS_DOM_find("ATTRIBUTE_8", found, PDS_ONLY_SIBLINGS, 0);
86+
munit_assert_ptr_not_equal(NULL, found);
87+
munit_assert_true(PDS_DOM_is_attribute(found));
88+
munit_assert_int(PDS_SINGLE, ==, PDS_DOM_scalar_typeof(found));
89+
90+
ret = PDS_DOM_scalar_get(found, &scalar);
91+
munit_assert_true(ret);
92+
munit_assert_int(PDS_INTEGER_VALUE, ==, scalar.type);
93+
munit_assert_int(14, ==, scalar.integer.value);
94+
95+
found = PDS_DOM_find("ATTRIBUTE_1", *item, PDS_ONLY_SIBLINGS, 1);
96+
munit_assert_ptr_equal(NULL, found);
97+
98+
found = PDS_DOM_find("PDS_VERSION_ID", *item, PDS_ONLY_SIBLINGS, 1);
99+
munit_assert_ptr_not_equal(NULL, found);
100+
101+
found = PDS_DOM_find("ATTRIBUTE_8", *item, PDS_ONLY_CHILDREN, 0);
102+
munit_assert_ptr_equal(NULL, found);
103+
104+
found = PDS_DOM_find("object_0", *item, PDS_ONLY_SIBLINGS, 0);
105+
munit_assert_ptr_not_equal(NULL, found);
106+
munit_assert_true(PDS_DOM_is_object(found));
107+
108+
munit_assert_ptr_equal(NULL, PDS_DOM_find("ATTRIBUTE_8", found, PDS_ONLY_CHILDREN, 0));
109+
110+
found = PDS_DOM_find("object_1", found, PDS_ONLY_CHILDREN, 0);
111+
munit_assert_ptr_not_equal(NULL, found);
112+
munit_assert_true(PDS_DOM_is_object(found));
113+
114+
found = PDS_DOM_find("ATTRIBUTE_8", found, PDS_CHILDREN_RECURSIVE, 0);
115+
munit_assert_ptr_not_equal(NULL, found);
116+
munit_assert_true(PDS_DOM_is_attribute(found));
117+
munit_assert_int(PDS_SINGLE, ==, PDS_DOM_scalar_typeof(found));
118+
119+
ret = PDS_DOM_scalar_get(found, &scalar);
120+
munit_assert_true(ret);
121+
munit_assert_int(PDS_INTEGER_VALUE, ==, scalar.type);
122+
munit_assert_int(8, ==, scalar.integer.value);
123+
124+
found = PDS_DOM_find("ATTRIBUTE_E", *item, PDS_SIBLINGS_RECURSIVE, 1);
125+
munit_assert_ptr_not_equal(NULL, found);
126+
munit_assert_true(PDS_DOM_is_attribute(found));
127+
munit_assert_int(PDS_SINGLE, ==, PDS_DOM_scalar_typeof(found));
128+
129+
ret = PDS_DOM_scalar_get(found, &scalar);
130+
munit_assert_true(ret);
131+
munit_assert_int(PDS_INTEGER_VALUE, ==, scalar.type);
132+
munit_assert_int(16, ==, scalar.integer.value);
133+
134+
found = PDS_DOM_find("ATTRIBUTE_2", *item, PDS_SIBLINGS_RECURSIVE, 0);
135+
munit_assert_ptr_not_equal(NULL, found);
136+
munit_assert_true(PDS_DOM_is_attribute(found));
137+
munit_assert_int(PDS_SINGLE, ==, PDS_DOM_scalar_typeof(found));
138+
139+
ret = PDS_DOM_scalar_get(found, &scalar);
140+
munit_assert_true(ret);
141+
munit_assert_int(PDS_INTEGER_VALUE, ==, scalar.type);
142+
munit_assert_int(2, ==, scalar.integer.value);
143+
144+
found = PDS_DOM_find("object_3", found, PDS_SIBLINGS_RECURSIVE, 0);
145+
munit_assert_ptr_not_equal(NULL, found);
146+
munit_assert_true(PDS_DOM_is_object(found));
147+
148+
return MUNIT_OK;
148149
}
150+
151+
static MunitTest pds_dom_tests[] = {
152+
{ "find", pds_dom_find_test, pds_dom_setup, pds_dom_tear_down, MUNIT_TEST_OPTION_NONE, NULL },
153+
{ NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }
154+
};
155+
156+
static const MunitSuite pds_dom_suite = {
157+
"PDS DOM test suite", pds_dom_tests, NULL, 1, MUNIT_SUITE_OPTION_NONE
158+
};
159+
160+
int main (int argc, char* const* argv) {
161+
return munit_suite_main(&pds_dom_suite, NULL, argc, argv);
162+
}

0 commit comments

Comments
 (0)