1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-03 09:49:18 +02:00
ejabberd/test/json_test.erl
Badlop 38cc3ccb1e Avoid using the "else" conditional compilation macro directive
Even if "-else." is a valid directive:
  https://www.erlang.org/docs/28/system/macros.html#conditional-compilation
there is a bug in rebar3_format that annoyingly rewrites it as "- else ."
  https://github.com/AdRoll/rebar3_format/issues/337
as a quick workaround, rewrite directives to not use "-else."
2025-06-05 17:02:41 +02:00

76 lines
2.3 KiB
Erlang

-module(json_test).
-compile(export_all).
-include_lib("eunit/include/eunit.hrl").
%% @format-begin
encode_binary_test() ->
Binary = <<"This is an error text.">>,
Encoded = <<"\"This is an error text.\"">>,
?assertMatch(Encoded, misc:json_encode(Binary)).
-ifdef(OTP_BELOW_26).
%% OTP 25 or lower
encode_map_test() ->
Map = #{name => <<"room">>,
service => <<"conference">>,
jid => jid:encode({<<"user">>, <<"server">>, <<"">>}),
affiliation => member},
Encoded =
<<"{\"service\":\"conference\",\"name\":\"room\",\"jid\":\"user@server\",\"affiliation\":\"member\"}">>,
?assertMatch(Encoded, misc:json_encode(Map)).
-endif.
-ifdef(OTP_BELOW_27).
-ifndef(OTP_BELOW_26).
%% OTP 26
encode_map_test() ->
Map = #{name => <<"room">>,
service => <<"conference">>,
jid => jid:encode({<<"user">>, <<"server">>, <<"">>}),
affiliation => member},
Encoded =
<<"{\"affiliation\":\"member\",\"jid\":\"user@server\",\"service\":\"conference\",\"name\":\"room\"}">>,
?assertMatch(Encoded, misc:json_encode(Map)).
-endif.
-endif.
-ifndef(OTP_BELOW_27).
%% OTP 27 or higher or higher
encode_map_test() ->
Map = #{name => <<"room">>,
service => <<"conference">>,
jid => jid:encode({<<"user">>, <<"server">>, <<"">>}),
affiliation => member},
Encoded27 =
<<"{\"name\":\"room\",\"service\":\"conference\",\"jid\":\"user@server\",\"affiliation\":\"member\"}">>,
?assertMatch(Encoded27, misc:json_encode(Map)).
-endif.
decode_test() ->
Encoded =
<<"{\"affiliation\":\"member\",\"jid\":\"user@server\",\"service\":\"conference\",\"name\":\"room\"}">>,
TupleList =
#{<<"affiliation">> => <<"member">>,
<<"jid">> => <<"user@server">>,
<<"name">> => <<"room">>,
<<"service">> => <<"conference">>},
?assertMatch(TupleList, misc:json_decode(Encoded)).
decode_maps_test() ->
Encoded =
<<"{\"affiliation\":\"member\",\"jid\":\"user@server\",\"service\":\"conference\",\"name\":\"room\"}">>,
Map = #{<<"affiliation">> => misc:atom_to_binary(member),
<<"jid">> => jid:encode({<<"user">>, <<"server">>, <<"">>}),
<<"name">> => <<"room">>,
<<"service">> => <<"conference">>},
?assertMatch(Map, misc:json_decode(Encoded)).