- % This file is part of Jiffy released under the MIT license.
- % See the LICENSE file for more information.
-
- -module(jiffy_12_error_tests).
-
- -include_lib("eunit/include/eunit.hrl").
-
-
- -define(ENC_ERROR(Type, Obj, Case),
- ?_assertEqual({error, {Type, Obj}}, (catch jiffy:encode(Case)))).
-
-
- enc_invalid_ejson_test_() ->
- Type = invalid_ejson,
- Ref = make_ref(),
- {"invalid_ejson", [
- {"the atom 'undefined'", ?ENC_ERROR(Type, undefined, undefined)},
- {"Basic", ?ENC_ERROR(Type, Ref, Ref)},
- {"Nested", ?ENC_ERROR(Type, {Ref, Ref}, {Ref, Ref})}
- ]}.
-
-
- enc_invalid_string_test_() ->
- Type = invalid_string,
- {"invalid_string", [
- {"Bare strign", ?ENC_ERROR(Type, <<143>>, <<143>>)},
- {"List element", ?ENC_ERROR(Type, <<143>>, [<<143>>])},
- {"Bad obj value", ?ENC_ERROR(Type, <<143>>, {[{foo, <<143>>}]})}
- ]}.
-
- enc_invalid_object_test_() ->
- Type = invalid_object,
- Ref = make_ref(),
- {"invalid_object", [
- {"Number", ?ENC_ERROR(Type, {1}, {1})},
- {"Ref", ?ENC_ERROR(Type, {Ref}, {Ref})},
- {"Tuple", ?ENC_ERROR(Type, {{[]}}, {{[]}})},
- {"Atom", ?ENC_ERROR(Type, {foo}, {foo})}
- ]}.
-
-
- enc_invalid_object_member_test_() ->
- Type = invalid_object_member,
- {"invalid_object_member", [
- {"Basic", ?ENC_ERROR(Type, foo, {[foo]})},
- {"Basic", ?ENC_ERROR(Type, foo, {[{bar, baz}, foo]})},
- {"Nested", ?ENC_ERROR(Type, foo, {[{bar,{[foo]}}]})},
- {"Nested", ?ENC_ERROR(Type, foo, {[{bar,{[{baz, 1}, foo]}}]})},
- {"In List", ?ENC_ERROR(Type, foo, [{[foo]}])},
- {"In List", ?ENC_ERROR(Type, foo, [{[{bang, true}, foo]}])}
- ]}.
-
-
- enc_invalid_object_member_arity_test_() ->
- Type = invalid_object_member_arity,
- E1 = {foo},
- E2 = {x, y, z},
- {"invalid_object_member", [
- {"Basic", ?ENC_ERROR(Type, E1, {[E1]})},
- {"Basic", ?ENC_ERROR(Type, E2, {[E2]})},
- {"Basic", ?ENC_ERROR(Type, E1, {[{bar, baz}, E1]})},
- {"Basic", ?ENC_ERROR(Type, E2, {[{bar, baz}, E2]})},
- {"Nested", ?ENC_ERROR(Type, E1, {[{bar,{[E1]}}]})},
- {"Nested", ?ENC_ERROR(Type, E2, {[{bar,{[E2]}}]})},
- {"Nested", ?ENC_ERROR(Type, E1, {[{bar,{[{baz, 1}, E1]}}]})},
- {"Nested", ?ENC_ERROR(Type, E2, {[{bar,{[{baz, 1}, E2]}}]})},
- {"In List", ?ENC_ERROR(Type, E1, [{[E1]}])},
- {"In List", ?ENC_ERROR(Type, E2, [{[E2]}])},
- {"In List", ?ENC_ERROR(Type, E1, [{[{bang, true}, E1]}])},
- {"In List", ?ENC_ERROR(Type, E2, [{[{bang, true}, E2]}])}
- ]}.
-
-
- enc_invalid_object_member_key_test_() ->
- Type = invalid_object_member_key,
- E1 = {1, true},
- {"invalid_object_member_key", [
- {"Bad string", ?ENC_ERROR(Type, <<143>>, {[{<<143>>, true}]})},
- {"Basic", ?ENC_ERROR(Type, 1, {[{1, true}]})},
- {"Basic", ?ENC_ERROR(Type, [1], {[{[1], true}]})},
- {"Basic", ?ENC_ERROR(Type, {[{foo,bar}]}, {[{{[{foo,bar}]}, true}]})},
- {"Second", ?ENC_ERROR(Type, 1, {[{bar, baz}, E1]})},
- {"Nested", ?ENC_ERROR(Type, 1, {[{bar,{[E1]}}]})},
- {"Nested", ?ENC_ERROR(Type, 1, {[{bar,{[{baz, 1}, E1]}}]})},
- {"In List", ?ENC_ERROR(Type, 1, [{[E1]}])},
- {"In List", ?ENC_ERROR(Type, 1, [{[{bang, true}, E1]}])}
- ]}.
|