From c3d6bac325dcc4868977b15503641afa48092119 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 18 Jan 2021 15:55:10 +0900 Subject: Upcoming Struct#new behavior --- spec/ruby/core/struct/new_spec.rb | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/spec/ruby/core/struct/new_spec.rb b/spec/ruby/core/struct/new_spec.rb index bb814e7cd1..cbbec829d7 100644 --- a/spec/ruby/core/struct/new_spec.rb +++ b/spec/ruby/core/struct/new_spec.rb @@ -127,15 +127,30 @@ describe "Struct.new" do -> { StructClasses::Ruby.new('2.0', 'i686', true) }.should raise_error(ArgumentError) end - it "passes a hash as a normal argument" do - type = Struct.new(:args) + ruby_version_is ''...'3.1' do + it "passes a hash as a normal argument" do + type = Struct.new(:args) - obj = type.new(keyword: :arg) - obj2 = type.new(*[{keyword: :arg}]) + obj = suppress_warning {type.new(keyword: :arg)} + obj2 = type.new(*[{keyword: :arg}]) - obj.should == obj2 - obj.args.should == {keyword: :arg} - obj2.args.should == {keyword: :arg} + obj.should == obj2 + obj.args.should == {keyword: :arg} + obj2.args.should == {keyword: :arg} + end + end + + ruby_version_is '3.2' do + it "accepts keyword arguments to initialize" do + type = Struct.new(:args) + + obj = type.new(args: 42) + obj2 = type.new(42) + + obj.should == obj2 + obj.args.should == 42 + obj2.args.should == 42 + end end end -- cgit v1.2.3