You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2013/12/24 00:31:12 UTC

[03/12] Replace ejson with jiffy

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/010-short-doubles.t
----------------------------------------------------------------------
diff --git a/src/jiffy/test/010-short-doubles.t b/src/jiffy/test/010-short-doubles.t
new file mode 100755
index 0000000..4aac375
--- /dev/null
+++ b/src/jiffy/test/010-short-doubles.t
@@ -0,0 +1,29 @@
+#! /usr/bin/env escript
+% This file is part of Jiffy released under the MIT license.
+% See the LICENSE file for more information.
+
+filename() -> "test/cases/short-doubles.txt".
+
+main([]) ->
+    code:add_pathz("ebin"),
+    code:add_pathz("test"),
+
+    etap:plan(100000),
+
+    etap:diag("Loading test cases..."),
+    {ok, Cases} = file:consult(filename()),
+
+    etap:diag("Running tests..."),
+    ok = run_tests(Cases),
+
+    etap:end_tests().
+
+
+run_tests([]) ->
+    ok;
+run_tests([Double | Rest]) ->
+    RoundTrip = jiffy:decode(jiffy:encode(Double)),
+    Desc = lists:flatten(io_lib:format("~e", [Double])),
+    etap:is(RoundTrip, Double, "Roundtrip: " ++ Desc),
+    run_tests(Rest).
+

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array.eterm b/src/jiffy/test/cases/array.eterm
new file mode 100644
index 0000000..8a9688e
--- /dev/null
+++ b/src/jiffy/test/cases/array.eterm
@@ -0,0 +1,16 @@
+[
+    <<"foo">>,
+    <<"bar">>,
+    <<"baz">>,
+    true,
+    false,
+    null,
+    {[{<<"key">>, <<"value">>}]},
+    [
+        null,
+        null,
+        null,
+        []
+    ],
+    <<"\n\r\\">>
+].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array.json b/src/jiffy/test/cases/array.json
new file mode 100644
index 0000000..f76058d
--- /dev/null
+++ b/src/jiffy/test/cases/array.json
@@ -0,0 +1,6 @@
+["foo",
+ "bar", "baz",
+ true,false,null,{"key":"value"},
+ [null,null,null,[]],
+ "\n\r\\"
+]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array_close.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array_close.eterm b/src/jiffy/test/cases/array_close.eterm
new file mode 100644
index 0000000..4aa294e
--- /dev/null
+++ b/src/jiffy/test/cases/array_close.eterm
@@ -0,0 +1 @@
+{error,{1,invalid_json}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array_close.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array_close.json b/src/jiffy/test/cases/array_close.json
new file mode 100644
index 0000000..079b579
--- /dev/null
+++ b/src/jiffy/test/cases/array_close.json
@@ -0,0 +1 @@
+]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array_open.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array_open.eterm b/src/jiffy/test/cases/array_open.eterm
new file mode 100644
index 0000000..9fa573a
--- /dev/null
+++ b/src/jiffy/test/cases/array_open.eterm
@@ -0,0 +1 @@
+{error,{3,truncated_json}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/array_open.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/array_open.json b/src/jiffy/test/cases/array_open.json
new file mode 100644
index 0000000..558ed37
--- /dev/null
+++ b/src/jiffy/test/cases/array_open.json
@@ -0,0 +1 @@
+[

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/bogus_char.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/bogus_char.eterm b/src/jiffy/test/cases/bogus_char.eterm
new file mode 100644
index 0000000..9ecbac7
--- /dev/null
+++ b/src/jiffy/test/cases/bogus_char.eterm
@@ -0,0 +1 @@
+{error,{97,invalid_literal}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/bogus_char.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/bogus_char.json b/src/jiffy/test/cases/bogus_char.json
new file mode 100644
index 0000000..8163bd8
--- /dev/null
+++ b/src/jiffy/test/cases/bogus_char.json
@@ -0,0 +1,4 @@
+["this","is","what","should","be",
+ "a happy bit of json",
+ "but someone, misspelled \"true\"", ture,
+ "who says JSON is easy for humans to generate?"]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/codepoints_from_unicode_org.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/codepoints_from_unicode_org.eterm b/src/jiffy/test/cases/codepoints_from_unicode_org.eterm
new file mode 100644
index 0000000..086d058
--- /dev/null
+++ b/src/jiffy/test/cases/codepoints_from_unicode_org.eterm
@@ -0,0 +1 @@
+<<77, 208, 176, 228, 186, 140, 240, 144, 140, 130>>.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/codepoints_from_unicode_org.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/codepoints_from_unicode_org.json b/src/jiffy/test/cases/codepoints_from_unicode_org.json
new file mode 100644
index 0000000..f91f3be
--- /dev/null
+++ b/src/jiffy/test/cases/codepoints_from_unicode_org.json
@@ -0,0 +1 @@
+"\u004d\u0430\u4e8c\ud800\udf02"

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/deep_arrays.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/deep_arrays.eterm b/src/jiffy/test/cases/deep_arrays.eterm
new file mode 100644
index 0000000..2721754
--- /dev/null
+++ b/src/jiffy/test/cases/deep_arrays.eterm
@@ -0,0 +1 @@
+[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
 [[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]].

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/deep_arrays.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/deep_arrays.json b/src/jiffy/test/cases/deep_arrays.json
new file mode 100644
index 0000000..82d1b0d
--- /dev/null
+++ b/src/jiffy/test/cases/deep_arrays.json
@@ -0,0 +1 @@
+[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
 [[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/difficult_json_c_test_case.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/difficult_json_c_test_case.eterm b/src/jiffy/test/cases/difficult_json_c_test_case.eterm
new file mode 100644
index 0000000..591fafe
--- /dev/null
+++ b/src/jiffy/test/cases/difficult_json_c_test_case.eterm
@@ -0,0 +1,19 @@
+{[
+    {<<"glossary">>, {[
+        {<<"title">>, <<"example glossary">>},
+        {<<"GlossDiv">>, {[
+            {<<"title">>, <<"S">>},
+            {<<"GlossList">>, [
+                {[
+                    {<<"ID">>, <<"SGML">>},
+                    {<<"SortAs">>, <<"SGML">>},
+                    {<<"GlossTerm">>, <<"Standard Generalized Markup Language">>},
+                    {<<"Acronym">>, <<"SGML">>},
+                    {<<"Abbrev">>, <<"ISO 8879:1986">>},
+                    {<<"GlossDef">>, <<"A meta-markup language, used to create markup languages such as DocBook.">>},
+                    {<<"GlossSeeAlso">>, [<<"GML">>, <<"XML">>, <<"markup">>]}
+                ]}
+            ]}
+        ]}}
+    ]}}
+]}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/difficult_json_c_test_case.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/difficult_json_c_test_case.json b/src/jiffy/test/cases/difficult_json_c_test_case.json
new file mode 100644
index 0000000..6998f55
--- /dev/null
+++ b/src/jiffy/test/cases/difficult_json_c_test_case.json
@@ -0,0 +1 @@
+{ "glossary": { "title": "example glossary", "GlossDiv": { "title": "S", "GlossList": [ { "ID": "SGML", "SortAs": "SGML", "GlossTerm": "Standard Generalized Markup Language", "Acronym": "SGML", "Abbrev": "ISO 8879:1986", "GlossDef": "A meta-markup language, used to create markup languages such as DocBook.", "GlossSeeAlso": ["GML", "XML", "markup"] } ] } } }

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/doubles.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/doubles.eterm b/src/jiffy/test/cases/doubles.eterm
new file mode 100644
index 0000000..76a7f07
--- /dev/null
+++ b/src/jiffy/test/cases/doubles.eterm
@@ -0,0 +1 @@
+[10, 10, 3.141569, 1000].

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/doubles.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/doubles.json b/src/jiffy/test/cases/doubles.json
new file mode 100644
index 0000000..626f21c
--- /dev/null
+++ b/src/jiffy/test/cases/doubles.json
@@ -0,0 +1 @@
+[ 0.1e2, 1e1, 3.141569, 10000000000000e-10]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/empty_array.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/empty_array.eterm b/src/jiffy/test/cases/empty_array.eterm
new file mode 100644
index 0000000..2600237
--- /dev/null
+++ b/src/jiffy/test/cases/empty_array.eterm
@@ -0,0 +1 @@
+[].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/empty_array.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/empty_array.json b/src/jiffy/test/cases/empty_array.json
new file mode 100644
index 0000000..0637a08
--- /dev/null
+++ b/src/jiffy/test/cases/empty_array.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/empty_string.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/empty_string.eterm b/src/jiffy/test/cases/empty_string.eterm
new file mode 100644
index 0000000..e0f2023
--- /dev/null
+++ b/src/jiffy/test/cases/empty_string.eterm
@@ -0,0 +1 @@
+<<"">>.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/empty_string.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/empty_string.json b/src/jiffy/test/cases/empty_string.json
new file mode 100644
index 0000000..e16c76d
--- /dev/null
+++ b/src/jiffy/test/cases/empty_string.json
@@ -0,0 +1 @@
+""

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/escaped_bulgarian.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/escaped_bulgarian.eterm b/src/jiffy/test/cases/escaped_bulgarian.eterm
new file mode 100644
index 0000000..15287cc
--- /dev/null
+++ b/src/jiffy/test/cases/escaped_bulgarian.eterm
@@ -0,0 +1,6 @@
+[
+    <<208, 148, 208, 176>>,
+    <<208, 156, 209, 131>>,
+    <<208, 149, 208, 177, 208, 176>>,
+    <<208, 156, 208, 176, 208, 185, 208, 186, 208, 176, 209, 130, 208, 176>>
+].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/escaped_bulgarian.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/escaped_bulgarian.json b/src/jiffy/test/cases/escaped_bulgarian.json
new file mode 100644
index 0000000..9ce1d1c
--- /dev/null
+++ b/src/jiffy/test/cases/escaped_bulgarian.json
@@ -0,0 +1,4 @@
+["\u0414\u0430",
+ "\u041c\u0443",
+ "\u0415\u0431\u0430",
+ "\u041c\u0430\u0439\u043a\u0430\u0442\u0430"]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/escaped_foobar.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/escaped_foobar.eterm b/src/jiffy/test/cases/escaped_foobar.eterm
new file mode 100644
index 0000000..de9c37d
--- /dev/null
+++ b/src/jiffy/test/cases/escaped_foobar.eterm
@@ -0,0 +1 @@
+<<"foobar">>.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/escaped_foobar.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/escaped_foobar.json b/src/jiffy/test/cases/escaped_foobar.json
new file mode 100644
index 0000000..2c0e25f
--- /dev/null
+++ b/src/jiffy/test/cases/escaped_foobar.json
@@ -0,0 +1 @@
+"\u0066\u006f\u006f\u0062\u0061\u0072"

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/false.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/false.eterm b/src/jiffy/test/cases/false.eterm
new file mode 100644
index 0000000..aca5de7
--- /dev/null
+++ b/src/jiffy/test/cases/false.eterm
@@ -0,0 +1 @@
+false.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/false.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/false.json b/src/jiffy/test/cases/false.json
new file mode 100644
index 0000000..c508d53
--- /dev/null
+++ b/src/jiffy/test/cases/false.json
@@ -0,0 +1 @@
+false

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/false_then_garbage.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/false_then_garbage.eterm b/src/jiffy/test/cases/false_then_garbage.eterm
new file mode 100644
index 0000000..fc13df2
--- /dev/null
+++ b/src/jiffy/test/cases/false_then_garbage.eterm
@@ -0,0 +1 @@
+{error,{6,invalid_trailing_data}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/false_then_garbage.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/false_then_garbage.json b/src/jiffy/test/cases/false_then_garbage.json
new file mode 100644
index 0000000..78f4e96
--- /dev/null
+++ b/src/jiffy/test/cases/false_then_garbage.json
@@ -0,0 +1 @@
+falsex
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/four_byte_utf8.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/four_byte_utf8.eterm b/src/jiffy/test/cases/four_byte_utf8.eterm
new file mode 100644
index 0000000..20da680
--- /dev/null
+++ b/src/jiffy/test/cases/four_byte_utf8.eterm
@@ -0,0 +1 @@
+{[{<<"U+10ABCD">>, <<244, 138, 175, 141>>}]}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/four_byte_utf8.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/four_byte_utf8.json b/src/jiffy/test/cases/four_byte_utf8.json
new file mode 100644
index 0000000..582c575
--- /dev/null
+++ b/src/jiffy/test/cases/four_byte_utf8.json
@@ -0,0 +1,2 @@
+{ "U+10ABCD": "􊯍" }
+

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/integers.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/integers.eterm b/src/jiffy/test/cases/integers.eterm
new file mode 100644
index 0000000..bd642e4
--- /dev/null
+++ b/src/jiffy/test/cases/integers.eterm
@@ -0,0 +1,13 @@
+[
+    1,
+    2,
+    3,
+    4,
+    5,
+    6,
+    7,
+    123456789,
+    -123456789,
+    2147483647,
+    -2147483647
+].
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/integers.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/integers.json b/src/jiffy/test/cases/integers.json
new file mode 100644
index 0000000..c50e4c9
--- /dev/null
+++ b/src/jiffy/test/cases/integers.json
@@ -0,0 +1,3 @@
+[ 1,2,3,4,5,6,7,
+  123456789 , -123456789,
+  2147483647, -2147483647 ]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/invalid_utf8.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/invalid_utf8.eterm b/src/jiffy/test/cases/invalid_utf8.eterm
new file mode 100644
index 0000000..f0baaf0
--- /dev/null
+++ b/src/jiffy/test/cases/invalid_utf8.eterm
@@ -0,0 +1 @@
+{error,{10,invalid_string}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/invalid_utf8.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/invalid_utf8.json b/src/jiffy/test/cases/invalid_utf8.json
new file mode 100644
index 0000000..12f1718
--- /dev/null
+++ b/src/jiffy/test/cases/invalid_utf8.json
@@ -0,0 +1 @@
+["Да М� Еба Майката"]

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/isolated_surrogate_marker.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/isolated_surrogate_marker.eterm b/src/jiffy/test/cases/isolated_surrogate_marker.eterm
new file mode 100644
index 0000000..06113c7
--- /dev/null
+++ b/src/jiffy/test/cases/isolated_surrogate_marker.eterm
@@ -0,0 +1 @@
+{error,{8,invalid_string}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/isolated_surrogate_marker.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/isolated_surrogate_marker.json b/src/jiffy/test/cases/isolated_surrogate_marker.json
new file mode 100644
index 0000000..36959f4
--- /dev/null
+++ b/src/jiffy/test/cases/isolated_surrogate_marker.json
@@ -0,0 +1 @@
+"\ud800"

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/leading_zero_in_number.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/leading_zero_in_number.eterm b/src/jiffy/test/cases/leading_zero_in_number.eterm
new file mode 100644
index 0000000..5bc5d8c
--- /dev/null
+++ b/src/jiffy/test/cases/leading_zero_in_number.eterm
@@ -0,0 +1 @@
+{error,{17,invalid_json}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/leading_zero_in_number.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/leading_zero_in_number.json b/src/jiffy/test/cases/leading_zero_in_number.json
new file mode 100644
index 0000000..959f5ba
--- /dev/null
+++ b/src/jiffy/test/cases/leading_zero_in_number.json
@@ -0,0 +1 @@
+{ "bad thing": 01 }

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/lonely_minus_sign.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/lonely_minus_sign.eterm b/src/jiffy/test/cases/lonely_minus_sign.eterm
new file mode 100644
index 0000000..5f172a4
--- /dev/null
+++ b/src/jiffy/test/cases/lonely_minus_sign.eterm
@@ -0,0 +1 @@
+{error,{83,invalid_number}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/lonely_minus_sign.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/lonely_minus_sign.json b/src/jiffy/test/cases/lonely_minus_sign.json
new file mode 100644
index 0000000..c343683
--- /dev/null
+++ b/src/jiffy/test/cases/lonely_minus_sign.json
@@ -0,0 +1,7 @@
+[
+		"foo", true,
+		true, "blue",
+		"baby where are you?", "oh boo hoo!",
+        -
+]
+

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/lonely_number.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/lonely_number.eterm b/src/jiffy/test/cases/lonely_number.eterm
new file mode 100644
index 0000000..b52af81
--- /dev/null
+++ b/src/jiffy/test/cases/lonely_number.eterm
@@ -0,0 +1 @@
+123456789.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/lonely_number.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/lonely_number.json b/src/jiffy/test/cases/lonely_number.json
new file mode 100644
index 0000000..e2e107a
--- /dev/null
+++ b/src/jiffy/test/cases/lonely_number.json
@@ -0,0 +1 @@
+123456789
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/map_close.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/map_close.eterm b/src/jiffy/test/cases/map_close.eterm
new file mode 100644
index 0000000..4aa294e
--- /dev/null
+++ b/src/jiffy/test/cases/map_close.eterm
@@ -0,0 +1 @@
+{error,{1,invalid_json}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/map_close.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/map_close.json b/src/jiffy/test/cases/map_close.json
new file mode 100644
index 0000000..5c34318
--- /dev/null
+++ b/src/jiffy/test/cases/map_close.json
@@ -0,0 +1 @@
+}

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/map_open.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/map_open.eterm b/src/jiffy/test/cases/map_open.eterm
new file mode 100644
index 0000000..9fa573a
--- /dev/null
+++ b/src/jiffy/test/cases/map_open.eterm
@@ -0,0 +1 @@
+{error,{3,truncated_json}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/map_open.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/map_open.json b/src/jiffy/test/cases/map_open.json
new file mode 100644
index 0000000..98232c6
--- /dev/null
+++ b/src/jiffy/test/cases/map_open.json
@@ -0,0 +1 @@
+{

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/missing_integer_after_decimal_point.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/missing_integer_after_decimal_point.eterm b/src/jiffy/test/cases/missing_integer_after_decimal_point.eterm
new file mode 100644
index 0000000..046f3c7
--- /dev/null
+++ b/src/jiffy/test/cases/missing_integer_after_decimal_point.eterm
@@ -0,0 +1 @@
+{error,{4,invalid_number}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/missing_integer_after_decimal_point.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/missing_integer_after_decimal_point.json b/src/jiffy/test/cases/missing_integer_after_decimal_point.json
new file mode 100644
index 0000000..2369f4b
--- /dev/null
+++ b/src/jiffy/test/cases/missing_integer_after_decimal_point.json
@@ -0,0 +1 @@
+10.e2

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/missing_integer_after_exponent.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/missing_integer_after_exponent.eterm b/src/jiffy/test/cases/missing_integer_after_exponent.eterm
new file mode 100644
index 0000000..046f3c7
--- /dev/null
+++ b/src/jiffy/test/cases/missing_integer_after_exponent.eterm
@@ -0,0 +1 @@
+{error,{4,invalid_number}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/missing_integer_after_exponent.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/missing_integer_after_exponent.json b/src/jiffy/test/cases/missing_integer_after_exponent.json
new file mode 100644
index 0000000..a62b45d
--- /dev/null
+++ b/src/jiffy/test/cases/missing_integer_after_exponent.json
@@ -0,0 +1 @@
+10e

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/non_utf8_char_in_string.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/non_utf8_char_in_string.eterm b/src/jiffy/test/cases/non_utf8_char_in_string.eterm
new file mode 100644
index 0000000..0ca5740
--- /dev/null
+++ b/src/jiffy/test/cases/non_utf8_char_in_string.eterm
@@ -0,0 +1 @@
+{error,{125,invalid_string}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/non_utf8_char_in_string.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/non_utf8_char_in_string.json b/src/jiffy/test/cases/non_utf8_char_in_string.json
new file mode 100644
index 0000000..253a664
--- /dev/null
+++ b/src/jiffy/test/cases/non_utf8_char_in_string.json
@@ -0,0 +1 @@
+{"CoreletAPIVersion":2,"CoreletType":"standalone","documentation":"A corelet that provides the capability to upload a folder�s contents into a user�s locker.","functions":[{"documentation":"Displays a dialog box that allows user to select a folder on the local system.","name":"ShowBrowseDialog","parameters":[{"documentation":"The callback function for results.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Uploads all mp3 files in the folder provided.","name":"UploadFolder","parameters":[{"documentation":"The path to upload mp3 files from.","name":"path","required":true,"type":"string"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]},{"documentation":"Returns the server name to the current locker service.","name":"GetLockerService","parameters":[]},{"documentation":"Changes the name of the locker service.","name":"SetLockerService","parameters":[{"documentation":"The value of the locker serv
 ice to set active.","name":"LockerService","required":true,"type":"string"}]},{"documentation":"Downloads locker files to the suggested folder.","name":"DownloadFile","parameters":[{"documentation":"The origin path of the locker file.","name":"path","required":true,"type":"string"},{"documentation":"The Window destination path of the locker file.","name":"destination","required":true,"type":"integer"},{"documentation":"The callback function for progress.","name":"callback","required":true,"type":"callback"}]}],"name":"LockerUploader","version":{"major":0,"micro":1,"minor":0},"versionString":"0.0.1"}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/null.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/null.eterm b/src/jiffy/test/cases/null.eterm
new file mode 100644
index 0000000..bed1002
--- /dev/null
+++ b/src/jiffy/test/cases/null.eterm
@@ -0,0 +1 @@
+null.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/null.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/null.json b/src/jiffy/test/cases/null.json
new file mode 100644
index 0000000..19765bd
--- /dev/null
+++ b/src/jiffy/test/cases/null.json
@@ -0,0 +1 @@
+null

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/null_then_garbage.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/null_then_garbage.eterm b/src/jiffy/test/cases/null_then_garbage.eterm
new file mode 100644
index 0000000..30b0113
--- /dev/null
+++ b/src/jiffy/test/cases/null_then_garbage.eterm
@@ -0,0 +1 @@
+{error,{5,invalid_trailing_data}}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/null_then_garbage.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/null_then_garbage.json b/src/jiffy/test/cases/null_then_garbage.json
new file mode 100644
index 0000000..7b65b35
--- /dev/null
+++ b/src/jiffy/test/cases/null_then_garbage.json
@@ -0,0 +1 @@
+nullx

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/nulls_and_bools.eterm
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/nulls_and_bools.eterm b/src/jiffy/test/cases/nulls_and_bools.eterm
new file mode 100644
index 0000000..68544ed
--- /dev/null
+++ b/src/jiffy/test/cases/nulls_and_bools.eterm
@@ -0,0 +1,5 @@
+{[
+    {<<"boolean, true">>, true},
+    {<<"boolean, false">>, false},
+    {<<"null">>, null}
+]}.

http://git-wip-us.apache.org/repos/asf/couchdb/blob/2e6092e4/src/jiffy/test/cases/nulls_and_bools.json
----------------------------------------------------------------------
diff --git a/src/jiffy/test/cases/nulls_and_bools.json b/src/jiffy/test/cases/nulls_and_bools.json
new file mode 100644
index 0000000..65eb01f
--- /dev/null
+++ b/src/jiffy/test/cases/nulls_and_bools.json
@@ -0,0 +1,5 @@
+{
+	"boolean, true": true,
+	"boolean, false": false,
+	"null": null
+}