require_relative '../../../spec_helper'
require_relative '../fixtures/classes'

describe "Delegator#methods" do
  before :all do
    @simple = DelegateSpecs::Simple.new
    class << @simple
      def singleton_method
      end
    end

    @delegate = DelegateSpecs::Delegator.new(@simple)
    @methods = @delegate.methods
  end

  it "returns singleton methods when passed false" do
    @delegate.methods(false).should include(:singleton_method)
  end

  it "includes all public methods of the delegate object" do
    @methods.should include :pub
  end

  it "includes all protected methods of the delegate object" do
    @methods.should include :prot
  end

  it "includes instance methods of the Delegator class" do
    @methods.should include :extra
    @methods.should include :extra_protected
  end

  it "does not include private methods" do
    @methods.should_not include :priv
    @methods.should_not include :extra_private
  end
end
