summaryrefslogtreecommitdiff
path: root/test/fiddle/test_memory_view.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/fiddle/test_memory_view.rb')
-rw-r--r--test/fiddle/test_memory_view.rb36
1 files changed, 32 insertions, 4 deletions
diff --git a/test/fiddle/test_memory_view.rb b/test/fiddle/test_memory_view.rb
index c673d2633a..240cda37df 100644
--- a/test/fiddle/test_memory_view.rb
+++ b/test/fiddle/test_memory_view.rb
@@ -2,17 +2,19 @@
begin
require_relative 'helper'
rescue LoadError
+ return
end
begin
require '-test-/memory_view'
rescue LoadError
+ return
end
module Fiddle
class TestMemoryView < TestCase
def setup
- skip "MemoryView is unavailable" unless defined? Fiddle::MemoryView
+ omit "MemoryView is unavailable" unless defined? Fiddle::MemoryView
end
def test_null_ptr
@@ -47,7 +49,7 @@ module Fiddle
end
def test_memory_view_multi_dimensional
- skip "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
+ omit "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
buf = [ 1, 2, 3, 4,
5, 6, 7, 8,
@@ -69,7 +71,7 @@ module Fiddle
end
def test_memory_view_multi_dimensional_with_strides
- skip "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
+ omit "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
buf = [ 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16 ].pack("l!*")
@@ -91,7 +93,7 @@ module Fiddle
end
def test_memory_view_multi_dimensional_with_multiple_members
- skip "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
+ omit "MemoryViewTestUtils is unavailable" unless defined? MemoryViewTestUtils
buf = [ 1, 2, 3, 4, 5, 6, 7, 8,
-1, -2, -3, -4, -5, -6, -7, -8].pack("s*")
@@ -111,5 +113,31 @@ module Fiddle
assert_equal([-1, -2], mview[1, 0])
assert_equal([-7, -8], mview[1, 3])
end
+
+ def test_export
+ str = "hello world"
+ mview_str = MemoryView.export(Pointer[str]) do |mview|
+ mview.to_s
+ end
+ assert_equal(str, mview_str)
+ end
+
+ def test_release
+ ptr = Pointer["hello world"]
+ mview = MemoryView.new(ptr)
+ assert_same(ptr, mview.obj)
+ mview.release
+ assert_nil(mview.obj)
+ end
+
+ def test_to_s
+ # U+3042 HIRAGANA LETTER A
+ data = "\u{3042}"
+ ptr = Pointer[data]
+ mview = MemoryView.new(ptr)
+ string = mview.to_s
+ assert_equal([data.b, true],
+ [string, string.frozen?])
+ end
end
end