Skip to content

Commit f4fdbf2

Browse files
committed
test: test lengths
Test lengths for auto and static mode
1 parent 2da4e81 commit f4fdbf2

File tree

2 files changed

+75
-22
lines changed

2 files changed

+75
-22
lines changed

test/test.c

+24-7
Original file line numberDiff line numberDiff line change
@@ -18,38 +18,53 @@ check_valid_singles(void)
1818
ASSERT_EQm(buf, JSONB_OK, jsonb_array(&b, buf, sizeof(buf)));
1919
ASSERT_EQm(buf, JSONB_END, jsonb_array_pop(&b, buf, sizeof(buf)));
2020
ASSERT_STR_EQ("[]", buf);
21+
ASSERT_EQ(sizeof("[]") - 1, b.pos);
22+
ASSERT_EQ(sizeof("[]") - 1, strlen(buf));
2123

2224
jsonb_init(&b);
2325
ASSERT_EQm(buf, JSONB_OK, jsonb_object(&b, buf, sizeof(buf)));
2426
ASSERT_EQm(buf, JSONB_END, jsonb_object_pop(&b, buf, sizeof(buf)));
2527
ASSERT_STR_EQ("{}", buf);
28+
ASSERT_EQ(sizeof("{}") - 1, b.pos);
29+
ASSERT_EQ(sizeof("{}") - 1, strlen(buf));
2630

2731
jsonb_init(&b);
2832
ASSERT_EQm(buf, JSONB_END, jsonb_bool(&b, buf, sizeof(buf), 0));
2933
ASSERT_STR_EQ("false", buf);
34+
ASSERT_EQ(sizeof("false") - 1, b.pos);
35+
ASSERT_EQ(sizeof("false") - 1, strlen(buf));
3036

3137
jsonb_init(&b);
3238
ASSERT_EQm(buf, JSONB_END, jsonb_bool(&b, buf, sizeof(buf), 1));
3339
ASSERT_STR_EQ("true", buf);
40+
ASSERT_EQ(sizeof("true") - 1, b.pos);
41+
ASSERT_EQ(sizeof("true") - 1, strlen(buf));
3442

3543
jsonb_init(&b);
3644
ASSERT_EQm(buf, JSONB_END, jsonb_number(&b, buf, sizeof(buf), 10));
3745
ASSERT_STR_EQ("10", buf);
46+
ASSERT_EQ(sizeof("10") - 1, b.pos);
47+
ASSERT_EQ(sizeof("10") - 1, strlen(buf));
3848

3949
jsonb_init(&b);
4050
ASSERT_EQm(buf, JSONB_END, jsonb_string(&b, buf, sizeof(buf), "hi", 2));
4151
ASSERT_STR_EQ("\"hi\"", buf);
52+
ASSERT_EQ(sizeof("\"hi\"") - 1, b.pos);
53+
ASSERT_EQ(sizeof("\"hi\"") - 1, strlen(buf));
4254

4355
jsonb_init(&b);
4456
ASSERT_EQm(buf, JSONB_END, jsonb_null(&b, buf, sizeof(buf)));
4557
ASSERT_STR_EQ("null", buf);
58+
ASSERT_EQ(sizeof("null") - 1, b.pos);
59+
ASSERT_EQ(sizeof("null") - 1, strlen(buf));
4660

4761
PASS();
4862
}
4963

5064
TEST
5165
check_valid_array(void)
5266
{
67+
static const char expected[] = "[true,false,null,10,\"foo\",{}]";
5368
static char buf[2048];
5469
jsonb b;
5570

@@ -67,14 +82,18 @@ check_valid_array(void)
6782
ASSERT_EQm(buf, JSONB_END, jsonb_array_pop(&b, buf, sizeof(buf)));
6883
}
6984

70-
ASSERT_STR_EQ("[true,false,null,10,\"foo\",{}]", buf);
85+
ASSERT_STR_EQ(expected, buf);
86+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
87+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
7188

7289
PASS();
7390
}
7491

7592
TEST
7693
check_valid_object(void)
7794
{
95+
static const char expected[] =
96+
"{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}";
7897
static char buf[2048];
7998
jsonb b;
8099

@@ -98,9 +117,9 @@ check_valid_object(void)
98117
ASSERT_EQm(buf, JSONB_END, jsonb_object_pop(&b, buf, sizeof(buf)));
99118
}
100119

101-
ASSERT_STR_EQ(
102-
"{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}",
103-
buf);
120+
ASSERT_STR_EQ(expected, buf);
121+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
122+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
104123

