您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

56 行
1.3 KiB

  1. % This file is part of Jiffy released under the MIT license.
  2. % See the LICENSE file for more information.
  3. -module(jiffy_06_object_tests).
  4. -include_lib("proper/include/proper.hrl").
  5. -include_lib("eunit/include/eunit.hrl").
  6. -include("jiffy_util.hrl").
  7. object_success_test_() ->
  8. [gen(ok, Case) || Case <- cases(ok)].
  9. object_failure_test_() ->
  10. [gen(error, Case) || Case <- cases(error)].
  11. gen(ok, {J, E}) ->
  12. gen(ok, {J, E, J});
  13. gen(ok, {J1, E, J2}) ->
  14. {msg("~s", [J1]), [
  15. {"Decode", ?_assertEqual(E, dec(J1))},
  16. {"Encode", ?_assertEqual(J2, enc(E))}
  17. ]};
  18. gen(error, J) ->
  19. {msg("Error: ~s", [J]), [
  20. ?_assertThrow({error, _}, dec(J))
  21. ]}.
  22. cases(ok) ->
  23. [
  24. {<<"{}">>, {[]}},
  25. {<<"{\"foo\": \"bar\"}">>,
  26. {[{<<"foo">>, <<"bar">>}]},
  27. <<"{\"foo\":\"bar\"}">>},
  28. {<<"\n\n{\"foo\":\r \"bar\",\n \"baz\"\t: 123 }">>,
  29. {[{<<"foo">>, <<"bar">>}, {<<"baz">>, 123}]},
  30. <<"{\"foo\":\"bar\",\"baz\":123}">>}
  31. ];
  32. cases(error) ->
  33. [
  34. <<"{">>,
  35. <<"{,}">>,
  36. <<"{123:true}">>,
  37. <<"{false:123}">>,
  38. <<"{:\"stuff\"}">>,
  39. <<"{\"key\":}">>,
  40. <<"{\"key\": 123">>,
  41. <<"{\"key\": 123 true">>,
  42. <<"{\"key\": 123,}">>
  43. ].