emqx/test/emqx_json_SUITE.erl

38 lines
1.6 KiB
Erlang

%% Copyright (c) 2013-2019 EMQ Technologies Co., Ltd. All Rights Reserved.
%%
%% Licensed under the Apache License, Version 2.0 (the "License");
%% you may not use this file except in compliance with the License.
%% You may obtain a copy of the License at
%%
%% http://www.apache.org/licenses/LICENSE-2.0
%%
%% Unless required by applicable law or agreed to in writing, software
%% distributed under the License is distributed on an "AS IS" BASIS,
%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
%% See the License for the specific language governing permissions and
%% limitations under the License.
-module(emqx_json_SUITE).
-compile(export_all).
-compile(nowarn_export_all).
all() -> [t_decode_encode, t_safe_decode_encode].
t_decode_encode(_) ->
JsonText = <<"{\"library\": \"jsx\", \"awesome\": true}">>,
JsonTerm = emqx_json:decode(JsonText),
JsonMaps = #{library => <<"jsx">>, awesome => true},
JsonMaps = emqx_json:decode(JsonText, [{labels, atom}, return_maps]),
JsonText = emqx_json:encode(JsonTerm, [{space, 1}]).
t_safe_decode_encode(_) ->
JsonText = <<"{\"library\": \"jsx\", \"awesome\": true}">>,
{ok, JsonTerm} = emqx_json:safe_decode(JsonText),
JsonMaps = #{library => <<"jsx">>, awesome => true},
{ok, JsonMaps} = emqx_json:safe_decode(JsonText, [{labels, atom}, return_maps]),
{ok, JsonText} = emqx_json:safe_encode(JsonTerm, [{space, 1}]),
BadJsonText = <<"{\"library\", \"awesome\": true}">>,
{error, _} = emqx_json:safe_decode(BadJsonText),
{error, _} = emqx_json:safe_encode({a, {b ,1}}).