Sha256: e34f78b5197ebcd5fbf4b3d3ed34506d16046cf6a83807915c2f37970a3f13a2

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

require "#{File.dirname(__FILE__)}/../helpers.rb"

describe "Object#cache_method_missing" do
  
  before do
    class A; end
  end
  
  after do
    Object.instance_eval { remove_const(:A) if const_defined?(:A) }
  end
  
  it "defines the missing method" do
    A.module_eval do
      def method_missing(name, *args)
        cache_method_missing name, "'hi'", *args
      end
    end
    A.new.bar
    A.new.should.respond_to :bar
  end
  
  it "passes along the args" do
    A.module_eval do
      def method_missing(name, *args, &block)
        cache_method_missing name, "args.join('-')", *args
      end
    end
    
    A.new.bar(1, 2, 3).should == "1-2-3"
  end
  
  it "passes along the block" do
    A.module_eval do
      def method_missing(name, *args, &block)
        cache_method_missing name, "block.call", *args, &block
      end
    end
    
    A.new.bar { 'bye' }.should == 'bye'
  end  
  
end

describe "Object#instance_exec" do
  
  before do
    @block = lambda { |guy| "Howdy, #{guy}!" }
  end
  
  it "works like instance_eval, but it takes args and gives them to the block" do
    instance_exec( "Steve", &@block ).should == "Howdy, Steve!"
  end
  
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
waves-edge-2009.03.10.13.14 test/ext/object.rb
waves-0.9.3 test/ext/object.rb
waves-0.9.2 test/ext/object.rb
waves-0.9.1 test/ext/object.rb
waves-0.9.0 test/ext/object.rb