25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
859 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. -include("jiffy_util.hrl").
  6. yajl_test_() ->
  7. Cases = read_cases(),
  8. [gen(Case) || Case <- Cases].
  9. gen({Name, Json, {error, Erl}}) ->
  10. {Name, ?_assertError(Erl, jiffy:decode(Json))};
  11. gen({Name, Json, Erl}) ->
  12. {Name, ?_assertEqual(Erl, jiffy:decode(Json))}.
  13. read_cases() ->
  14. CasesPath = cases_path("*.json"),
  15. FileNames = lists:sort(filelib:wildcard(CasesPath)),
  16. lists:map(fun(F) -> make_pair(F) end, FileNames).
  17. make_pair(FileName) ->
  18. {ok, Json} = file:read_file(FileName),
  19. BaseName = filename:rootname(FileName),
  20. ErlFname = BaseName ++ ".eterm",
  21. {ok, [Term]} = file:consult(ErlFname),
  22. {filename:basename(BaseName), Json, Term}.