Sha256: 877d0f6632dd24d56dd697821f0d2affe25962ad959c4bb6c81bfb04c67aedac

Contents?: true

Size: 1.32 KB

Versions: 40

Compression:

Stored size: 1.32 KB

Contents

module Spec
  module Mocks
    
    class ArgumentExpectation
      attr_reader :args
      
      def initialize(args, &block)
        @args = args
        @matchers_block = block
        @match_any_args = false
        @matchers = nil
        
        if ArgumentMatchers::AnyArgsMatcher === args.first
          @match_any_args = true
        elsif ArgumentMatchers::NoArgsMatcher === args.first
          @matchers = []
        else
          @matchers = args.collect {|arg| matcher_for(arg)}
        end
      end
      
      def matcher_for(arg)
        return ArgumentMatchers::MatcherMatcher.new(arg)   if is_matcher?(arg)
        return ArgumentMatchers::RegexpMatcher.new(arg) if arg.is_a?(Regexp)
        return ArgumentMatchers::EqualityProxy.new(arg)
      end
      
      def is_matcher?(obj)
        return obj.respond_to?(:matches?) & obj.respond_to?(:description)
      end
      
      def args_match?(given_args)
        match_any_args? || matchers_block_matches?(given_args) || matchers_match?(given_args)
      end
      
      def matchers_block_matches?(given_args)
        @matchers_block ? @matchers_block.call(*given_args) : nil
      end
      
      def matchers_match?(given_args)
        @matchers == given_args
      end
      
      def match_any_args?
        @match_any_args
      end
      
    end
    
  end
end

Version data entries

40 entries across 40 versions & 11 rubygems

Version Path
rspec-instructure-1.3.3 lib/spec/mocks/argument_expectation.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/rspec-1.3.2/lib/spec/mocks/argument_expectation.rb
rspec-1.3.2 lib/spec/mocks/argument_expectation.rb
rspec-1.3.1 lib/spec/mocks/argument_expectation.rb
rspec-1.3.1.rc lib/spec/mocks/argument_expectation.rb
rspec-1.3.0 lib/spec/mocks/argument_expectation.rb
hubbub-0.0.11 lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
hubbub-0.0.10 lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
hubbub-0.0.9 lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
hubbub-0.0.8 lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
hubbub-0.0.6 lib/vendor/plugins/rspec/lib/spec/mocks/argument_expectation.rb
simple-templater-0.0.1.4 gems/gems/rspec-1.2.9/lib/spec/mocks/argument_expectation.rb
media-path-0.1.2 vendor/rspec/lib/spec/mocks/argument_expectation.rb
simple-templater-0.0.1.3 vendor/rspec/lib/spec/mocks/argument_expectation.rb
pupu-0.0.2.pre vendor/rspec/lib/spec/mocks/argument_expectation.rb
media-path-0.1.1.pre vendor/rspec/lib/spec/mocks/argument_expectation.rb
simple-templater-0.0.1.2 vendor/rspec/lib/spec/mocks/argument_expectation.rb
media-path-0.1.1 vendor/rspec/lib/spec/mocks/argument_expectation.rb
simple-templater-0.0.1.1 vendor/rspec/lib/spec/mocks/argument_expectation.rb
pupu-0.0.2 vendor/rspec/lib/spec/mocks/argument_expectation.rb