1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eregon 2019-01-20 20:38:57 +00:00
parent 58573c33e4
commit 6204e0804b
147 changed files with 2728 additions and 21522 deletions

View file

@ -28,9 +28,43 @@ describe "OpenStruct#to_h" do
end
ruby_version_is "2.6" do
it "converts [key, value] pairs returned by the block to a hash" do
h = @os.to_h {|key, value| [key.to_s, value * 2]}
h.should == {"name" => "John SmithJohn Smith", "age" => 140, "pension" => 600}
context "with block" do
it "converts [key, value] pairs returned by the block to a hash" do
h = @os.to_h { |k, v| [k.to_s, v*2] }
h.should == { "name" => "John SmithJohn Smith", "age" => 140, "pension" => 600 }
end
it "raises ArgumentError if block returns longer or shorter array" do
-> do
@os.to_h { |k, v| [k.to_s, v*2, 1] }
end.should raise_error(ArgumentError, /element has wrong array length/)
-> do
@os.to_h { |k, v| [k] }
end.should raise_error(ArgumentError, /element has wrong array length/)
end
it "raises TypeError if block returns something other than Array" do
-> do
@os.to_h { |k, v| "not-array" }
end.should raise_error(TypeError, /wrong element type String/)
end
it "coerces returned pair to Array with #to_ary" do
x = mock('x')
x.stub!(:to_ary).and_return([:b, 'b'])
@os.to_h { |k| x }.should == { :b => 'b' }
end
it "does not coerce returned pair to Array with #to_a" do
x = mock('x')
x.stub!(:to_a).and_return([:b, 'b'])
-> do
@os.to_h { |k| x }
end.should raise_error(TypeError, /wrong element type MockObject/)
end
end
end
end