mirror of
https://github.com/alexandrebobkov/ESP-Nodes.git
synced 2025-09-30 22:51:06 +00:00
Rainmaker Lights Switch
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
idf_component_register(SRCS test_json_parser.c
|
||||
PRIV_REQUIRES json_parser unity)
|
@@ -0,0 +1,61 @@
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "json_parser.h"
|
||||
#include "unity.h"
|
||||
|
||||
#define json_test_str "{\n\"str_val\" : \"JSON Parser\",\n" \
|
||||
"\t\"float_val\" : 2.0,\n" \
|
||||
"\"int_val\" : 2017,\n" \
|
||||
"\"bool_val\" : false,\n" \
|
||||
"\"supported_el\" :\t [\"bool\",\"int\","\
|
||||
"\"float\",\"str\"" \
|
||||
",\"object\",\"array\"],\n" \
|
||||
"\"features\" : { \"objects\":true, "\
|
||||
"\"arrays\":\"yes\"},\n"\
|
||||
"\"int_64\":109174583252}"
|
||||
|
||||
TEST_CASE("json_parser basic tests", "[json_parser]")
|
||||
{
|
||||
jparse_ctx_t jctx;
|
||||
int ret = json_parse_start(&jctx, json_test_str, strlen(json_test_str));
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, ret);
|
||||
|
||||
char str_val[64];
|
||||
int int_val, num_elem;
|
||||
int64_t int64_val;
|
||||
bool bool_val;
|
||||
float float_val;
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_string(&jctx, "str_val", str_val, sizeof(str_val)));
|
||||
TEST_ASSERT_EQUAL_STRING("JSON Parser", str_val);
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_float(&jctx, "float_val", &float_val));
|
||||
TEST_ASSERT(fabs(float_val - 2.0f) < 0.0001f)
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_int(&jctx, "int_val", &int_val));
|
||||
TEST_ASSERT_EQUAL_INT(2017, int_val);
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_bool(&jctx, "bool_val", &bool_val));
|
||||
TEST_ASSERT_EQUAL(false, bool_val);
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_array(&jctx, "supported_el", &num_elem));
|
||||
const char *expected_values[] = {"bool", "int", "float", "str", "object", "array"};
|
||||
TEST_ASSERT_EQUAL(sizeof(expected_values) / sizeof(expected_values[0]), num_elem);
|
||||
for (int i = 0; i < num_elem; ++i) {
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_arr_get_string(&jctx, i, str_val, sizeof(str_val)));
|
||||
TEST_ASSERT_EQUAL_STRING(expected_values[i], str_val);
|
||||
}
|
||||
json_obj_leave_array(&jctx);
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_object(&jctx, "features"));
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_bool(&jctx, "objects", &bool_val));
|
||||
TEST_ASSERT_EQUAL(true, bool_val);
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_string(&jctx, "arrays", str_val, sizeof(str_val)));
|
||||
TEST_ASSERT_EQUAL_STRING("yes", str_val);
|
||||
json_obj_leave_object(&jctx);
|
||||
|
||||
TEST_ASSERT_EQUAL(OS_SUCCESS, json_obj_get_int64(&jctx, "int_64", &int64_val));
|
||||
TEST_ASSERT(int64_val == 109174583252);
|
||||
|
||||
json_parse_end(&jctx);
|
||||
}
|
Reference in New Issue
Block a user