You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 regels
861 B

  1. % This file is part of Jiffy released under the MIT license.
  2. % See the LICENSE file for more information.
  3. -module(jiffy_01_yajl_tests).
  4. -include_lib("eunit/include/eunit.hrl").
  5. yajl_test_() ->
  6. Cases = read_cases(),
  7. [gen(Case) || Case <- Cases].
  8. gen({Name, Json, {error, _}=Erl}) ->
  9. {Name, ?_assertThrow(Erl, jiffy:decode(Json))};
  10. gen({Name, Json, Erl}) ->
  11. {Name, ?_assertEqual(Erl, jiffy:decode(Json))}.
  12. read_cases() ->
  13. CasesPath = filename:join(["..", "test", "cases", "*.json"]),
  14. FileNames = lists:sort(filelib:wildcard(CasesPath)),
  15. lists:map(fun(F) -> make_pair(F) end, FileNames).
  16. make_pair(FileName) ->
  17. {ok, Json} = file:read_file(FileName),
  18. BaseName = filename:rootname(FileName),
  19. ErlFname = BaseName ++ ".eterm",
  20. {ok, [Term]} = file:consult(ErlFname),
  21. {filename:basename(BaseName), Json, Term}.