105124
PASS();
106125
}
@@ -218,8 +237,7 @@ check_string_escaping(void)
218237
jsonb_init(&b);
219238
ASSERT_EQm(buf, JSONB_OK, jsonb_array(&b, buf, sizeof(buf)));
220239
for (i = 0; i < sizeof(strs) / sizeof(char *); ++i) {
221-
size_t len = strlen(strs[i]);
222-
size_t prev_pos = b.pos;
240+
size_t len = strlen(strs[i]), prev_pos = b.pos;
223241
ASSERT_GTEm(buf, jsonb_string(&b, buf, sizeof(buf), strs[i], len), 0);
224242
ASSERT_STR_EQ(expect[i], buf + prev_pos);
225243
}
@@ -244,7 +262,6 @@ check_string_escaping_bounds(void)
244262
jsonb_string(&b, buf, sizeof(buf), str, sizeof(str) - 1));
245263
ASSERT_EQm(buf, JSONB_ERROR_NOMEM,
246264
jsonb_key(&b, buf, sizeof(buf), str, sizeof(str) - 1));
247-
fprintf(stderr, "%s", buf);
248265

249266
PASS();
250267
}

test/test_auto.c

+51-15
Original file line numberDiff line numberDiff line change
@@ -12,39 +12,60 @@
1212
TEST
1313
check_auto_singles(void)
1414
{
15-
char *buf = malloc(16);
16-
size_t bufsize = 16;
15+
char *buf = NULL;
16+
size_t bufsize = 0;
1717
jsonb b;
1818

1919
jsonb_init(&b);
2020
ASSERT_EQm(buf, JSONB_OK, jsonb_array_auto(&b, &buf, &bufsize));
2121
ASSERT_EQm(buf, JSONB_END, jsonb_array_pop_auto(&b, &buf, &bufsize));
2222
ASSERT_STR_EQ("[]", buf);
23+
ASSERT_EQ(sizeof("[]") - 1, b.pos);
24+
ASSERT_EQ(sizeof("[]") - 1, strlen(buf));
25+
ASSERT_GT(bufsize, b.pos);
2326

2427
jsonb_init(&b);
2528
ASSERT_EQm(buf, JSONB_OK, jsonb_object_auto(&b, &buf, &bufsize));
2629
ASSERT_EQm(buf, JSONB_END, jsonb_object_pop_auto(&b, &buf, &bufsize));
2730
ASSERT_STR_EQ("{}", buf);
31+
ASSERT_EQ(sizeof("{}") - 1, b.pos);
32+
ASSERT_EQ(sizeof("{}") - 1, strlen(buf));
33+
ASSERT_GT(bufsize, b.pos);
2834

2935
jsonb_init(&b);
3036
ASSERT_EQm(buf, JSONB_END, jsonb_bool_auto(&b, &buf, &bufsize, 0));
3137
ASSERT_STR_EQ("false", buf);
38+
ASSERT_EQ(sizeof("false") - 1, b.pos);
39+
ASSERT_EQ(sizeof("false") - 1, strlen(buf));
40+
ASSERT_GT(bufsize, b.pos);
3241

3342
jsonb_init(&b);
3443
ASSERT_EQm(buf, JSONB_END, jsonb_bool_auto(&b, &buf, &bufsize, 1));
3544
ASSERT_STR_EQ("true", buf);
45+
ASSERT_EQ(sizeof("true") - 1, b.pos);
46+
ASSERT_EQ(sizeof("true") - 1, strlen(buf));
47+
ASSERT_GT(bufsize, b.pos);
3648

3749
jsonb_init(&b);
3850
ASSERT_EQm(buf, JSONB_END, jsonb_number_auto(&b, &buf, &bufsize, 10));
3951
ASSERT_STR_EQ("10", buf);
52+
ASSERT_EQ(sizeof("10") - 1, b.pos);
53+
ASSERT_EQ(sizeof("10") - 1, strlen(buf));
54+
ASSERT_GT(bufsize, b.pos);
4055

4156
jsonb_init(&b);
4257
ASSERT_EQm(buf, JSONB_END, jsonb_string_auto(&b, &buf, &bufsize, "hi", 2));
4358
ASSERT_STR_EQ("\"hi\"", buf);
59+
ASSERT_EQ(sizeof("\"hi\"") - 1, b.pos);
60+
ASSERT_EQ(sizeof("\"hi\"") - 1, strlen(buf));
61+
ASSERT_GT(bufsize, b.pos);
4462

4563
jsonb_init(&b);
4664
ASSERT_EQm(buf, JSONB_END, jsonb_null_auto(&b, &buf, &bufsize));
4765
ASSERT_STR_EQ("null", buf);
66+
ASSERT_EQ(sizeof("null") - 1, b.pos);
67+
ASSERT_EQ(sizeof("null") - 1, strlen(buf));
68+
ASSERT_GT(bufsize, b.pos);
4869

4970
free(buf);
5071
PASS();
@@ -53,6 +74,7 @@ check_auto_singles(void)
5374
TEST
5475
check_auto_array_realloc(void)
5576
{
77+
static const char expected[] = "[true,false,null,10,\"foo\",{}]";
5678
char *buf = malloc(4);
5779
size_t bufsize = 4;
5880
size_t original_size = bufsize;
@@ -72,8 +94,11 @@ check_auto_array_realloc(void)
7294
ASSERT_EQm(buf, JSONB_END, jsonb_array_pop_auto(&b, &buf, &bufsize));
7395
}
7496

75-
ASSERT_STR_EQ("[true,false,null,10,\"foo\",{}]", buf);
97+
ASSERT_STR_EQ(expected, buf);
7698
ASSERT_GT(bufsize, original_size);
99+
ASSERT_GT(bufsize, b.pos);
100+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
101+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
77102

78103
free(buf);
79104
PASS();
@@ -82,8 +107,10 @@ check_auto_array_realloc(void)
82107
TEST
83108
check_auto_object_realloc(void)
84109
{
85-
char *buf = malloc(4);
86-
size_t bufsize = 4;
110+
static const char expected[] =
111+
"{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}";
112+
char *buf = NULL;
113+
size_t bufsize = 0;
87114
size_t original_size = bufsize;
88115
jsonb b;
89116

@@ -107,10 +134,11 @@ check_auto_object_realloc(void)
107134
ASSERT_EQm(buf, JSONB_END, jsonb_object_pop_auto(&b, &buf, &bufsize));
108135
}
109136

110-
ASSERT_STR_EQ(
111-
"{\"a\":true,\"b\":false,\"c\":null,\"d\":10,\"e\":\"foo\",\"f\":[]}",
112-
buf);
137+
ASSERT_STR_EQ(expected, buf);
113138
ASSERT_GT(bufsize, original_size);
139+
ASSERT_GT(bufsize, b.pos);
140+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
141+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
114142

115143
free(buf);
116144
PASS();
@@ -119,6 +147,9 @@ check_auto_object_realloc(void)
119147
TEST
120148
check_auto_string_escaping(void)
121149
{
150+
static const char expected[] = "[\"begin\",\"\\nhi\\n\",\"\\n\\t\\t\","
151+
"\"\\b\\u0007\\u0007\\ttest\\n\","
152+
"\"end\"]";
122153
char *buf = malloc(8);
123154
size_t bufsize = 8;
124155
static const char *const strs[] = {
@@ -136,9 +167,10 @@ check_auto_string_escaping(void)
136167
}
137168
ASSERT_EQm(buf, JSONB_END, jsonb_array_pop_auto(&b, &buf, &bufsize));
138169

139-
ASSERT_STR_EQ("[\"begin\",\"\\nhi\\n\",\"\\n\\t\\t\","
140-
"\"\\b\\u0007\\u0007\\ttest\\n\",\"end\"]",
141-
buf);
170+
ASSERT_STR_EQ(expected, buf);
171+
ASSERT_GT(bufsize, b.pos);
172+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
173+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
142174

143175
free(buf);
144176
PASS();
@@ -147,6 +179,8 @@ check_auto_string_escaping(void)
147179
TEST
148180
check_auto_nested_with_realloc(void)
149181
{
182+
static const char expected[] =
183+
"{\"nested\":{\"array\":[1,2,3],\"object\":{\"x\":\"y\"}}}";
150184
char *buf = malloc(4);
151185
size_t bufsize = 4;
152186
size_t original_size = bufsize;
@@ -189,9 +223,11 @@ check_auto_nested_with_realloc(void)
189223
ASSERT_EQm(buf, JSONB_END, jsonb_object_pop_auto(&b, &buf, &bufsize));
190224
}
191225

192-
ASSERT_STR_EQ("{\"nested\":{\"array\":[1,2,3],\"object\":{\"x\":\"y\"}}}",
193-
buf);
226+
ASSERT_STR_EQ(expected, buf);
194227
ASSERT_GT(bufsize, original_size);
228+
ASSERT_GT(bufsize, b.pos);
229+
ASSERT_EQ(sizeof(expected) - 1, b.pos);
230+
ASSERT_EQ(sizeof(expected) - 1, strlen(buf));
195231

196232
free(buf);
197233
PASS();
@@ -201,8 +237,8 @@ TEST
201237
check_auto_large_string(void)
202238
{
203239
char *longString = malloc(1000);
204-
char *buf = malloc(8);
205-
size_t bufsize = 8;
240+
char *buf = NULL;
241+
size_t bufsize = 0;
206242
size_t original_size = bufsize;
207243
jsonb b;
208244
int i;

0 commit comments

Comments
 (0)