diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-12 08:12:43 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-12 08:12:43 +0000 |
commit | 02015974a3cca132bce7e1e7588b9cf835c07036 (patch) | |
tree | 08106bd4b02eb3ae89a9587e54532f3ab45141b4 /test/ruby/test_struct.rb | |
parent | a679472c0e72b8adfca8a188251997dad39f917b (diff) |
struct.c: add keyword_init option to Struct.new
to initialize struct with keyword arguments.
[Feature #11925] [close GH-1771]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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) } |