You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

51 lines
1.3 KiB

#! /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,}">>
].