Compare commits
3 commits
05c45bbc81
...
905251e586
| Author | SHA1 | Date | |
|---|---|---|---|
| 905251e586 | |||
| 932b593a58 | |||
| de2dd71bf3 |
6 changed files with 292 additions and 75 deletions
|
|
@ -26,6 +26,7 @@
|
||||||
pkg-config
|
pkg-config
|
||||||
clang-tools
|
clang-tools
|
||||||
ctags
|
ctags
|
||||||
|
valgrind
|
||||||
];
|
];
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|
|
||||||
2
json.c
2
json.c
|
|
@ -117,7 +117,7 @@ void json_add_long(Json* json, long value)
|
||||||
void json_add_double(Json* json, double value)
|
void json_add_double(Json* json, double value)
|
||||||
{
|
{
|
||||||
begin_value(json);
|
begin_value(json);
|
||||||
fprintf(json->stream, "%f", value);
|
fprintf(json->stream, "%g", value);
|
||||||
end_value(json);
|
end_value(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,28 +7,35 @@ FetchContent_Declare(
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(Unity)
|
FetchContent_MakeAvailable(Unity)
|
||||||
|
|
||||||
add_executable(
|
list(
|
||||||
json_test
|
APPEND JSON_TESTS
|
||||||
json_test.c
|
json_tests_simple
|
||||||
)
|
json_tests_array
|
||||||
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)
|
add_test(NAME ${JSON_TEST} COMMAND ${JSON_TEST})
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include <unity.h>
|
|
||||||
|
|
||||||
#include <json.h>
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
|
|
||||||
158
tests/json_tests_array.c
Normal file
158
tests/json_tests_array.c
Normal file
|
|
@ -0,0 +1,158 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <unity.h>
|
||||||
|
|
||||||
|
#include <json.h>
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
103
tests/json_tests_simple.c
Normal file
103
tests/json_tests_simple.c
Normal file
|
|
@ -0,0 +1,103 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <unity.h>
|
||||||
|
|
||||||
|
#include <json.h>
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue