#! /usr/bin/env escript
|
|
% This file is part of Jiffy released under the MIT license.
|
|
% See the LICENSE file for more information.
|
|
|
|
main([]) ->
|
|
code:add_pathz("ebin"),
|
|
code:add_pathz("test"),
|
|
|
|
etap:plan(15),
|
|
util:test_good(good()),
|
|
test_encode(),
|
|
util:test_errors(errors()),
|
|
etap:end_tests().
|
|
|
|
good() ->
|
|
[
|
|
{<<"{}">>, {[]}},
|
|
{<<"{\"foo\": \"bar\"}">>,
|
|
{[{<<"foo">>, <<"bar">>}]},
|
|
<<"{\"foo\":\"bar\"}">>},
|
|
{<<"\n\n{\"foo\":\r \"bar\",\n \"baz\"\t: 123 }">>,
|
|
{[{<<"foo">>, <<"bar">>}, {<<"baz">>, 123}]},
|
|
<<"{\"foo\":\"bar\",\"baz\":123}">>}
|
|
].
|
|
|
|
|
|
test_encode() ->
|
|
% Its ok to use iolist() for keys
|
|
Cases = [
|
|
{<<"{\"foo\":true}">>, {[{"foo",true}]}},
|
|
{<<"{\"foo\":true}">>, {[{["f","o",<<"o">>],true}]}},
|
|
{<<"{\"foo\":[98,97,114]}">>, {[{"foo","bar"}]}}
|
|
],
|
|
lists:foreach(fun({J, E}) ->
|
|
Msg = lists:flatten(io_lib:format("Encoded ~p", [E])),
|
|
etap:is(jiffy:encode(E), J, Msg)
|
|
end, Cases).
|
|
|
|
|
|
errors() ->
|
|
[
|
|
<<"{">>,
|
|
<<"{,}">>,
|
|
<<"{123:true}">>,
|
|
<<"{false:123}">>,
|
|
<<"{:\"stuff\"}">>,
|
|
<<"{\"key\":}">>,
|
|
<<"{\"key\": 123">>,
|
|
<<"{\"key\": 123 true">>,
|
|
<<"{\"key\": 123,}">>
|
|
].
|