added first (primitive) tests, fixed a few bugs in decoder

This commit is contained in:
alisdair sullivan 2010-05-18 14:07:16 -07:00
parent baf8561780
commit 1753512b10
2 changed files with 56 additions and 0 deletions

View file

@ -242,6 +242,8 @@ zero(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S
maybe_done(Rest, Stack, callback({number, lists:reverse(Acc)}, Callbacks), Opts);
zero(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts.comments == true ->
maybe_comment(Rest, fun(Resume) -> zero(Resume, Stack, Callbacks, Opts, Acc) end);
zero(<<>>, [], Callbacks, _Opts, Acc) ->
callback(eof, callback({number, lists:reverse(Acc)}, Callbacks));
zero(<<>>, Stack, Callbacks, Opts, Acc) ->
fun(Stream) -> zero(Stream, Stack, Callbacks, Opts, Acc) end.
@ -268,6 +270,8 @@ integer(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespac
maybe_done(Rest, Stack, callback({number, lists:reverse(Acc)}, Callbacks), Opts);
integer(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts.comments == true ->
maybe_comment(Rest, fun(Resume) -> integer(Resume, Stack, Callbacks, Opts, Acc) end);
integer(<<>>, [], Callbacks, _Opts, Acc) ->
callback(eof, callback({number, lists:reverse(Acc)}, Callbacks));
integer(<<>>, Stack, Callbacks, Opts, Acc) ->
fun(Stream) -> integer(Stream, Stack, Callbacks, Opts, Acc) end.
@ -292,6 +296,8 @@ fraction(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespa
maybe_done(Rest, Stack, callback({number, lists:reverse(Acc)}, Callbacks), Opts);
fraction(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts.comments == true ->
maybe_comment(Rest, fun(Resume) -> fraction(Resume, Stack, Callbacks, Opts, Acc) end);
fraction(<<>>, [], Callbacks, _Opts, Acc) ->
callback(eof, callback({number, lists:reverse(Acc)}, Callbacks));
fraction(<<>>, Stack, Callbacks, Opts, Acc) ->
fun(Stream) -> fraction(Stream, Stack, Callbacks, Opts, Acc) end.
@ -326,6 +332,8 @@ exp(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when ?is_whitespace(S)
maybe_done(Rest, Stack, callback({number, lists:reverse(Acc)}, Callbacks), Opts);
exp(<<?rsolidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts.comments == true ->
maybe_comment(Rest, fun(Resume) -> exp(Resume, Stack, Callbacks, Opts, Acc) end);
exp(<<>>, [], Callbacks, _Opts, Acc) ->
callback(eof, callback({number, lists:reverse(Acc)}, Callbacks));
exp(<<>>, Stack, Callbacks, Opts, Acc) ->
fun(Stream) -> exp(Stream, Stack, Callbacks, Opts, Acc) end.