diff --git a/flake.nix b/flake.nix index a614e1f..b2df353 100644 --- a/flake.nix +++ b/flake.nix @@ -26,7 +26,6 @@ pkg-config clang-tools ctags - valgrind ]; in { diff --git a/json.c b/json.c index 01b018c..f3062b3 100644 --- a/json.c +++ b/json.c @@ -117,7 +117,7 @@ void json_add_long(Json* json, long value) void json_add_double(Json* json, double value) { begin_value(json); - fprintf(json->stream, "%g", value); + fprintf(json->stream, "%f", value); end_value(json); } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 57380c7..39b5967 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -7,35 +7,28 @@ FetchContent_Declare( ) FetchContent_MakeAvailable(Unity) -list( - APPEND JSON_TESTS - json_tests_simple - json_tests_array +add_executable( + json_test + json_test.c +) +set_target_properties( + json_test + PROPERTIES + C_STANDARD 23 + C_STANDARD_REQUIRED ON + C_EXTENSIONS OFF +) +target_link_libraries( + json_test + PRIVATE + json + unity::framework +) +target_include_directories( + json_test + PRIVATE + ${CMAKE_SOURCE_DIR} ) -foreach(JSON_TEST IN LISTS JSON_TESTS) - add_executable( - ${JSON_TEST} - ${JSON_TEST}.c - ) - set_target_properties( - ${JSON_TEST} - PROPERTIES - C_STANDARD 23 - C_STANDARD_REQUIRED ON - C_EXTENSIONS OFF - ) - target_link_libraries( - ${JSON_TEST} - PRIVATE - json - unity::framework - ) - target_include_directories( - ${JSON_TEST} - PRIVATE - ${CMAKE_SOURCE_DIR} - ) - add_test(NAME ${JSON_TEST} COMMAND ${JSON_TEST}) -endforeach() +add_test(NAME json_test COMMAND json_test) diff --git a/tests/json_test.c b/tests/json_test.c new file mode 100644 index 0000000..37cc98f --- /dev/null +++ b/tests/json_test.c @@ -0,0 +1,52 @@ +#include +#include + +#include + +#include + +static FILE* tmp = nullptr; +static char buffer[256]; + +static Json json; + +void setUp() +{ + tmp = tmpfile(); + TEST_ASSERT_NOT_NULL(tmp); + + json = json_init(tmp, MINIFIED); +} + +void tearDown() +{ + json_free(&json); + + if (tmp) { + fclose(tmp); + tmp = nullptr; + } +} + +void test_json_add_string() +{ + json_add_string(&json, "string"); + fflush(tmp); + rewind(tmp); + + char buffer[256]; + auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); + buffer[n] = '\0'; + + TEST_ASSERT_EQUAL_STRING("\"string\"", buffer); +} + +int main() +{ + UNITY_BEGIN(); + { + RUN_TEST(test_json_add_string); + } + return UNITY_END(); +} + diff --git a/tests/json_tests_array.c b/tests/json_tests_array.c deleted file mode 100644 index 06c2300..0000000 --- a/tests/json_tests_array.c +++ /dev/null @@ -1,158 +0,0 @@ -#include -#include - -#include - -#include - -static FILE* tmp = nullptr; -static char buffer[256]; - -static Json json; - -void setUp() -{ - tmp = tmpfile(); - TEST_ASSERT_NOT_NULL(tmp); - - json = json_init(tmp, MINIFIED); -} - -void tearDown() -{ - json_free(&json); - - if (tmp) { - fclose(tmp); - tmp = nullptr; - } -} - -void test_json_array_empty() -{ - json_begin_array(&json); - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[]", buffer); -} - -void test_json_array_string() -{ - json_begin_array(&json); - { - json_add_string(&json, "string"); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[\"string\"]", buffer); -} - -void test_json_array_long() -{ - json_begin_array(&json); - { - json_add_long(&json, 42); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[42]", buffer); -} - -void test_json_array_double() -{ - json_begin_array(&json); - { - json_add_double(&json, 3.14); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[3.14]", buffer); -} - -void test_json_array_bool() -{ - json_begin_array(&json); - { - json_add_bool(&json, true); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[true]", buffer); -} - -void test_json_array_null() -{ - json_begin_array(&json); - { - json_add_null(&json); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[null]", buffer); -} - -void test_json_array_mixed() -{ - json_begin_array(&json); - { - json_add_string(&json, "string"); - json_add_long(&json, 42); - json_add_double(&json, 3.14); - json_add_bool(&json, true); - json_add_null(&json); - } - json_end_array(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("[\"string\",42,3.14,true,null]", buffer); -} - -int main() -{ - UNITY_BEGIN(); - { - RUN_TEST(test_json_array_empty); - RUN_TEST(test_json_array_string); - RUN_TEST(test_json_array_long); - RUN_TEST(test_json_array_double); - RUN_TEST(test_json_array_bool); - RUN_TEST(test_json_array_null); - RUN_TEST(test_json_array_mixed); - } - return UNITY_END(); -} - diff --git a/tests/json_tests_simple.c b/tests/json_tests_simple.c deleted file mode 100644 index b9b1feb..0000000 --- a/tests/json_tests_simple.c +++ /dev/null @@ -1,103 +0,0 @@ -#include -#include - -#include - -#include - -static FILE* tmp = nullptr; -static char buffer[256]; - -static Json json; - -void setUp() -{ - tmp = tmpfile(); - TEST_ASSERT_NOT_NULL(tmp); - - json = json_init(tmp, MINIFIED); -} - -void tearDown() -{ - json_free(&json); - - if (tmp) { - fclose(tmp); - tmp = nullptr; - } -} - -void test_json_add_string() -{ - json_add_string(&json, "string"); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("\"string\"", buffer); -} - -void test_json_add_long() -{ - json_add_long(&json, 42); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("42", buffer); -} - -void test_json_add_double() -{ - json_add_double(&json, 3.14); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("3.14", buffer); -} - -void test_json_add_bool() -{ - json_add_bool(&json, true); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("true", buffer); -} - -void test_json_add_null() -{ - json_add_null(&json); - fflush(tmp); - rewind(tmp); - - auto n = fread(buffer, 1, sizeof(buffer) - 1, tmp); - buffer[n] = '\0'; - - TEST_ASSERT_EQUAL_STRING("null", buffer); -} - -int main() -{ - UNITY_BEGIN(); - { - RUN_TEST(test_json_add_string); - RUN_TEST(test_json_add_long); - RUN_TEST(test_json_add_double); - RUN_TEST(test_json_add_bool); - RUN_TEST(test_json_add_null); - } - return UNITY_END(); -} -