Skip to content

Commit 6b544de

Browse files
authored
Merge pull request #99 from msgpack/map-proper
Add tests for map type
2 parents 87a3fb5 + 21c9012 commit 6b544de

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

src/msgpack.hrl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
-type msgpack_term() :: [msgpack_term()] | msgpack_map() |
2929
integer() | float() | boolean() | binary() | string() | {string, string()}.
3030

31+
%% jiffy, jsx would be soon deprecated as the map is now primitive type.
3132
-type format_type() :: jsx|jiffy|map.
3233

3334
-define(DEFAULT_MAP_FORMAT, map).

test/prop_msgpack.erl

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ prop_array_primitive() ->
7373
{oneof([fix_array_primitive(), array16_primitive()]), stable_opts()},
7474
pack_and_unpack(Array, Opts)).
7575

76+
prop_map_primitive() ->
77+
?FORALL(
78+
{Map, Opts},
79+
{oneof([fix_map_primitive(), map16_primitive()]), stable_opts()},
80+
pack_and_unpack(Map, Opts)).
81+
7682
prop_msgpack() ->
7783
?FORALL({Obj, Opts},
7884
{msgpack_object(), stable_opts()},
@@ -101,11 +107,7 @@ pack_and_unpack(Obj, Opts) ->
101107
%%% Generators %%%
102108
stable_opts() ->
103109
% TODO: build property tests on options
104-
oneof([
105-
[],
106-
[{map_format, jiffy}],
107-
[{map_format, jsx}]
108-
]).
110+
[].
109111

110112
null() -> null.
111113

@@ -148,16 +150,34 @@ primitive_types() ->
148150

149151

150152
container_types() ->
151-
[ fix_array_primitive(), array16_primitive() ].
153+
[ fix_array_primitive(), array16_primitive(),
154+
fix_map_primitive(), map16_primitive() ].
152155

153156
fix_array_primitive() ->
154-
% up to 2^4-1
157+
%% up to 2^4-1
158+
%% TODO: check the first 4 bits be 1001
155159
resize(15, proper_types:list(oneof(primitive_types()))).
156160

157161
array16_primitive() ->
158-
% Up to 2^16-1, but for performance
162+
%% Up to 2^16-1, but for performance
163+
%% TODO: check the first byte be 0xdc (so s 0xdd for array32)
159164
resize(128, proper_types:list(oneof(primitive_types()))).
160165

166+
fix_map_primitive() ->
167+
%% up to 2^4-1
168+
%% TODO: check the first 4 bits be 1000
169+
resize(15,
170+
proper_types:map(
171+
oneof(primitive_types()),
172+
oneof(primitive_types()))).
173+
174+
map16_primitive() ->
175+
%% Up to 2^16-1, but for performance
176+
%% TODO: check the first byte be 0xde (so s 0xdf for map32)
177+
resize(128,
178+
proper_types:map(
179+
oneof(primitive_types()),
180+
oneof(primitive_types()))).
161181

162182
%% TODO: add map
163183
msgpack_object() ->

0 commit comments

Comments
 (0)