Revision: 3171 http://trac.macosforge.org/projects/ruby/changeset/3171 Author: lsansonetti@apple.com Date: 2009-12-23 20:39:30 -0800 (Wed, 23 Dec 2009) Log Message: ----------- added more Pointer specs to cover the latest changes Modified Paths: -------------- MacRuby/trunk/spec/macruby/core/pointer_spec.rb Modified: MacRuby/trunk/spec/macruby/core/pointer_spec.rb =================================================================== --- MacRuby/trunk/spec/macruby/core/pointer_spec.rb 2009-12-24 04:39:04 UTC (rev 3170) +++ MacRuby/trunk/spec/macruby/core/pointer_spec.rb 2009-12-24 04:39:30 UTC (rev 3171) @@ -46,6 +46,15 @@ it "accepts the type returned by NSRect" do Pointer.new(NSRect.type).type.should == NSRect.type end + + it "accepts a non mandatory second argument that specifies the number of elements that should be allocated" do + lambda { Pointer.new('i', 1) }.should_not raise_error + end + + it "raises an ArgumentError if the second argument (size) is not greater than 0" do + lambda { Pointer.new('i', -1) }.should raise_error(ArgumentError) + lambda { Pointer.new('i', 0) }.should raise_error(ArgumentError) + end end describe "Pointer, through #[] and #[]=" do @@ -130,4 +139,34 @@ ptr[2].class.should == Fixnum ptr[2].chr.should == 'y' end + + it "will raise a TypeError exception in case the given index cannot be converted to a numeric type" do + pointer = Pointer.new('i') + lambda { pointer[nil] }.should raise_error(TypeError) + lambda { pointer[nil] = 42 }.should raise_error(TypeError) + lambda { pointer['omg'] }.should raise_error(TypeError) + lambda { pointer['omg'] = 42 }.should raise_error(TypeError) + end + + it "will raise an ArgumentError exception in case the given index is negative" do + pointer = Pointer.new('i') + lambda { pointer[-1] }.should raise_error(ArgumentError) + lambda { pointer[-1] = 42 }.should raise_error(ArgumentError) + end + + it "will raise an ArgumentError exception in case the given index is out of bounds" do + pointer = Pointer.new('i') + lambda { pointer[0] }.should_not raise_error + lambda { pointer[0] = 42 }.should_not raise_error + lambda { pointer[1] }.should raise_error(ArgumentError) + lambda { pointer[1] = 42 }.should raise_error(ArgumentError) + + pointer = Pointer.new('i', 3) + 3.times do |i| + lambda { pointer[i] }.should_not raise_error + lambda { pointer[i] = 42 }.should_not raise_error + end + lambda { pointer[3] }.should raise_error(ArgumentError) + lambda { pointer[3] = 42 }.should raise_error(ArgumentError) + end end
participants (1)
-
source_changes@macosforge.org