wildcard_matchers 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.rspec CHANGED
@@ -1,3 +1 @@
1
- -c
2
1
  -f d
3
- -t wip
data/README.md CHANGED
@@ -33,6 +33,15 @@ See specs, for more detail.
33
33
  * hash_includes(:b) === { :a => 1 } #=> false
34
34
  * hash_includes(:a => Integer) === { :a => 1 } #=> true
35
35
  * hash_includes(:a => 2) === { :a => 1 } #=> false
36
+ * is_a_member_of
37
+ * is_a_member_of(0, 1) === 0 #=> true
38
+
39
+ ### helpers
40
+ * nil_or
41
+ * nil_or(is_a_string) === nil #=> true
42
+ * nil_or(is_a_string) === "a" #=> true
43
+ * all
44
+ * all(is_a_string) === %w[ a b c ] #=> true
36
45
 
37
46
  ## How it works
38
47
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -0,0 +1,20 @@
1
+ module WildcardMatchers
2
+ module Helpers
3
+ def nil_or(expected, &on_failure)
4
+ lambda do |actual|
5
+ nil === actual or wildcard_match?(actual, expected, &on_failure)
6
+ end
7
+ end
8
+
9
+ def all(expected = nil, &on_failure)
10
+ raise "expected or block is mandatory" unless expected or block_given?
11
+
12
+ expected ||= block
13
+ lambda do |actual|
14
+ actual.all? do |item|
15
+ wildcard_match(item, expected, &on_failure)
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -33,5 +33,11 @@ module WildcardMatchers
33
33
  hash_to_match.all? {|key, value| value === hash[key] }
34
34
  end
35
35
  end
36
+
37
+ def is_a_member_of(*args)
38
+ lambda do |item|
39
+ args.flatten.any? {|expected| expected === item }
40
+ end
41
+ end
36
42
  end
37
43
  end
@@ -1,4 +1,9 @@
1
1
  require "rspec"
2
+ require "wildcard_matchers"
3
+
4
+ RSpec.configure do |c|
5
+ c.include WildcardMatchers
6
+ end
2
7
 
3
8
  RSpec::Matchers.define :wildcard_match do |expected|
4
9
  match do |actual|
@@ -1,6 +1,8 @@
1
+ require "wildcard_matchers/helpers"
1
2
  require "wildcard_matchers/matchers"
2
3
 
3
4
  module WildcardMatchers
5
+ include Helpers
4
6
  include Matchers
5
7
 
6
8
  def wildcard_match?(actual, expected, &on_failure)
@@ -23,3 +23,24 @@ shared_examples_for "not wildcard match" do |actual, matcher, *args|
23
23
  end
24
24
  end
25
25
  end
