diff --git a/.rebar/erlcinfo b/.rebar/erlcinfo new file mode 100644 index 0000000..5464f68 Binary files /dev/null and b/.rebar/erlcinfo differ diff --git a/src/jiffy.erl b/src/jiffy.erl index 9871e4f..6ed825a 100644 --- a/src/jiffy.erl +++ b/src/jiffy.erl @@ -64,8 +64,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} -> @@ -92,8 +92,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} -> @@ -158,9 +158,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() -> @@ -177,8 +177,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} -> @@ -197,8 +197,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} -> diff --git a/test/jiffy_01_yajl_tests.erl b/test/jiffy_01_yajl_tests.erl index aedaf71..046c4aa 100644 --- a/test/jiffy_01_yajl_tests.erl +++ b/test/jiffy_01_yajl_tests.erl @@ -12,8 +12,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))}. diff --git a/test/jiffy_03_number_tests.erl b/test/jiffy_03_number_tests.erl index ac7b95f..0d2b430 100644 --- a/test/jiffy_03_number_tests.erl +++ b/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) -> diff --git a/test/jiffy_04_string_tests.erl b/test/jiffy_04_string_tests.erl index 7cf645d..b701487 100644 --- a/test/jiffy_04_string_tests.erl +++ b/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]))) ]}; diff --git a/test/jiffy_05_array_tests.erl b/test/jiffy_05_array_tests.erl index dcad7ec..1fe4542 100644 --- a/test/jiffy_05_array_tests.erl +++ b/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)) ]}. diff --git a/test/jiffy_06_object_tests.erl b/test/jiffy_06_object_tests.erl index 6e8834e..827184c 100644 --- a/test/jiffy_06_object_tests.erl +++ b/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)) ]}. diff --git a/test/jiffy_07_compound_tests.erl b/test/jiffy_07_compound_tests.erl index 7a811db..45fd383 100644 --- a/test/jiffy_07_compound_tests.erl +++ b/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)) ]}. diff --git a/test/jiffy_12_error_tests.erl b/test/jiffy_12_error_tests.erl index a7d4ed6..54de9a7 100644 --- a/test/jiffy_12_error_tests.erl +++ b/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))).