-module(util). -export([test_good/1, test_errors/1]). test_good(Cases) -> lists:foreach(fun(Case) -> check_good(Case) end, Cases). test_errors(Cases) -> lists:foreach(fun(Case) -> check_error(Case) end, Cases). ok_dec(J, _E) -> lists:flatten(io_lib:format("Decoded ~p.", [J])). ok_enc(E, _J) -> lists:flatten(io_lib:format("Encoded ~p", [E])). do_encode(E) -> iolist_to_binary(jiffy:encode(E)). error_mesg(J) -> lists:flatten(io_lib:format("Decoding ~p returns an error.", [J])). check_good({J, E}) -> etap:is(jiffy:decode(J), E, ok_dec(J, E)), etap:is(do_encode(E), J, ok_enc(E, J)); check_good({J, E, J2}) -> etap:is(jiffy:decode(J), E, ok_dec(J, E)), etap:is(do_encode(E), J2, ok_enc(E, J2)). check_error({J, E}) -> etap:fun_is( fun({error, E1}) when E1 == E -> true; (E1) -> E1 end, (catch jiffy:decode(J)), error_mesg(J) ); check_error(J) -> etap:fun_is( fun({error, _}) -> true; (Else) -> Else end, (catch jiffy:decode(J)), error_mesg(J) ).