26
+
27
+ shared_examples_for "wildcard match with helper" do |actual, helper, matcher, *args|
28
+ matcher_string =if matcher.is_a?(Symbol) and WildcardMatchers.respond_to?(matcher)
29
+ matcher.to_s
30
+ else
31
+ matcher.inspect
32
+ end
33
+
34
+ expected = helper.to_s + "(" + (args.size > 0 ?
35
+ "(#{matcher_string}(#{args.map(&:inspect).join(",")})" :
36
+ matcher_string) + ")"
37
+
38
+ it "#{actual.inspect} with #{expected}" do
39
+ if matcher.is_a?(Symbol) and WildcardMatchers.respond_to?(matcher)
40
+ # Note: some symbol comes here and may fail
41
+ wildcard_match?(actual, send(helper, send(matcher, *args))).should be_true
42
+ else
43
+ wildcard_match?(actual, send(helper, matcher)).should be_true
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe WildcardMatchers::Helpers do
4
+ [ [ nil, :nil_or, String ],
5
+ [ "aaa", :nil_or, String ],
6
+ [ nil, :nil_or, :is_a_string ],
7
+ [ "aaa", :nil_or, :is_a_string ],
8
+ [ %w[ a b c ], :all, String ],
9
+ [ %w[ a b c ], :all, :is_a_string ],
10
+ [ %w[ a b c ], :all, :is_a, String ],
11
+ ].each do |actual, helper, matcher, *args|
12
+ it_should_behave_like "wildcard match with helper", actual, helper, matcher, *args
13
+ end
14
+
15
+ it "should match using lambda with helper" do
16
+ [ 2, 4, 6].should wildcard_match(all ->(item) { item % 2 == 0 })
17
+ end
18
+ end
@@ -1,8 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe WildcardMatchers::Matchers do
4
- include WildcardMatchers
5
-
6
4
  [ [ "string", String ],
7
5
  [ 0, Integer ],
8
6
  [ 0.1, Float ],
@@ -40,6 +38,8 @@ describe WildcardMatchers::Matchers do
40
38
  [ [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b ],
41
39
  [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => 1 ],
42
40
  [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => Integer ],
41
+ [ "a", :is_a_member_of, %w[ a b ] ],
42
+ [ "a", :is_a_member_of, [ String ] ],
43
43
  ].each do |actual, matcher, *args|
44
44
  it_should_behave_like "wildcard match", actual, matcher, *args
45
45
  end
@@ -47,6 +47,8 @@ describe WildcardMatchers::Matchers do
47
47
  [ [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :d ],
48
48
  [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => 2 ],
49
49
  [ { :a => 1, :b => 1, :c => 1 }, :hash_includes, :a, :b => String ],
50
+ [ "a", :is_a_member_of, %w[ b c ] ],
51
+ [ "a", :is_a_member_of, [ Integer ] ],
50
52
  ].each do |actual, matcher, *args|
51
53
  it_should_behave_like "not wildcard match", actual, matcher, *args
52
54
  end
@@ -1,13 +1,20 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe "matcher wildcard_match" do
4
- [ [ 1, Integer ]
4
+ [ [ 1, Integer ],
5
5
  ].each do |actual, expected|
6
- it "match #{actual} with #{expected}" do
6
+ it "match #{actual.inspect} with #{expected}" do
7
7
  actual.should wildcard_match(expected)
8
8
  end
9
9
  end
10
10
 
11
+ [ [ "1", :is_a_string ],
12
+ ].each do |actual, expected|
13
+ it "match #{actual.inspect} with #{expected}" do
14
+ actual.should wildcard_match(send(expected))
15
+ end
16
+ end
17
+
11
18
  [ [ 1, String, ".: expect 1 to String" ],
12
19
  [ [ 1 ], [ String ], ".[0]: expect 1 to String" ],
13
20
  [ [ 1 ], [], ".: expect Array size 1 to 0" ],
@@ -15,7 +22,7 @@ describe "matcher wildcard_match" do
15
22
  [ {}, {:a => 1}, "-keys: [:a]" ],
16
23
  [ { :a => 1}, {:a => 0}, ".[:a]: expect 1 to 0" ],
17
24
  ].each do |actual, expected, failure_message|
18
- it "not match #{actual} with #{expected} and return #{failure_message.inspect} as failure_message" do
25
+ it "not match #{actual.inspect} with #{expected} and return #{failure_message.inspect} as failure_message" do
19
26
  begin
20
27
  actual.should wildcard_match(expected)
21
28
  fail # if matched come here and must fail
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wildcard_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-13 00:00:00.000000000 Z
12
+ date: 2012-05-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -93,11 +93,13 @@ files:
93
93
  - Rakefile
94
94
  - VERSION
95
95
  - lib/wildcard_matchers.rb
96
+ - lib/wildcard_matchers/helpers.rb
96
97
  - lib/wildcard_matchers/matchers.rb
97
98
  - lib/wildcard_matchers/rspec.rb
98
99
  - spec/spec.watchr
99
100
  - spec/spec_helper.rb
100
101
  - spec/support/shared_examples.rb
102
+ - spec/wildcard_matchers/helpers_spec.rb
101
103
  - spec/wildcard_matchers/matchers_spec.rb
102
104
  - spec/wildcard_matchers/rspec_spec.rb
103
105
  - spec/wildcard_matchers_spec.rb
@@ -130,6 +132,7 @@ test_files:
130
132
  - spec/spec.watchr
131
133
  - spec/spec_helper.rb
132
134
  - spec/support/shared_examples.rb
135
+ - spec/wildcard_matchers/helpers_spec.rb
133
136
  - spec/wildcard_matchers/matchers_spec.rb
134
137
  - spec/wildcard_matchers/rspec_spec.rb
135
138
  - spec/wildcard_matchers_spec.rb