Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

41 řádky
1.0 KiB

  1. -module(util).
  2. -export([test_good/1, test_errors/1]).
  3. test_good(Cases) ->
  4. lists:foreach(fun(Case) -> check_good(Case) end, Cases).
  5. test_errors(Cases) ->
  6. lists:foreach(fun(Case) -> check_error(Case) end, Cases).
  7. ok_dec(J, _E) ->
  8. lists:flatten(io_lib:format("Decoded ~p.", [J])).
  9. ok_enc(E, _J) ->
  10. lists:flatten(io_lib:format("Encoded ~p", [E])).
  11. do_encode(E) ->
  12. iolist_to_binary(jiffy:encode(E)).
  13. error_mesg(J) ->
  14. lists:flatten(io_lib:format("Decoding ~p returns an error.", [J])).
  15. check_good({J, E}) ->
  16. etap:is(jiffy:decode(J), E, ok_dec(J, E)),
  17. etap:is(do_encode(E), J, ok_enc(E, J));
  18. check_good({J, E, J2}) ->
  19. etap:is(jiffy:decode(J), E, ok_dec(J, E)),
  20. etap:is(do_encode(E), J2, ok_enc(E, J2)).
  21. check_error({J, E}) ->
  22. etap:fun_is(
  23. fun({error, E1}) when E1 == E -> true; (E1) -> E1 end,
  24. (catch jiffy:decode(J)),
  25. error_mesg(J)
  26. );
  27. check_error(J) ->
  28. etap:fun_is(
  29. fun({error, _}) -> true; (Else) -> Else end,
  30. (catch jiffy:decode(J)),
  31. error_mesg(J)
  32. ).