diff options
author | Samuel Williams <[email protected]> | 2024-01-15 10:47:13 +1300 |
---|---|---|
committer | GitHub <[email protected]> | 2024-01-15 10:47:13 +1300 |
commit | c5cf4d4e129f64cb69aaf0a829aed068ef1943c4 (patch) | |
tree | 7f8e459feadd36ec6bcd6085794d6003c8c64dcf /test/ruby/test_io_buffer.rb | |
parent | 5c823aa686a5549649df4af86d173bebed2418e1 (diff) |
Improve behavioural consistency of unallocated (zero length) `IO::Buffer`. (#9532)
This makes the behaviour of IO::Buffer.new(0) and IO::Buffer.new.slice(0, 0) consistent.
Fixes https://bugs.ruby-lang.org/issues/19542 and https://bugs.ruby-lang.org/issues/18805.
Diffstat (limited to 'test/ruby/test_io_buffer.rb')
-rw-r--r-- | test/ruby/test_io_buffer.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb index 321b6534ee..7a58ec0c5a 100644 --- a/test/ruby/test_io_buffer.rb +++ b/test/ruby/test_io_buffer.rb @@ -199,6 +199,14 @@ class TestIOBuffer < Test::Unit::TestCase assert_positive buffer2 <=> buffer1 end + def test_compare_zero_length + buffer1 = IO::Buffer.new(0) + buffer2 = IO::Buffer.new(1) + + assert_negative buffer1 <=> buffer2 + assert_positive buffer2 <=> buffer1 + end + def test_slice buffer = IO::Buffer.new(128) slice = buffer.slice(8, 32) @@ -270,6 +278,14 @@ class TestIOBuffer < Test::Unit::TestCase end end + def test_zero_length_get_string + buffer = IO::Buffer.new.slice(0, 0) + assert_equal "", buffer.get_string + + buffer = IO::Buffer.new(0) + assert_equal "", buffer.get_string + end + # We check that values are correctly round tripped. RANGES = { :U8 => [0, 2**8-1], @@ -316,6 +332,13 @@ class TestIOBuffer < Test::Unit::TestCase end end + def test_zero_length_get_set_values + buffer = IO::Buffer.new(0) + + assert_equal [], buffer.get_values([], 0) + assert_equal 0, buffer.set_values([], 0, []) + end + def test_values buffer = IO::Buffer.new(128) @@ -340,6 +363,12 @@ class TestIOBuffer < Test::Unit::TestCase end end + def test_zero_length_each + buffer = IO::Buffer.new(0) + + assert_equal [], buffer.each(:U8).to_a + end + def test_each_byte string = "The quick brown fox jumped over the lazy dog." buffer = IO::Buffer.for(string) @@ -347,6 +376,12 @@ class TestIOBuffer < Test::Unit::TestCase assert_equal string.bytes, buffer.each_byte.to_a end + def test_zero_length_each_byte + buffer = IO::Buffer.new(0) + + assert_equal [], buffer.each_byte.to_a + end + def test_clear buffer = IO::Buffer.new(16) buffer.set_string("Hello World!") |