Skip to content

Commit 5eddde1

Browse files
committed
Merge pull request #22 from mururu/int-definition
Fix int definition
2 parents 4cab65d + 402c027 commit 5eddde1

2 files changed

Lines changed: 54 additions & 5 deletions

File tree

src/msgpack_packer.erl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,13 @@ pack(Other, _) ->
9898
pack_int(N) when N >= -32->
9999
<< 2#111:3, N:5 >>;
100100
%% int 8
101-
pack_int(N) when N > -128 ->
101+
pack_int(N) when N >= -128 ->
102102
<< 16#D0:8, N:8/big-signed-integer-unit:1 >>;
103103
%% int 16
104-
pack_int(N) when N > -32768 ->
104+
pack_int(N) when N >= -16#8000 ->
105105
<< 16#D1:8, N:16/big-signed-integer-unit:1 >>;
106106
%% int 32
107-
pack_int(N) when (N band 16#FFFFFFFF) =:= N ->
107+
pack_int(N) when N >= -16#80000000 ->
108108
<< 16#D2:8, N:32/big-signed-integer-unit:1 >>;
109109
%% int 64
110110
pack_int(N) when N >= -16#8000000000000000 ->

test/msgpack_test.erl

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,11 +232,60 @@ map_test_()->
232232

233233
int_test_() ->
234234
[
235-
{"",
235+
{"negative fixnum",
236236
fun() ->
237-
Term = -2147483649,
237+
Term = -32,
238238
Binary = pack(Term),
239+
?assertEqual(1, byte_size(Binary)),
239240
?assertEqual({ok, Term}, unpack(Binary))
241+
end},
242+
{"int 8",
243+
fun() ->
244+
Term = -33,
245+
Binary = pack(Term),
246+
?assertEqual(2, byte_size(Binary)),
247+
?assertEqual({ok, Term}, unpack(Binary)),
248+
249+
Term2 = -128,
250+
Binary2 = pack(Term2),
251+
?assertEqual(2, byte_size(Binary2)),
252+
?assertEqual({ok, Term2}, unpack(Binary2))
253+
end},
254+
{"int 16",
255+
fun() ->
256+
Term = -129,
257+
Binary = pack(Term),
258+
?assertEqual(3, byte_size(Binary)),
259+
?assertEqual({ok, Term}, unpack(Binary)),
260+
261+
Term2 = -16#8000,
262+
Binary2 = pack(Term2),
263+
?assertEqual(3, byte_size(Binary2)),
264+
?assertEqual({ok, Term2}, unpack(Binary2))
265+
end},
266+
{"int 32",
267+
fun() ->
268+
Term = -16#8001,
269+
Binary = pack(Term),
270+
?assertEqual(5, byte_size(Binary)),
271+
?assertEqual({ok, Term}, unpack(Binary)),
272+
273+
Term2 = -16#80000000,
274+
Binary2 = pack(Term2),
275+
?assertEqual(5, byte_size(Binary2)),
276+
?assertEqual({ok, Term2}, unpack(Binary2))
277+
end},
278+
{"int 64",
279+
fun() ->
280+
Term = -16#80000001,
281+
Binary = pack(Term),
282+
?assertEqual(9, byte_size(Binary)),
283+
?assertEqual({ok, Term}, unpack(Binary)),
284+
285+
Term2 = -16#8000000000000000,
286+
Binary2 = pack(Term2),
287+
?assertEqual(9, byte_size(Binary2)),
288+
?assertEqual({ok, Term2}, unpack(Binary2))
240289
end}
241290
].
242291

0 commit comments

Comments
 (0)