@@ -26,25 +26,44 @@ def test_false
2626 0 => "\x02 \x01 \x00 " ,
2727 1 => "\x02 \x01 \x01 " ,
2828 127 => "\x02 \x01 \x7F " ,
29- 128 => "\x02 \x01 \x80 " ,
30- 255 => "\x02 \x01 \xFF " ,
29+ 128 => "\x02 \x02 \x00 \x80 " ,
30+ 255 => "\x02 \x02 \x00 \xFF " ,
3131 256 => "\x02 \x02 \x01 \x00 " ,
32- 65535 => "\x02 \x02 \xFF \xFF " ,
32+ 65535 => "\x02 \x03 \x00 \xFF \xFF " ,
3333 65536 => "\x02 \x03 \x01 \x00 \x00 " ,
34- 16_777_215 => "\x02 \x03 \xFF \xFF \xFF " ,
34+ 8388607 => "\x02 \x03 \x7F \xFF \xFF " ,
35+ 8388608 => "\x02 \x04 \x00 \x80 \x00 \x00 " ,
36+ 16_777_215 => "\x02 \x04 \x00 \xFF \xFF \xFF " ,
3537 0x01000000 => "\x02 \x04 \x01 \x00 \x00 \x00 " ,
3638 0x3FFFFFFF => "\x02 \x04 \x3F \xFF \xFF \xFF " ,
3739 0x4FFFFFFF => "\x02 \x04 \x4F \xFF \xFF \xFF " ,
3840
3941 # Some odd samples...
40- 5 => "\002 \001 \005 " ,
41- 500 => "\002 \002 \001 \364 " ,
42- 50_000 => "\x02 \x02 \xC3 P" ,
43- 5_000_000_000 => "\002 \005 \001 *\005 \362 \000 "
42+ 5 => "\x02 \x01 \x05 " ,
43+ 500 => "\x02 \x02 \x01 \xf4 " ,
44+ 50_000 => "\x02 \x03 \x00 \xC3 \x50 " ,
45+ 5_000_000_000 => "\x02 \x05 \x01 \x2a \x05 \xF2 \x00 " ,
46+
47+ # negatives
48+ -1 => "\x02 \x01 \xFF " ,
49+ -127 => "\x02 \x01 \x81 " ,
50+ -128 => "\x02 \x01 \x80 " ,
51+ -255 => "\x02 \x02 \xFF \x01 " ,
52+ -256 => "\x02 \x02 \xFF \x00 " ,
53+ -65535 => "\x02 \x03 \xFF \x00 \x01 " ,
54+ -65536 => "\x02 \x03 \xFF \x00 \x00 " ,
55+ -65537 => "\x02 \x03 \xFE \xFF \xFF " ,
56+ -8388607 => "\x02 \x03 \x80 \x00 \x01 " ,
57+ -8388608 => "\x02 \x03 \x80 \x00 \x00 " ,
58+ -16_777_215 => "\x02 \x04 \xFF \x00 \x00 \x01 " ,
4459 } . each do |number , expected_encoding |
4560 define_method "test_encode_#{ number } " do
4661 assert_equal expected_encoding . b , number . to_ber
4762 end
63+
64+ define_method "test_decode_encoded_#{ number } " do
65+ assert_equal number , expected_encoding . b . read_ber
66+ end
4867 end
4968
5069 # Round-trip encoding: This is mostly to be sure to cover Bignums well.
0 commit comments