diff options
Diffstat (limited to 'test/fiddle/test_pointer.rb')
-rw-r--r-- | test/fiddle/test_pointer.rb | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/fiddle/test_pointer.rb b/test/fiddle/test_pointer.rb index 7d708ee417..f2c1d285ad 100644 --- a/test/fiddle/test_pointer.rb +++ b/test/fiddle/test_pointer.rb @@ -10,6 +10,22 @@ module Fiddle Fiddle.dlwrap arg end + def test_can_read_write_memory + # Allocate some memory + address = Fiddle.malloc(Fiddle::SIZEOF_VOIDP) + + bytes_to_write = Fiddle::SIZEOF_VOIDP.times.to_a.pack("C*") + + # Write to the memory + Fiddle::Pointer.write(address, bytes_to_write) + + # Read the bytes out again + bytes = Fiddle::Pointer.read(address, Fiddle::SIZEOF_VOIDP) + assert_equal bytes_to_write, bytes + ensure + Fiddle.free address + end + def test_cptr_to_int null = Fiddle::NULL assert_equal(null.to_i, null.to_int) @@ -272,6 +288,9 @@ module Fiddle end def test_no_memory_leak + # https://github.com/ruby/fiddle/actions/runs/3202406059/jobs/5231356410 + omit if RUBY_VERSION >= '3.2' + if respond_to?(:assert_nothing_leaked_memory) n_tries = 100_000 assert_nothing_leaked_memory(SIZEOF_VOIDP * (n_tries / 100)) do |