mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Update to ruby/spec@35a9fba
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66888 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
58573c33e4
commit
6204e0804b
147 changed files with 2728 additions and 21522 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue