aboutsummaryrefslogtreecommitdiff
path: root/test_json.c
diff options
context:
space:
mode:
authorMartin Kagamino Lehoux <martin@lehoux.net>2025-07-21 14:26:06 +0200
committerMartin Kagamino Lehoux <martin@lehoux.net>2025-07-21 14:26:06 +0200
commit88eb8c969f6abe119994c7ab307b9be58ff076a5 (patch)
tree3a8fed52b29bdf12f5a6ac65393df8abb0c8f437 /test_json.c
parenta378ff1b173f7a67272e574fb1a2c275ecb9661b (diff)
feat: JSON object parsing
Diffstat (limited to 'test_json.c')
-rw-r--r--test_json.c36
1 files changed, 31 insertions, 5 deletions
diff --git a/test_json.c b/test_json.c
index 751b5bd..e187b62 100644
--- a/test_json.c
+++ b/test_json.c
@@ -1,5 +1,6 @@
#include "json.h"
#include "testing.h"
+#include <stdio.h>
char test_json_integer() {
Arena perm = Arena_new(128e3);
@@ -7,7 +8,7 @@ char test_json_integer() {
JSON json_int = JSON_parse(&perm, "123");
t_assert(*json_int.integer == 123);
- t_assert(Arena_get_used(perm) == 28);
+ t_assert_equal(Arena_get_used(perm), 36);
return 0;
}
@@ -17,7 +18,7 @@ char test_json_int_array() {
JSON json_int_array = JSON_parse(&perm, "[1,2,3]");
t_assert(json_int_array.integer == NULL);
- t_assert(json_int_array.array->len == 3);
+ t_assert_equal(json_int_array.array->len, 3);
int ints[3];
int sum = 0;
for (int i = 0; i < json_int_array.array->len; i++) {
@@ -29,7 +30,7 @@ char test_json_int_array() {
t_assert(ints[1] == 2);
t_assert(ints[2] == 3);
t_assert(sum == 6);
- t_assert(Arena_get_used(perm) == 264);
+ t_assert_equal(Arena_get_used(perm), 344);
return 0;
}
@@ -46,7 +47,7 @@ char test_json_nested_array() {
Str str = *val_2.string;
Str expected = S("abc");
t_assert(Str_equals(str, expected));
- t_assert(Arena_get_used(perm) == 203);
+ t_assert_equal(Arena_get_used(perm), 267);
return 0;
}
@@ -57,7 +58,32 @@ char test_json_string() {
JSON js = JSON_parse(&perm, "\"abc\"");
t_assert(Str_equals(*js.string, S("abc")));
- t_assert(Arena_get_used(perm) == 27);
+ t_assert_equal(Arena_get_used(perm), 35);
return 0;
}
+
+char test_json_empty_object() {
+ Arena perm = Arena_new(128e3);
+
+ JSON doc = JSON_parse(&perm, "{}");
+
+ t_assert_equal(doc.object->len, 0);
+ t_assert_equal(Arena_get_used(perm), 216);
+
+ return 0;
+}
+
+char test_json_object() {
+ Arena perm = Arena_new(128e3);
+
+ JSON doc = JSON_parse(&perm, "{\"key\": \"value\"}");
+
+ t_assert_equal(Arena_get_used(perm), 261);
+ t_assert_equal(doc.object->len, 1);
+ t_assert(Str_equals(*Vec_get(&doc.object->keys, Str, 0), S("key")));
+ t_assert(Str_equals(*JSONObject_get(doc.object, S("key"))->string, S("value")))
+ t_assert_equal(Arena_get_used(perm), 261);
+
+ return 0;
+}