Re: [systemd-devel] [PATCH 3/5] test/test-json: Tests for the JSON parser and the tokenizer bugfix

2015-05-18 Thread Lennart Poettering
On Mon, 18.05.15 11:04, Pavel Odvody (podv...@redhat.com) wrote:

> On Fri, 2015-05-15 at 17:24 +0200, Lennart Poettering wrote:
> > On Thu, 07.05.15 17:47, Pavel Odvody (podv...@redhat.com) wrote:
> > 
> > > Signed-off-by: Pavel Odvody 
> > > ---
> > >  src/test/test-json.c | 16 
> > >  1 file changed, 16 insertions(+)
> > > 
> > > diff --git a/src/test/test-json.c b/src/test/test-json.c
> > > index 24dc700..745eeb0 100644
> > > --- a/src/test/test-json.c
> > > +++ b/src/test/test-json.c
> > > @@ -72,6 +72,17 @@ static void test_one(const char *data, ...) {
> > >  va_end(ap);
> > >  }
> > >  
> > > +static void test_file(const char *data) {
> > > +json_variant *v = NULL;
> > > +int r = json_parse(data, &v);
> > > +
> > > +assert_se(r == 0);
> > > +assert_se(v != NULL);
> > > +assert_se(v->type == JSON_VARIANT_OBJECT);
> > > +
> > > +json_variant_unref(v);
> > > +}
> > > +
> > >  int main(int argc, char *argv[]) {
> > >  
> > >  test_one("x", -EINVAL);
> > > @@ -102,5 +113,10 @@ int main(int argc, char *argv[]) {
> > >  test_one("\"\\udc00\\udc00\"", -EINVAL);
> > >  test_one("\"\\ud801\\udc37\"", JSON_STRING, "\xf0\x90\x90\xb7", 
> > > JSON_END);
> > >  
> > > +test_one("[1, 2]", JSON_ARRAY_OPEN, JSON_INTEGER, 1, JSON_COMMA, 
> > > JSON_INTEGER, 2, JSON_ARRAY_CLOSE, JSON_END);
> > > +
> > > +test_file("{\"k\": \"v\", \"foo\": [1, 2, 3], \"bar\": {\"zap\": 
> > > null}}");
> > > +test_file("{\"mutant\": [1, null, \"1\", {\"1\": [1, \"1\"]}], 
> > > \"blah\": 1.27}");
> > > +
> > 
> > Any chance you can extend the test to check the structure of the of
> > the object parsed for validity here?
> > 
> > Lennart
> > 
> 
> Yes, though I wonder how to write down the test specs.

Well, one straightforward option would be to simply add a number of
asserts that verify that each node has the right children and parents,
and the right fields.

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] [PATCH 3/5] test/test-json: Tests for the JSON parser and the tokenizer bugfix

