diff options
Diffstat (limited to 'test/ruby/test_struct.rb')
-rw-r--r-- | test/ruby/test_struct.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/ruby/test_struct.rb b/test/ruby/test_struct.rb index 573f65d0b9..7bdf9b889f 100644 --- a/test/ruby/test_struct.rb +++ b/test/ruby/test_struct.rb @@ -92,6 +92,23 @@ module TestStruct assert_equal([:utime, :stime, :cutime, :cstime], Process.times.members) end + def test_struct_new_with_keyword_init + @Struct.new("KeywordArgsTrue", :a, :b, keyword_init: true) + @Struct.new("KeywordArgsFalse", :a, :b, keyword_init: false) + + assert_raise(ArgumentError) { @Struct::KeywordArgsTrue.new(1, 2) } + assert_nothing_raised { @Struct::KeywordArgsFalse.new(1, 2) } + assert_nothing_raised { @Struct::KeywordArgsTrue.new(a: 1, b: 2) } + assert_raise(ArgumentError) { @Struct::KeywordArgsTrue.new(1, b: 2) } + assert_raise(ArgumentError) { @Struct::KeywordArgsTrue.new(a: 1, b: 2, c: 3) } + assert_equal @Struct::KeywordArgsTrue.new(a: 1, b: 2).values, @Struct::KeywordArgsFalse.new(1, 2).values + + @Struct.instance_eval do + remove_const(:KeywordArgsTrue) + remove_const(:KeywordArgsFalse) + end + end + def test_initialize klass = @Struct.new(:a) assert_raise(ArgumentError) { klass.new(1, 2) } |