From 23e88be86d5031649c4df71f75b17f33ab0a4934 Mon Sep 17 00:00:00 2001 From: Lars Kanis Date: Tue, 2 May 2023 11:52:37 +0200 Subject: Ensure enums are usable in Ractor --- spec/ffi/enum_spec.rb | 14 ++++++++++++++ spec/ffi/library_spec.rb | 13 +++++++++++++ 2 files changed, 27 insertions(+) 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 -- cgit v1.2.1