summaryrefslogtreecommitdiff
path: root/json-glib/tests/path.c
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2013-01-11 17:47:13 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2013-01-11 17:47:16 +0000
commita9bc17dc04b425888b40b5ecef6baefcf369ec84 (patch)
tree51b43382e9f368961b96b0d296cf9b560c939744 /json-glib/tests/path.c
parente348b1fa88823ddb18fb8d2a2d1acea94c9f9448 (diff)
downloadjson-glib-a9bc17dc04b425888b40b5ecef6baefcf369ec84.tar.gz
path: Fix get all object members with wildcard
Similar to the fix that went in commit path e348b1fa, we need to fix getting all the members of an object by using the wildcard notation.
Diffstat (limited to 'json-glib/tests/path.c')
-rw-r--r--json-glib/tests/path.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/json-glib/tests/path.c b/json-glib/tests/path.c
index 712b65d..2b7c1f2 100644
--- a/json-glib/tests/path.c
+++ b/json-glib/tests/path.c
@@ -36,53 +36,70 @@ static const char *test_json =
"}";
static const struct {
- const char *exp;
+ const char *desc;
+ const char *expr;
const char *res;
} test_expressions[] = {
{
+ "Title of the first book in the store, using objct notation.",
"$.store.book[0].title",
"[\"Sayings of the Century\"]"
},
{
+ "Title of the first book in the store, using array notation.",
"$['store']['book'][0]['title']",
"[\"Sayings of the Century\"]"
},
{
+ "All the authors from the every book.",
"$.store.book[*].author",
"[\"Nigel Rees\",\"Evelyn Waugh\",\"Herman Melville\",\"J. R. R. Tolkien\"]"
},
{
+ "All the authors.",
"$..author",
"[\"Nigel Rees\",\"Evelyn Waugh\",\"Herman Melville\",\"J. R. R. Tolkien\"]"
},
{
+ "Everything inside the store.",
"$.store.*",
NULL
},
{
+ "All the prices in the store.",
"$.store..price",
"[\"8.95\",\"12.99\",\"8.99\",\"22.99\",\"19.95\"]"
},
{
+ "The third book.",
"$..book[2]",
"[{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":\"8.99\"}]"
},
{
+ "The last book.",
"$..book[-1:]",
"[{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":\"22.99\"}]"
},
{
+ "The first two books.",
"$..book[0,1]",
"[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"}]"
},
{
+ "The first two books, using a slice.",
"$..book[:2]",
"[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"}]"
},
{
+ "All the books.",
"$['store']['book'][*]",
"[{\"category\":\"reference\",\"author\":\"Nigel Rees\",\"title\":\"Sayings of the Century\",\"price\":\"8.95\"},{\"category\":\"fiction\",\"author\":\"Evelyn Waugh\",\"title\":\"Sword of Honour\",\"price\":\"12.99\"},{\"category\":\"fiction\",\"author\":\"Herman Melville\",\"title\":\"Moby Dick\",\"isbn\":\"0-553-21311-3\",\"price\":\"8.99\"},{\"category\":\"fiction\",\"author\":\"J. R. R. Tolkien\",\"title\":\"The Lord of the Rings\",\"isbn\":\"0-395-19395-8\",\"price\":\"22.99\"}]"
},
+ {
+ "All the members of the bicycle object.",
+ "$.store.bicycle.*",
+ "[\"red\",\"19.95\"]"
+ },
};
static void
@@ -93,7 +110,7 @@ test_expression (void)
for (i = 0; i < G_N_ELEMENTS (test_expressions); i++)
{
- const char *expr = test_expressions[i].exp;
+ const char *expr = test_expressions[i].expr;
GError *error = NULL;
g_assert (json_path_compile (path, expr, &error));
@@ -117,7 +134,8 @@ test_match (void)
for (i = 0; i < G_N_ELEMENTS (test_expressions); i++)
{
- const char *expr = test_expressions[i].exp;
+ const char *desc = test_expressions[i].desc;
+ const char *expr = test_expressions[i].expr;
const char *res = test_expressions[i].res;
JsonNode *matches;
char *str;
@@ -135,10 +153,10 @@ test_match (void)
if (g_test_verbose ())
{
- g_print ("* expr[%02d]: '%s' =>\n"
+ g_print ("* expr[%02d]: %s ('%s') =>\n"
"- result: %s\n"
"- expected: %s\n",
- i, expr, str, res);
+ i, desc, expr, str, res);
}
g_assert_cmpstr (str, ==, res);