diff options
Diffstat (limited to 'spec/rubyspec/library/weakref/send_spec.rb')
-rw-r--r-- | spec/rubyspec/library/weakref/send_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/rubyspec/library/weakref/send_spec.rb b/spec/rubyspec/library/weakref/send_spec.rb new file mode 100644 index 0000000000..173e1055dd --- /dev/null +++ b/spec/rubyspec/library/weakref/send_spec.rb @@ -0,0 +1,37 @@ +require File.expand_path('../../../spec_helper', __FILE__) +require 'weakref' + +describe "WeakRef#__send__" do + module WeakRefSpecs + class << self + def delegated_method + :result + end + + def protected_method + :result + end + protected :protected_method + + def private_method + :result + end + private :private_method + end + end + + it "delegates to public methods of the weakly-referenced object" do + wr = WeakRef.new(WeakRefSpecs) + wr.delegated_method.should == :result + end + + it "delegates to protected methods of the weakly-referenced object" do + wr = WeakRef.new(WeakRefSpecs) + lambda { wr.protected_method }.should raise_error(NameError) + end + + it "does not delegate to private methods of the weakly-referenced object" do + wr = WeakRef.new(WeakRefSpecs) + lambda { wr.private_method }.should raise_error(NameError) + end +end |