mirror of
https://github.com/falk-werner/webfuse-provider
synced 2024-10-27 20:44:10 +00:00
added unit tests
This commit is contained in:
parent
fe32a31e09
commit
8a7a288b97
@ -78,13 +78,12 @@ wfp_impl_json_array_get(
|
||||
struct wfp_json const * json,
|
||||
size_t pos)
|
||||
{
|
||||
struct wfp_json const * result = NULL;
|
||||
if ((WFP_JSON_ARRAY == json->type) && (pos < json->value.a.size))
|
||||
{
|
||||
return &(json->value.a.items[pos]);
|
||||
}
|
||||
|
||||
return result;
|
||||
return &wfp_json_null;
|
||||
}
|
||||
|
||||
size_t
|
||||
|
@ -82,6 +82,30 @@ TEST(json_parser, parse_string)
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
|
||||
TEST(json_parser, unescape_string)
|
||||
{
|
||||
char text[] = "\"\\\"_\\\\_\\/_\\b_\\f_\\n_\\r_\\t\"";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_NE(nullptr, doc);
|
||||
wfp_json const * root = wfp_impl_json_doc_root(doc);
|
||||
ASSERT_TRUE(wfp_impl_json_is_string(root));
|
||||
ASSERT_STREQ("\"_\\_/_\b_\f_\n_\r_\t", wfp_impl_json_string_get(root));
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
|
||||
TEST(json_parser, skip_whitespace)
|
||||
{
|
||||
char text[] = " \t\r\n\"42\"";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_NE(nullptr, doc);
|
||||
wfp_json const * root = wfp_impl_json_doc_root(doc);
|
||||
ASSERT_TRUE(wfp_impl_json_is_string(root));
|
||||
ASSERT_STREQ("42", wfp_impl_json_string_get(root));
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
|
||||
TEST(json_parser, parse_array)
|
||||
{
|
||||
char text[] = "[true,1,\"foo\",[42]]";
|
||||
@ -95,6 +119,19 @@ TEST(json_parser, parse_array)
|
||||
ASSERT_TRUE(wfp_impl_json_is_int(wfp_impl_json_array_get(root, 1)));
|
||||
ASSERT_TRUE(wfp_impl_json_is_string(wfp_impl_json_array_get(root, 2)));
|
||||
ASSERT_TRUE(wfp_impl_json_is_array(wfp_impl_json_array_get(root, 3)));
|
||||
ASSERT_TRUE(wfp_impl_json_is_null(wfp_impl_json_array_get(root, 4)));
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
|
||||
TEST(json_parser, parse_empty_array)
|
||||
{
|
||||
char text[] = "[]";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_NE(nullptr, doc);
|
||||
wfp_json const * root = wfp_impl_json_doc_root(doc);
|
||||
ASSERT_TRUE(wfp_impl_json_is_array(root));
|
||||
ASSERT_EQ(0, wfp_impl_json_array_size(root));
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
@ -109,14 +146,52 @@ TEST(json_parser, parse_object)
|
||||
ASSERT_EQ(3, wfp_impl_json_object_size(root));
|
||||
|
||||
ASSERT_STREQ("method", wfp_impl_json_object_key(root, 0));
|
||||
ASSERT_TRUE(wfp_impl_json_is_string(wfp_impl_json_object_value(root, 0)));
|
||||
|
||||
ASSERT_STREQ("params", wfp_impl_json_object_key(root, 1));
|
||||
ASSERT_TRUE(wfp_impl_json_is_array(wfp_impl_json_object_value(root, 1)));
|
||||
|
||||
ASSERT_STREQ("id", wfp_impl_json_object_key(root, 2));
|
||||
ASSERT_TRUE(wfp_impl_json_is_int(wfp_impl_json_object_value(root, 2)));
|
||||
|
||||
ASSERT_STREQ("", wfp_impl_json_object_key(root, 3));
|
||||
ASSERT_TRUE(wfp_impl_json_is_null(wfp_impl_json_object_value(root, 3)));
|
||||
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
}
|
||||
|
||||
TEST(json_parser, default_values)
|
||||
{
|
||||
char text[] = "[true]";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_NE(nullptr, doc);
|
||||
|
||||
wfp_json const * json_array = wfp_impl_json_doc_root(doc);
|
||||
ASSERT_FALSE(wfp_impl_json_bool_get(json_array));
|
||||
ASSERT_EQ(0, wfp_impl_json_int_get(json_array));
|
||||
ASSERT_STREQ("", wfp_impl_json_string_get(json_array));
|
||||
ASSERT_EQ(0, wfp_impl_json_object_size(json_array));
|
||||
ASSERT_TRUE(wfp_impl_json_is_null(wfp_impl_json_object_get(json_array, "foo")));
|
||||
ASSERT_STREQ("", wfp_impl_json_object_key(json_array, 0));
|
||||
ASSERT_TRUE(wfp_impl_json_is_null(wfp_impl_json_object_value(json_array, 0)));
|
||||
|
||||
wfp_json const * json_bool = wfp_impl_json_array_get(json_array, 0);
|
||||
ASSERT_EQ(0, wfp_impl_json_array_size(json_bool));
|
||||
ASSERT_TRUE(wfp_impl_json_is_null(wfp_impl_json_array_get(json_bool, 0)));
|
||||
|
||||
wfp_impl_json_doc_dispose(doc);
|
||||
|
||||
}
|
||||
|
||||
TEST(json_parser, parse_fail_invalid_json)
|
||||
{
|
||||
{
|
||||
char text[] = "";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_EQ(nullptr, doc);
|
||||
}
|
||||
|
||||
{
|
||||
char text[] = "invalid";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
@ -141,6 +216,24 @@ TEST(json_parser, parse_fail_invalid_json)
|
||||
ASSERT_EQ(nullptr, doc);
|
||||
}
|
||||
|
||||
{
|
||||
char text[] = "+1";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_EQ(nullptr, doc);
|
||||
}
|
||||
|
||||
{
|
||||
char text[] = "\"unterminated_string";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_EQ(nullptr, doc);
|
||||
}
|
||||
|
||||
{
|
||||
char text[] = "\"invale_\\escape_\\sequence\"";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
ASSERT_EQ(nullptr, doc);
|
||||
}
|
||||
|
||||
{
|
||||
char text[] = "[1,2,3}";
|
||||
wfp_json_doc * doc = parse_json(text);
|
||||
|
Loading…
Reference in New Issue
Block a user