diff options
author | Lars Kanis <lars@greiz-reinsdorf.de> | 2023-05-02 11:52:37 +0200 |
---|---|---|
committer | Lars Kanis <lars@greiz-reinsdorf.de> | 2023-05-02 11:53:40 +0200 |
commit | 23e88be86d5031649c4df71f75b17f33ab0a4934 (patch) | |
tree | 74c4a460ab1e46a3e1c693d46ca6db6057c817ed /spec/ffi | |
parent | 89d23a5c5c2e9b48c72e0f05c04747691d9f8afe (diff) | |
download | ffi-23e88be86d5031649c4df71f75b17f33ab0a4934.tar.gz |
Ensure enums are usable in Ractor
Diffstat (limited to 'spec/ffi')
-rw-r--r-- | spec/ffi/enum_spec.rb | 14 | ||||
-rw-r--r-- | spec/ffi/library_spec.rb | 13 |
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 |