summaryrefslogtreecommitdiff
path: root/spec/ruby/library/delegate/delegator/frozen_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/delegate/delegator/frozen_spec.rb')
-rw-r--r--spec/ruby/library/delegate/delegator/frozen_spec.rb39
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..ad87dc8bdf
--- /dev/null
+++ b/spec/ruby/library/delegate/delegator/frozen_spec.rb
@@ -0,0 +1,39 @@
+require_relative '../../../spec_helper'
+require_relative '../fixtures/classes'
+
+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 == false
+ end
+
+ it "is frozen" do
+ @delegate.frozen?.should == true
+ end
+
+ it "is not writable" do
+ ->{ @delegate[0] += 2 }.should.raise( RuntimeError )
+ end
+
+ it "creates a frozen clone" do
+ @delegate.clone.frozen?.should == true
+ end
+
+ it "creates an unfrozen dup" do
+ @delegate.dup.frozen?.should == false
+ end
+
+ it "causes mutative calls to raise RuntimeError" do
+ ->{ @delegate.__setobj__("hola!") }.should.raise( RuntimeError )
+ end
+
+ it "returns false if only the delegated object is frozen" do
+ DelegateSpecs::Delegator.new([1,2,3].freeze).frozen?.should == false
+ end
+end