From b49292c9f6efa2bc469d818ef0becb0ef719a2fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Deli=C3=9Fen?= Date: Mon, 14 Jan 2019 18:33:03 +0100 Subject: [PATCH 1/2] Add boolean parsing tests - recreates problem of parsing 'false' boolean values as 'true' --- test/jaxon_test.exs | 5 +++++ test/parser_test.exs | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/test/jaxon_test.exs b/test/jaxon_test.exs index 8b25c9b..0064d5a 100644 --- a/test/jaxon_test.exs +++ b/test/jaxon_test.exs @@ -55,6 +55,11 @@ defmodule JaxonTest do assert decode!("-99.99e99 ") == -99.99e99 end + test "booleans" do + assert decode!(~s(true)) == true + assert decode!(~s(false)) == false + end + test "objects" do assert decode!(~s({})) == %{} assert decode!(~s({"number": 2})) == %{"number" => 2} diff --git a/test/parser_test.exs b/test/parser_test.exs index abf2655..082b2bc 100644 --- a/test/parser_test.exs +++ b/test/parser_test.exs @@ -4,7 +4,7 @@ defmodule ParseTest do doctest Parser @tests [ - {~s({ "name": "john", "test": {"number": 5.1}, "tags":[null,true,true,1]}), + {~s({ "name": "john", "test": {"number": 5.1}, "tags":[null,true,false,1]}), [ :start_object, {:string, "name"}, @@ -26,7 +26,7 @@ defmodule ParseTest do :comma, {:boolean, true}, :comma, - {:boolean, true}, + {:boolean, false}, :comma, {:integer, 1}, :end_array, From 0b210793daec46675aa8e98875fcc9dc5fab9857 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frederik=20Deli=C3=9Fen?= Date: Mon, 14 Jan 2019 18:34:43 +0100 Subject: [PATCH 2/2] Fix parsing 'false' boolean values correctly --- c_src/decoder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/c_src/decoder.c b/c_src/decoder.c index 1e81ad6..d905061 100644 --- a/c_src/decoder.c +++ b/c_src/decoder.c @@ -448,7 +448,7 @@ void decode(decoder_t* d, json_event_t* e) { if(d->cursor + 5 <= limit) { if(memcmp(d->cursor, "false", 5) == 0) { e->type = BOOLEAN; - e->value.boolean = 1; + e->value.boolean = 0; d->cursor = d->cursor + 5; } else { syntax_error(d, e);