2015-05-18 Thread Pavel Odvody
On Fri, 2015-05-15 at 17:24 +0200, Lennart Poettering wrote:
> On Thu, 07.05.15 17:47, Pavel Odvody (podv...@redhat.com) wrote:
> 
> > Signed-off-by: Pavel Odvody 
> > ---
> >  src/test/test-json.c | 16 
> >  1 file changed, 16 insertions(+)
> > 
> > diff --git a/src/test/test-json.c b/src/test/test-json.c
> > index 24dc700..745eeb0 100644
> > --- a/src/test/test-json.c
> > +++ b/src/test/test-json.c
> > @@ -72,6 +72,17 @@ static void test_one(const char *data, ...) {
> >  va_end(ap);
> >  }
> >  
> > +static void test_file(const char *data) {
> > +json_variant *v = NULL;
> > +int r = json_parse(data, &v);
> > +
> > +assert_se(r == 0);
> > +assert_se(v != NULL);
> > +assert_se(v->type == JSON_VARIANT_OBJECT);
> > +
> > +json_variant_unref(v);
> > +}
> > +
> >  int main(int argc, char *argv[]) {
> >  
> >  test_one("x", -EINVAL);
> > @@ -102,5 +113,10 @@ int main(int argc, char *argv[]) {
> >  test_one("\"\\udc00\\udc00\"", -EINVAL);
> >  test_one("\"\\ud801\\udc37\"", JSON_STRING, "\xf0\x90\x90\xb7", 
> > JSON_END);
> >  
> > +test_one("[1, 2]", JSON_ARRAY_OPEN, JSON_INTEGER, 1, JSON_COMMA, 
> > JSON_INTEGER, 2, JSON_ARRAY_CLOSE, JSON_END);
> > +
> > +test_file("{\"k\": \"v\", \"foo\": [1, 2, 3], \"bar\": {\"zap\": 
> > null}}");
> > +test_file("{\"mutant\": [1, null, \"1\", {\"1\": [1, \"1\"]}], 
> > \"blah\": 1.27}");
> > +
> 
> Any chance you can extend the test to check the structure of the of
> the object parsed for validity here?
> 
> Lennart
> 

Yes, though I wonder how to write down the test specs.

Something like this for the first test case?

JSON_SCOPE, 
 JSON_KEY, "k", JSON_VALUE, "v",
 JSON_KEY, "foo", JSON_VALUE, 
 JSON_SCOPE, 
  JSON_VALUE, 1, JSON_VALUE, 2, JSON_VALUE, 3,
 JSON_ENDSCOPE, 
 JSON_KEY, "bar", JSON_VALUE,
 JSON_SCOPE,
  JSON_KEY, "zap", JSON_VALUE, NULL
 JSON_ENDSCOPE.
JSON_ENDSCOPE


-- 
Pavel Odvody 
Software Engineer - EMEA ENG Developer Experience
5EC1 95C1 8E08 5BD9 9BBF 9241 3AFA 3A66 024F F68D
Red Hat Czech s.r.o., Purkyňova 99/71, 612 45, Brno



signature.asc
Description: This is a digitally signed message part
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Re: [systemd-devel] [PATCH 3/5] test/test-json: Tests for the JSON parser and the tokenizer bugfix

2015-05-15 Thread Lennart Poettering
On Thu, 07.05.15 17:47, Pavel Odvody (podv...@redhat.com) wrote:

> Signed-off-by: Pavel Odvody 
> ---
>  src/test/test-json.c | 16 
>  1 file changed, 16 insertions(+)
> 
> diff --git a/src/test/test-json.c b/src/test/test-json.c
> index 24dc700..745eeb0 100644
> --- a/src/test/test-json.c
> +++ b/src/test/test-json.c
> @@ -72,6 +72,17 @@ static void test_one(const char *data, ...) {
>  va_end(ap);
>  }
>  
> +static void test_file(const char *data) {
> +json_variant *v = NULL;
> +int r = json_parse(data, &v);
> +
> +assert_se(r == 0);
> +assert_se(v != NULL);
> +assert_se(v->type == JSON_VARIANT_OBJECT);
> +
> +json_variant_unref(v);
> +}
> +
>  int main(int argc, char *argv[]) {
>  
>  test_one("x", -EINVAL);
> @@ -102,5 +113,10 @@ int main(int argc, char *argv[]) {
>  test_one("\"\\udc00\\udc00\"", -EINVAL);
>  test_one("\"\\ud801\\udc37\"", JSON_STRING, "\xf0\x90\x90\xb7", 
> JSON_END);
>  
> +test_one("[1, 2]", JSON_ARRAY_OPEN, JSON_INTEGER, 1, JSON_COMMA, 
> JSON_INTEGER, 2, JSON_ARRAY_CLOSE, JSON_END);
> +
> +test_file("{\"k\": \"v\", \"foo\": [1, 2, 3], \"bar\": {\"zap\": 
> null}}");
> +test_file("{\"mutant\": [1, null, \"1\", {\"1\": [1, \"1\"]}], 
> \"blah\": 1.27}");
> +

Any chance you can extend the test to check the structure of the of
the object parsed for validity here?

Lennart

-- 
Lennart Poettering, Red Hat
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel


[systemd-devel] [PATCH 3/5] test/test-json: Tests for the JSON parser and the tokenizer bugfix

2015-05-07 Thread Pavel Odvody
Signed-off-by: Pavel Odvody 
---
 src/test/test-json.c | 16 
 1 file changed, 16 insertions(+)

diff --git a/src/test/test-json.c b/src/test/test-json.c
index 24dc700..745eeb0 100644
--- a/src/test/test-json.c
+++ b/src/test/test-json.c
@@ -72,6 +72,17 @@ static void test_one(const char *data, ...) {
 va_end(ap);
 }
 
+static void test_file(const char *data) {
+json_variant *v = NULL;
+int r = json_parse(data, &v);
+
+assert_se(r == 0);
+assert_se(v != NULL);
+assert_se(v->type == JSON_VARIANT_OBJECT);
+
+json_variant_unref(v);
+}
+
 int main(int argc, char *argv[]) {
 
 test_one("x", -EINVAL);
@@ -102,5 +113,10 @@ int main(int argc, char *argv[]) {
 test_one("\"\\udc00\\udc00\"", -EINVAL);
 test_one("\"\\ud801\\udc37\"", JSON_STRING, "\xf0\x90\x90\xb7", 
JSON_END);
 
+test_one("[1, 2]", JSON_ARRAY_OPEN, JSON_INTEGER, 1, JSON_COMMA, 
JSON_INTEGER, 2, JSON_ARRAY_CLOSE, JSON_END);
+
+test_file("{\"k\": \"v\", \"foo\": [1, 2, 3], \"bar\": {\"zap\": 
null}}");
+test_file("{\"mutant\": [1, null, \"1\", {\"1\": [1, \"1\"]}], 
\"blah\": 1.27}");
+
 return 0;
 }
-- 
2.1.0



signature.asc
Description: This is a digitally signed message part
___
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel