選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

65 行
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_05_array_tests).
  4. -include_lib("eunit/include/eunit.hrl").
  5. -include("jiffy_util.hrl").
  6. array_success_test_() ->
  7. [gen(ok, Case) || Case <- cases(ok)].
  8. array_failure_test_() ->
  9. [gen(error, Case) || Case <- cases(error)].
  10. nested_array_test_() ->
  11. Obj = nested(256),
  12. Enc = enc(Obj),
  13. ?_assertEqual(Obj, dec(Enc)).
  14. nested(0) -> <<"bottom">>;
  15. nested(N) -> [nested(N - 1)].
  16. gen(ok, {J, E}) ->
  17. gen(ok, {J, E, J});
  18. gen(ok, {J1, E, J2}) ->
  19. {msg("~s", [J1]), [
  20. {"Decode", ?_assertEqual(E, dec(J1))},
  21. {"Encode", ?_assertEqual(J2, enc(E))}
  22. ]};
  23. gen(error, J) ->
  24. {msg("Error: ~s", [J]), [
  25. ?_assertError(_, dec(J))
  26. ]}.
  27. cases(ok) ->
  28. [
  29. {<<"[]">>, []},
  30. {<<"[\t[\n]\r]">>, [[]], <<"[[]]">>},
  31. {<<"[\t123, \r true\n]">>, [123, true], <<"[123,true]">>},
  32. {<<"[1,\"foo\"]">>, [1, <<"foo">>]},
  33. {<<"[11993444355.0,1]">>, [11993444355.0,1]},
  34. {
  35. <<"[\"\\u00A1\",\"\\u00FC\"]">>,
  36. [<<194, 161>>, <<195, 188>>],
  37. <<"[\"", 194, 161, "\",\"", 195, 188, "\"]">>
  38. }
  39. ];
  40. cases(error) ->
  41. [
  42. <<"[">>,
  43. <<"]">>,
  44. <<"[,]">>,
  45. <<"[123">>,
  46. <<"[123,]">>,
  47. <<"[32 true]">>
  48. ].