| % This file is part of Jiffy released under the MIT license. |
| % See the LICENSE file for more information. |
| |
| -module(jiffy_17_copy_strings_tests). |
| |
| -include_lib("eunit/include/eunit.hrl"). |
| |
| |
| check_binaries({Props}) when is_list(Props) -> |
| lists:all(fun({Key, Value}) -> |
| check_binaries(Key) andalso check_binaries(Value) |
| end, Props); |
| check_binaries(Values) when is_list(Values) -> |
| lists:all(fun(Value) -> |
| check_binaries(Value) |
| end, Values); |
| check_binaries(Bin) when is_binary(Bin) -> |
| io:format("~s :: ~p ~p", [Bin, byte_size(Bin), binary:referenced_byte_size(Bin)]), |
| byte_size(Bin) == binary:referenced_byte_size(Bin); |
| check_binaries(_Bin) -> |
| true. |
| |
| |
| copy_strings_test_() -> |
| Opts = [copy_strings], |
| Cases = [ |
| <<"\"foo\"">>, |
| <<"[\"bar\"]">>, |
| <<"{\"foo\":\"bar\"}">>, |
| <<"{\"foo\":[\"bar\"]}">> |
| ], |
| {"Test copy_strings", lists:map(fun(Json) -> |
| EJson = jiffy:decode(Json, Opts), |
| ?_assert(check_binaries(EJson)) |
| end, Cases)}. |