Sha256: 86042a66c30eb728eaa13e9b4844ba0e7ddb2ae663956bc1340a2c6f3d081e7e

Contents?: true

Size: 1.82 KB

Versions: 21

Compression:

Stored size: 1.82 KB

Contents

require File.expand_path('../../../spec_helper', __FILE__)

describe Hash do
  include WildcardMatcherMatchers

  describe '#wildcard_match?' do
    context 'when this Hash has keys that respond to #wildcard_match?' do
      subject { {is_a(Symbol) => 'x'} }

      it "returns true if all keys in the given Hash wildcard-match the corresponding keys in this Hash" do
        should wildcard_match({:foo => 'x'})
      end

      it "returns true if any keys in the given Hash do not wildcard-match the corresponding keys in this Hash" do
        should_not wildcard_match({'foo' => 'x'})
      end
    end

    context 'when this Hash has values that respond to #wildcard_match?' do
      subject { {'x' => is_a(Symbol)} }

      it "returns true if all values in the given Hash wildcard-match the corresponding values in this Hash" do
        should wildcard_match({'x' => :foo})
      end

      it "returns false if any values in the given Hash do not wildcard-match the corresponding values in this Hash" do
        should_not wildcard_match({'x' => 'foo'})
      end
    end

    context 'when this Hash does not have keys or values that respond to #wildcard_match?' do
      subject { {:x => :y} }

      it "returns true if all pairs in the given Hash wildcard-match the corresponding values in this Hash" do
        should wildcard_match({:x => :y})
      end

      it "returns false if any keys do not equal-match corresponding items in the subject" do
        should_not wildcard_match({:z => :y})
      end

      it "returns false if any values do not equal-match corresponding items in the subject" do
        should_not wildcard_match({:x => :z})
      end
    end

    context 'when not given a Hash' do
      subject { {:foo => 'bar'} }

      it "returns false" do
        should_not wildcard_match(:something_else)
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
rr-3.1.1 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.1.0 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.9 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.8 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.7 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.6 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.5 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.4 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.3 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.2 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.1 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-3.0.0 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.2.1 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.2.0 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.2 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.2.rc1 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.1.rc1 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.0 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.0.rc3 spec/suites/rspec_2/unit/core_ext/hash_spec.rb
rr-1.1.0.rc2 spec/suites/rspec_2/unit/core_ext/hash_spec.rb