diff options
| author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2025-12-20 16:12:52 +0900 |
|---|---|---|
| committer | Nobuyoshi Nakada <nobu.nakada@gmail.com> | 2025-12-20 16:59:51 +0900 |
| commit | 77c3a9e447ec477be39e00072e1ce3348d0f4533 (patch) | |
| tree | e4c2b37e1c063b73d63d5864f32f573d20ae0653 /test/ruby | |
| parent | 49f9c9bff29bce267b6aa362c6004d98db5c62f3 (diff) | |
Revert pack/unpack support for LEB128
https://bugs.ruby-lang.org/issues/21785#note-10
> It is too late to introduce it in Ruby 4.0, let's aim for 4.1.
This reverts commits:
* d0b72429a93e54f1f956b4aedfc25c57dc7001aa
Add support for signed and unsigned LEB128 to pack/unpack.
* 68a900e30b4ca1537d7975c3a619fd94fca7b084
add news for pack / unpack directives
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_pack.rb | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/test/ruby/test_pack.rb b/test/ruby/test_pack.rb index 9c40cfaa20..ca089f09c3 100644 --- a/test/ruby/test_pack.rb +++ b/test/ruby/test_pack.rb @@ -936,116 +936,4 @@ EXPECTED assert_equal "oh no", v end; end - - def test_unpack_broken_R - assert_equal([nil], "\xFF".unpack("R")) - assert_nil("\xFF".unpack1("R")) - assert_equal([nil], "\xFF".unpack("r")) - assert_nil("\xFF".unpack1("r")) - - bytes = [256].pack("r") - assert_equal([256, nil, nil, nil], (bytes + "\xFF").unpack("rrrr")) - - bytes = [256].pack("R") - assert_equal([256, nil, nil, nil], (bytes + "\xFF").unpack("RRRR")) - - assert_equal([], "\xFF".unpack("R*")) - assert_equal([], "\xFF".unpack("r*")) - end - - def test_pack_unpack_R - # ULEB128 encoding (unsigned) - assert_equal("\x00", [0].pack("R")) - assert_equal("\x01", [1].pack("R")) - assert_equal("\x7f", [127].pack("R")) - assert_equal("\x80\x01", [128].pack("R")) - assert_equal("\xff\x7f", [0x3fff].pack("R")) - assert_equal("\x80\x80\x01", [0x4000].pack("R")) - assert_equal("\xff\xff\xff\xff\x0f", [0xffffffff].pack("R")) - assert_equal("\x80\x80\x80\x80\x10", [0x100000000].pack("R")) - assert_equal("\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01", [0xffff_ffff_ffff_ffff].pack("R")) - assert_equal("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f", [0xffff_ffff_ffff_ffff_ffff_ffff].pack("R")) - - # Multiple values - assert_equal("\x01\x02", [1, 2].pack("R*")) - assert_equal("\x7f\x80\x01", [127, 128].pack("R*")) - - # Negative numbers should raise an error - assert_raise(ArgumentError) { [-1].pack("R") } - assert_raise(ArgumentError) { [-100].pack("R") } - - # Unpack tests - assert_equal([0], "\x00".unpack("R")) - assert_equal([1], "\x01".unpack("R")) - assert_equal([127], "\x7f".unpack("R")) - assert_equal([128], "\x80\x01".unpack("R")) - assert_equal([0x3fff], "\xff\x7f".unpack("R")) - assert_equal([0x4000], "\x80\x80\x01".unpack("R")) - assert_equal([0xffffffff], "\xff\xff\xff\xff\x0f".unpack("R")) - assert_equal([0x100000000], "\x80\x80\x80\x80\x10".unpack("R")) - assert_equal([0xffff_ffff_ffff_ffff], "\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01".unpack("R")) - assert_equal([0xffff_ffff_ffff_ffff_ffff_ffff].pack("R"), "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f") - - # Multiple values - assert_equal([1, 2], "\x01\x02".unpack("R*")) - assert_equal([127, 128], "\x7f\x80\x01".unpack("R*")) - - # Round-trip test - values = [0, 1, 127, 128, 0x3fff, 0x4000, 0xffffffff, 0x100000000] - assert_equal(values, values.pack("R*").unpack("R*")) - end - - def test_pack_unpack_r - # SLEB128 encoding (signed) - assert_equal("\x00", [0].pack("r")) - assert_equal("\x01", [1].pack("r")) - assert_equal("\x7f", [-1].pack("r")) - assert_equal("\x7e", [-2].pack("r")) - assert_equal("\xff\x00", [127].pack("r")) - assert_equal("\x80\x01", [128].pack("r")) - assert_equal("\x81\x7f", [-127].pack("r")) - assert_equal("\x80\x7f", [-128].pack("r")) - - # Larger positive numbers - assert_equal("\xff\xff\x00", [0x3fff].pack("r")) - assert_equal("\x80\x80\x01", [0x4000].pack("r")) - - # Larger negative numbers - assert_equal("\x81\x80\x7f", [-0x3fff].pack("r")) - assert_equal("\x80\x80\x7f", [-0x4000].pack("r")) - - # Very large numbers - assert_equal("\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x1F", [0xffff_ffff_ffff_ffff_ffff_ffff].pack("r")) - assert_equal("\x81\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80`", [-0xffff_ffff_ffff_ffff_ffff_ffff].pack("r")) - - # Multiple values - assert_equal("\x00\x01\x7f", [0, 1, -1].pack("r*")) - - # Unpack tests - assert_equal([0], "\x00".unpack("r")) - assert_equal([1], "\x01".unpack("r")) - assert_equal([-1], "\x7f".unpack("r")) - assert_equal([-2], "\x7e".unpack("r")) - assert_equal([127], "\xff\x00".unpack("r")) - assert_equal([128], "\x80\x01".unpack("r")) - assert_equal([-127], "\x81\x7f".unpack("r")) - assert_equal([-128], "\x80\x7f".unpack("r")) - - # Larger numbers - assert_equal([0x3fff], "\xff\xff\x00".unpack("r")) - assert_equal([0x4000], "\x80\x80\x01".unpack("r")) - assert_equal([-0x3fff], "\x81\x80\x7f".unpack("r")) - assert_equal([-0x4000], "\x80\x80\x7f".unpack("r")) - - # Very large numbers - assert_equal("\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1f", [0xffff_ffff_ffff_ffff_ffff_ffff].pack("r")) - assert_equal("\x81\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80\x80`", [-0xffff_ffff_ffff_ffff_ffff_ffff].pack("r")) - - # Multiple values - assert_equal([0, 1, -1], "\x00\x01\x7f".unpack("r*")) - - # Round-trip test - values = [0, 1, -1, 127, -127, 128, -128, 0x3fff, -0x3fff, 0x4000, -0x4000] - assert_equal(values, values.pack("r*").unpack("r*")) - end end |
