summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Kanis <lars@greiz-reinsdorf.de>2023-05-02 11:52:37 +0200
committerLars Kanis <lars@greiz-reinsdorf.de>2023-05-02 11:53:40 +0200
commit23e88be86d5031649c4df71f75b17f33ab0a4934 (patch)
tree74c4a460ab1e46a3e1c693d46ca6db6057c817ed
parent89d23a5c5c2e9b48c72e0f05c04747691d9f8afe (diff)
downloadffi-23e88be86d5031649c4df71f75b17f33ab0a4934.tar.gz
Ensure enums are usable in Ractor
-rw-r--r--spec/ffi/enum_spec.rb14
-rw-r--r--spec/ffi/library_spec.rb13
2 files changed, 27 insertions, 0 deletions
diff --git a/spec/ffi/enum_spec.rb b/spec/ffi/enum_spec.rb
index b8c5b57..1fba2cb 100644
--- a/spec/ffi/enum_spec.rb
+++ b/spec/ffi/enum_spec.rb
@@ -430,4 +430,18 @@ describe "All enums" do
end
end.to raise_error(ArgumentError, /duplicate/)
end
+
+ it "should be usable in Ractor", :ractor do
+ res = Ractor.new do
+ [
+ TestEnum1.test_untagged_enum(:c1),
+ TestEnum3.test_tagged_typedef_enum1(:c1),
+ TestEnum4.test_tagged_nonint_enum4(0x45),
+ TestEnum3.enum_type(:enum_type1)[0],
+ TestEnum4.enum_type(:enum_type6)[0x4242424242424242],
+ TestEnum4.enum_value(:c3)
+ ]
+ end.take
+ expect( res ).to eq( [0, :c1, :c20, :c1, :c28, 2] )
+ end
end
diff --git a/spec/ffi/library_spec.rb b/spec/ffi/library_spec.rb
index 14a8bc1..52a961f 100644
--- a/spec/ffi/library_spec.rb
+++ b/spec/ffi/library_spec.rb
@@ -5,6 +5,11 @@
require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
+module TestEnumValueRactor
+ extend FFI::Library
+ enum :something, [:one, :two]
+end
+
describe "Library" do
describe ".enum_value" do
m = Module.new do
@@ -20,6 +25,14 @@ describe "Library" do
it "should return nil for an invalid key" do
expect(m.enum_value(:three)).to be nil
end
+
+ it "should be queryable in Ractor", :ractor do
+ res = Ractor.new do
+ TestEnumValueRactor.enum_value(:one)
+ end.take
+
+ expect( res ).to eq(0)
+ end
end
describe "#ffi_convention" do