No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

60 líneas
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_07_compound_tests).
  4. -include_lib("eunit/include/eunit.hrl").
  5. -include("jiffy_util.hrl").
  6. compound_success_test_() ->
  7. [gen(ok, Case) || Case <- cases(ok)].
  8. compound_failure_test_() ->
  9. [gen(error, Case) || Case <- cases(error)].
  10. gen(ok, {J, E}) ->
  11. gen(ok, {J, E, J});
  12. gen(ok, {J1, E, J2}) ->
  13. {msg("~s", [J1]), [
  14. {"Decode", ?_assertEqual(E, dec(J1))},
  15. {"Encode", ?_assertEqual(J2, enc(E))}
  16. ]};
  17. gen(error, J) ->
  18. {msg("Error: ~s", [J]), [
  19. ?_assertThrow({error, _}, dec(J))
  20. ]}.
  21. cases(ok) ->
  22. [
  23. {<<"[{}]">>, [{[]}]},
  24. {<<"{\"foo\":[123]}">>, {[{<<"foo">>, [123]}]}},
  25. {<<"{\"foo\":{\"bar\":true}}">>,
  26. {[{<<"foo">>, {[{<<"bar">>, true}]} }]} },
  27. {<<"{\"foo\":[],\"bar\":{\"baz\":true},\"alice\":\"bob\"}">>,
  28. {[
  29. {<<"foo">>, []},
  30. {<<"bar">>, {[{<<"baz">>, true}]}},
  31. {<<"alice">>, <<"bob">>}
  32. ]}
  33. },
  34. {<<"[-123,\"foo\",{\"bar\":[]},null]">>,
  35. [
  36. -123,
  37. <<"foo">>,
  38. {[{<<"bar">>, []}]},
  39. null
  40. ]
  41. }
  42. ];
  43. cases(error) ->
  44. [
  45. <<"[{}">>,
  46. <<"}]">>
  47. ].