diff options
Diffstat (limited to 'spec/ruby/library/delegate/delegator/frozen_spec.rb')
-rw-r--r-- | spec/ruby/library/delegate/delegator/frozen_spec.rb | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/spec/ruby/library/delegate/delegator/frozen_spec.rb b/spec/ruby/library/delegate/delegator/frozen_spec.rb new file mode 100644 index 0000000000..1fb561a349 --- /dev/null +++ b/spec/ruby/library/delegate/delegator/frozen_spec.rb @@ -0,0 +1,39 @@ +require File.expand_path('../../../../spec_helper', __FILE__) +require File.expand_path('../../fixtures/classes', __FILE__) + +describe "Delegator when frozen" do + before :all do + @array = [42, :hello] + @delegate = DelegateSpecs::Delegator.new(@array) + @delegate.freeze + end + + it "is still readable" do + @delegate.should == [42, :hello] + @delegate.include?("bar").should be_false + end + + it "is frozen" do + @delegate.frozen?.should be_true + end + + it "is not writeable" do + lambda{ @delegate[0] += 2 }.should raise_error( RuntimeError ) + end + + it "creates a frozen clone" do + @delegate.clone.frozen?.should be_true + end + + it "creates an unfrozen dup" do + @delegate.dup.frozen?.should be_false + end + + it "causes mutative calls to raise RuntimeError" do + lambda{ @delegate.__setobj__("hola!") }.should raise_error( RuntimeError ) + end + + it "returns false if only the delegated object is frozen" do + DelegateSpecs::Delegator.new([1,2,3].freeze).frozen?.should be_false + end +end |