add tests for error states
This commit is contained in:
parent
9148c04956
commit
a76cdf720c
1 changed files with 95 additions and 4 deletions
|
@ -762,7 +762,6 @@ finish_number(<<?solidus, Rest/binary>>, Handler, Acc, Stack, Config=#config{com
|
||||||
comment(Rest, handle_event(format_number(Acc), Handler, Config), [maybe_done|Stack], Config);
|
comment(Rest, handle_event(format_number(Acc), Handler, Config), [maybe_done|Stack], Config);
|
||||||
finish_number(<<>>, Handler, {NumType, Acc}, Stack, Config) ->
|
finish_number(<<>>, Handler, {NumType, Acc}, Stack, Config) ->
|
||||||
case NumType of
|
case NumType of
|
||||||
zero -> ?incomplete(zero, <<>>, Handler, Acc, Stack, Config);
|
|
||||||
integer -> ?incomplete(integer, <<>>, Handler, Acc, Stack, Config);
|
integer -> ?incomplete(integer, <<>>, Handler, Acc, Stack, Config);
|
||||||
decimal -> ?incomplete(decimal, <<>>, Handler, Acc, Stack, Config);
|
decimal -> ?incomplete(decimal, <<>>, Handler, Acc, Stack, Config);
|
||||||
exp -> ?incomplete(exp, <<>>, Handler, Acc, Stack, Config)
|
exp -> ?incomplete(exp, <<>>, Handler, Acc, Stack, Config)
|
||||||
|
@ -869,12 +868,10 @@ multi_comment(Bin, Handler, Stack, Config) ->
|
||||||
|
|
||||||
end_multi_comment(<<?solidus, Rest/binary>>, Handler, Stack, Config) ->
|
end_multi_comment(<<?solidus, Rest/binary>>, Handler, Stack, Config) ->
|
||||||
end_comment(Rest, Handler, Stack, Config);
|
end_comment(Rest, Handler, Stack, Config);
|
||||||
end_multi_comment(<<_S/utf8, Rest/binary>>, Handler, Stack, Config) ->
|
|
||||||
multi_comment(Rest, Handler, Stack, Config);
|
|
||||||
end_multi_comment(<<>>, Handler, [Resume|Stack], Config) ->
|
end_multi_comment(<<>>, Handler, [Resume|Stack], Config) ->
|
||||||
?incomplete(comment, <<?star, ?star>>, Handler, Resume, Stack, Config);
|
?incomplete(comment, <<?star, ?star>>, Handler, Resume, Stack, Config);
|
||||||
end_multi_comment(Bin, Handler, Stack, Config) ->
|
end_multi_comment(Bin, Handler, Stack, Config) ->
|
||||||
?error(comment, <<?star, ?star, Bin/binary>>, Handler, Stack, Config).
|
multi_comment(Bin, Handler, Stack, Config).
|
||||||
|
|
||||||
|
|
||||||
end_comment(Rest, Handler, [Resume|Stack], Config) ->
|
end_comment(Rest, Handler, [Resume|Stack], Config) ->
|
||||||
|
@ -1806,5 +1803,99 @@ bom_test_() ->
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|
||||||
|
error_test_() ->
|
||||||
|
Decode = fun(JSON, Config) -> start(JSON, {jsx, []}, [], jsx_utils:parse_config(Config)) end,
|
||||||
|
[
|
||||||
|
{"maybe_bom error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<16#ef, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"definitely_bom error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<16#ef, 16#bb, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"value error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<0>>, [])
|
||||||
|
)},
|
||||||
|
{"object error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"{"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"colon error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"{\"\""/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"key error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"{\"\":1,"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"negative error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"-"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"zero error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"0"/utf8, 0>>, [explicit_end])
|
||||||
|
)},
|
||||||
|
{"integer error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1"/utf8, 0>>, [explicit_end])
|
||||||
|
)},
|
||||||
|
{"decimal error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1.0"/utf8, 0>>, [explicit_end])
|
||||||
|
)},
|
||||||
|
{"exp error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1.0e1"/utf8, 0>>, [explicit_end])
|
||||||
|
)},
|
||||||
|
{"e error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1e"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"ex error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1e+"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"exp error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"1.e"/utf8>>, [])
|
||||||
|
)},
|
||||||
|
{"true error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"tru"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"false error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"fals"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"null error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"nul"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"maybe_done error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"[[]"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"done error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"[]"/utf8, 0>>, [])
|
||||||
|
)},
|
||||||
|
{"comment error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"[ / ]">>, [comments])
|
||||||
|
)},
|
||||||
|
{"single_comment error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"[ //"/utf8, 192>>, [comments])
|
||||||
|
)},
|
||||||
|
{"multi_comment error", ?_assertError(
|
||||||
|
badarg,
|
||||||
|
Decode(<<"[ /*"/utf8, 192>>, [comments])
|
||||||
|
)}
|
||||||
|
].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-endif.
|
-endif.
|
Loading…
Add table
Add a link
Reference in a new issue