summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2021-10-22 15:05:00 +1300
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2021-11-12 16:46:08 +1300
commitc833ece5f78b8c2e43263e08ccbd3ce1628bf610 (patch)
treef813cd893a32991422cd5e833b09236dd897bced /test/ruby
parent98b442e013afbb450f1c946d86ed625c39ab3233 (diff)
Rework implementation of `IO::Buffer.for(string)` to use string locking.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/5109
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_io_buffer.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/ruby/test_io_buffer.rb b/test/ruby/test_io_buffer.rb
index 1bd839e163..12937729f4 100644
--- a/test/ruby/test_io_buffer.rb
+++ b/test/ruby/test_io_buffer.rb
@@ -62,6 +62,25 @@ class TestIOBuffer < Test::Unit::TestCase
assert_include buffer.to_str, "Hello World"
end
+ def test_string_mapped
+ string = "Hello World"
+ buffer = IO::Buffer.for(string)
+
+ # Cannot modify string as it's locked by the buffer:
+ assert_raise RuntimeError do
+ string[0] = "h"
+ end
+
+ buffer.set(:U8, 0, "h".ord)
+
+ # Buffer releases it's ownership of the string:
+ buffer.free
+
+ assert_equal "hello World", string
+ string[0] = "H"
+ assert_equal "Hello World", string
+ end
+
def test_resize
buffer = IO::Buffer.new(1024, IO::Buffer::MAPPED)
buffer.resize(2048, 0)