diff options
Diffstat (limited to 'spec/ruby/core/struct/element_set_spec.rb')
-rw-r--r-- | spec/ruby/core/struct/element_set_spec.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/spec/ruby/core/struct/element_set_spec.rb b/spec/ruby/core/struct/element_set_spec.rb new file mode 100644 index 0000000000..3d482bdb71 --- /dev/null +++ b/spec/ruby/core/struct/element_set_spec.rb @@ -0,0 +1,29 @@ +require File.expand_path('../../../spec_helper', __FILE__) +require File.expand_path('../fixtures/classes', __FILE__) + +describe "Struct#[]=" do + it "assigns the passed value" do + car = StructClasses::Car.new('Ford', 'Ranger') + + car[:model] = 'Escape' + car[:model].should == 'Escape' + + car['model'] = 'Fusion' + car[:model].should == 'Fusion' + + car[1] = 'Excursion' + car[:model].should == 'Excursion' + + car[-1] = '2000-2005' + car[:year].should == '2000-2005' + end + + it "fails when trying to assign attributes which don't exist" do + car = StructClasses::Car.new('Ford', 'Ranger') + + lambda { car[:something] = true }.should raise_error(NameError) + lambda { car[3] = true }.should raise_error(IndexError) + lambda { car[-4] = true }.should raise_error(IndexError) + lambda { car[Object.new] = true }.should raise_error(TypeError) + end +end |