瀏覽代碼

Raise errors instead of throwing

pull/139/merge
Eric Meadows-Jönsson 9 年之前
committed by Paul J. Davis
父節點
當前提交
2a14a3bb8c
共有 9 個文件被更改,包括 21 次插入21 次删除
  1. 二進制
      .rebar/erlcinfo
  2. +10
    -10
      src/jiffy.erl
  3. +2
    -2
      test/jiffy_01_yajl_tests.erl
  4. +1
    -1
      test/jiffy_03_number_tests.erl
  5. +4
    -4
      test/jiffy_04_string_tests.erl
  6. +1
    -1
      test/jiffy_05_array_tests.erl
  7. +1
    -1
      test/jiffy_06_object_tests.erl
  8. +1
    -1
      test/jiffy_07_compound_tests.erl
  9. +1
    -1
      test/jiffy_12_error_tests.erl

二進制
.rebar/erlcinfo 查看文件


+ 10
- 10
src/jiffy.erl 查看文件

@ -67,8 +67,8 @@ decode(Data) ->
-spec decode(iolist() | binary(), decode_options()) -> jiffy_decode_result().
decode(Data, Opts) when is_binary(Data), is_list(Opts) ->
case nif_decode_init(Data, Opts) of
{error, _} = Error ->
throw(Error);
{error, Error} ->
error(Error);
{partial, EJson} ->
finish_decode(EJson);
{iter, Decoder, Val, Objs, Curr} ->
@ -95,8 +95,8 @@ encode(Data, Options) ->
{error, {invalid_object_member_key, _}} when ForceUTF8 == true ->
FixedData = jiffy_utf8:fix(Data),
encode(FixedData, Options -- [force_utf8]);
{error, _} = Error ->
throw(Error);
{error, Error} ->
error(Error);
{partial, IOData} ->
finish_encode(IOData, []);
{iter, Encoder, Stack, IOBuf} ->
@ -161,9 +161,9 @@ finish_encode([Val | Rest], Acc) when is_integer(Val) ->
Bin = list_to_binary(integer_to_list(Val)),
finish_encode(Rest, [Bin | Acc]);
finish_encode([InvalidEjson | _], _) ->
throw({error, {invalid_ejson, InvalidEjson}});
error({invalid_ejson, InvalidEjson});
finish_encode(_, _) ->
throw({error, invalid_ejson}).
error(invalid_ejson).
init() ->
@ -180,8 +180,8 @@ init() ->
decode_loop(Data, Decoder, Val, Objs, Curr) ->
case nif_decode_iter(Data, Decoder, Val, Objs, Curr) of
{error, _} = Error ->
throw(Error);
{error, Error} ->
error(Error);
{partial, EJson} ->
finish_decode(EJson);
{iter, NewDecoder, NewVal, NewObjs, NewCurr} ->
@ -200,8 +200,8 @@ encode_loop(Data, Options, Encoder, Stack, IOBuf) ->
{error, {invalid_object_member_key, _}} when ForceUTF8 == true ->
FixedData = jiffy_utf8:fix(Data),
encode(FixedData, Options -- [force_utf8]);
{error, _} = Error ->
throw(Error);
{error, Error} ->
error(Error);
{partial, IOData} ->
finish_encode(IOData, []);
{iter, NewEncoder, NewStack, NewIOBuf} ->

+ 2
- 2
test/jiffy_01_yajl_tests.erl 查看文件

@ -13,8 +13,8 @@ yajl_test_() ->
[gen(Case) || Case <- Cases].
gen({Name, Json, {error, _}=Erl}) ->
{Name, ?_assertThrow(Erl, jiffy:decode(Json))};
gen({Name, Json, {error, Erl}}) ->
{Name, ?_assertError(Erl, jiffy:decode(Json))};
gen({Name, Json, Erl}) ->
{Name, ?_assertEqual(Erl, jiffy:decode(Json))}.

+ 1
- 1
test/jiffy_03_number_tests.erl 查看文件

@ -30,7 +30,7 @@ gen(ok, {J1, E, J2}) ->
gen(error, J) ->
{msg("Error: ~s", [J]), [
?_assertThrow({error, _}, dec(J))
?_assertError(_, dec(J))
]};
gen(floats, F) ->

+ 4
- 4
test/jiffy_04_string_tests.erl 查看文件

@ -52,21 +52,21 @@ gen(uescaped, {J, E}) ->
gen(error, J) ->
{msg("error - ~s", [J]), [
?_assertThrow({error, _}, dec(J))
?_assertError(_, dec(J))
]};
gen(utf8, {Case, Fixed}) ->
Case2 = <<34, Case/binary, 34>>,
Fixed2 = <<34, Fixed/binary, 34>>,
{msg("UTF-8: ~s", [hex(Case)]), [
?_assertThrow({error, {invalid_string, _}}, jiffy:encode(Case)),
?_assertError({invalid_string, _}, jiffy:encode(Case)),
?_assertEqual(Fixed2, jiffy:encode(Case, [force_utf8])),
?_assertThrow({error, {_, invalid_string}}, jiffy:decode(Case2))
?_assertError({_, invalid_string}, jiffy:decode(Case2))
]};
gen(bad_utf8_key, {J, E}) ->
{msg("Bad UTF-8 key: - ~p", [size(term_to_binary(J))]), [
?_assertThrow({error, {invalid_object_member_key, _}}, jiffy:encode(J)),
?_assertError({invalid_object_member_key, _}, jiffy:encode(J)),
?_assertEqual(E, jiffy:decode(jiffy:encode(J, [force_utf8])))
]};

+ 1
- 1
test/jiffy_05_array_tests.erl 查看文件

@ -26,7 +26,7 @@ gen(ok, {J1, E, J2}) ->
gen(error, J) ->
{msg("Error: ~s", [J]), [
?_assertThrow({error, _}, dec(J))
?_assertError(_, dec(J))
]}.

+ 1
- 1
test/jiffy_06_object_tests.erl 查看文件

@ -26,7 +26,7 @@ gen(ok, {J1, E, J2}) ->
gen(error, J) ->
{msg("Error: ~s", [J]), [
?_assertThrow({error, _}, dec(J))
?_assertError(_, dec(J))
]}.

+ 1
- 1
test/jiffy_07_compound_tests.erl 查看文件

@ -26,7 +26,7 @@ gen(ok, {J1, E, J2}) ->
gen(error, J) ->
{msg("Error: ~s", [J]), [
?_assertThrow({error, _}, dec(J))
?_assertError(_, dec(J))
]}.

+ 1
- 1
test/jiffy_12_error_tests.erl 查看文件

@ -84,4 +84,4 @@ enc_invalid_object_member_key_test_() ->
enc_error(Type, Obj, Case) ->
?_assertEqual({error, {Type, Obj}}, (catch jiffy:encode(Case))).
?_assertMatch({'EXIT', {{Type, Obj}, _}}, (catch jiffy:encode(Case))).

Loading…
取消
儲存