jeremymcanally-matchy 0.0.1 → 0.1.0
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/lib/matchy/built_in/error_expectations.rb +10 -0
- data/lib/matchy/built_in/operator_expectations.rb +1 -1
- data/lib/matchy/built_in/truth_expectations.rb +51 -1
- data/lib/matchy/modals.rb +5 -0
- data/lib/matchy/version.rb +2 -2
- data/matchy.gemspec +1 -1
- data/test/test_enumerable_expectations.rb +4 -4
- data/test/test_modals.rb +12 -0
- data/test/test_operator_expectations.rb +7 -9
- data/test/test_truth_expectations.rb +53 -12
- metadata +1 -1
@@ -1,6 +1,11 @@
|
|
1
1
|
module Matchy
|
2
2
|
module Expectations
|
3
3
|
class RaiseErrorExpectation < Base
|
4
|
+
def initialize(expected, test_case)
|
5
|
+
@error = nil
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
4
9
|
def matches?(receiver)
|
5
10
|
@receiver = receiver
|
6
11
|
begin
|
@@ -31,6 +36,11 @@ module Matchy
|
|
31
36
|
end
|
32
37
|
|
33
38
|
class ThrowSymbolExpectation < Base
|
39
|
+
def initialize(expected, test_case)
|
40
|
+
@thrown_symbol = nil
|
41
|
+
super
|
42
|
+
end
|
43
|
+
|
34
44
|
def matches?(receiver)
|
35
45
|
@receiver = receiver
|
36
46
|
begin
|
@@ -82,7 +82,7 @@ module Matchy
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def fail!(operator)
|
85
|
-
flunk
|
85
|
+
flunk @match ? failure_message(operator) : negative_failure_message(operator)
|
86
86
|
end
|
87
87
|
|
88
88
|
def failure_message(operator)
|
@@ -16,6 +16,21 @@ module Matchy
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
class BeKindOfExpectation < Base
|
20
|
+
def matches?(receiver)
|
21
|
+
@receiver = receiver
|
22
|
+
@receiver.kind_of?(@expected)
|
23
|
+
end
|
24
|
+
|
25
|
+
def failure_message
|
26
|
+
"Expected #{@receiver.inspect} to be kind of #{@expected.inspect}."
|
27
|
+
end
|
28
|
+
|
29
|
+
def negative_failure_message
|
30
|
+
"Expected #{@receiver.inspect} to not be kind of #{@expected.inspect}."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
19
34
|
class BeCloseExpectation < Base
|
20
35
|
def initialize(expected, delta, test_case)
|
21
36
|
@expected = expected
|
@@ -102,6 +117,21 @@ module Matchy
|
|
102
117
|
end
|
103
118
|
end
|
104
119
|
|
120
|
+
class RespondToExpectation < Base
|
121
|
+
def matches?(receiver)
|
122
|
+
@receiver = receiver
|
123
|
+
@receiver.respond_to?(@expected)
|
124
|
+
end
|
125
|
+
|
126
|
+
def failure_message
|
127
|
+
"Expected #{@receiver.inspect} to respond to #{@expected.inspect}."
|
128
|
+
end
|
129
|
+
|
130
|
+
def negative_failure_message
|
131
|
+
"Expected #{@receiver.inspect} to not respond to #{@expected.inspect}."
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
105
135
|
module TestCaseExtensions
|
106
136
|
# Simply checks if the receiver matches the expected object.
|
107
137
|
# TODO: Fill this out to implement much of the RSpec functionality (and then some)
|
@@ -115,6 +145,16 @@ module Matchy
|
|
115
145
|
Matchy::Expectations::BeExpectation.new(obj, self)
|
116
146
|
end
|
117
147
|
|
148
|
+
# Checks if the given object is kind_of? the expected class
|
149
|
+
#
|
150
|
+
# ==== Examples
|
151
|
+
#
|
152
|
+
# "hello".should be_kind_of(String)
|
153
|
+
# 3.should be_kind_of(Fixnum)
|
154
|
+
def be_kind_of(klass)
|
155
|
+
Matchy::Expectations::BeKindOfExpectation.new(klass, self)
|
156
|
+
end
|
157
|
+
|
118
158
|
# Checks if the given object is within a given object and delta.
|
119
159
|
#
|
120
160
|
# ==== Examples
|
@@ -175,7 +215,17 @@ module Matchy
|
|
175
215
|
#
|
176
216
|
def satisfy(obj)
|
177
217
|
Matchy::Expectations::SatisfyExpectation.new(obj, self)
|
178
|
-
end
|
218
|
+
end
|
219
|
+
|
220
|
+
# Checks if the given object responds to the given method
|
221
|
+
#
|
222
|
+
# ==== Examples
|
223
|
+
#
|
224
|
+
# "foo".should respond_to(:length)
|
225
|
+
# {}.should respond_to(:has_key?)
|
226
|
+
def respond_to(meth)
|
227
|
+
Matchy::Expectations::RespondToExpectation.new(meth, self)
|
228
|
+
end
|
179
229
|
end
|
180
230
|
end
|
181
231
|
end
|
data/lib/matchy/modals.rb
CHANGED
@@ -16,6 +16,8 @@ module Matchy
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
alias :will :should
|
20
|
+
|
19
21
|
# Tests that an expectation doesn't match the given object.
|
20
22
|
#
|
21
23
|
# ==== Examples
|
@@ -32,6 +34,9 @@ module Matchy
|
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|
37
|
+
alias :will_not :should_not
|
38
|
+
alias :wont :should_not
|
39
|
+
|
35
40
|
protected
|
36
41
|
def match_expectation(expectation, match)
|
37
42
|
if expectation.matches?(self) != match
|
data/lib/matchy/version.rb
CHANGED
data/matchy.gemspec
CHANGED
@@ -65,27 +65,27 @@ class TestEnumerableExpectations < Test::Unit::TestCase
|
|
65
65
|
obj = include(1)
|
66
66
|
obj.matches?([4,5,6])
|
67
67
|
|
68
|
-
obj.failure_message.should be
|
68
|
+
obj.failure_message.should be("Expected [4, 5, 6] to include [1].")
|
69
69
|
end
|
70
70
|
|
71
71
|
def test_include_negative_fail_message
|
72
72
|
obj = include(1)
|
73
73
|
obj.matches?([4,5,6])
|
74
74
|
|
75
|
-
obj.negative_failure_message.should be
|
75
|
+
obj.negative_failure_message.should be("Expected [4, 5, 6] to not include [1].")
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_exclude_fail_message
|
79
79
|
obj = exclude(4)
|
80
80
|
obj.matches?([4,5,6])
|
81
81
|
|
82
|
-
obj.failure_message.should be
|
82
|
+
obj.failure_message.should be("Expected [4, 5, 6] to exclude [4].")
|
83
83
|
end
|
84
84
|
|
85
85
|
def test_exclude_negative_fail_message
|
86
86
|
obj = exclude(4)
|
87
87
|
obj.matches?([4,5,6])
|
88
88
|
|
89
|
-
obj.negative_failure_message.should be
|
89
|
+
obj.negative_failure_message.should be("Expected [4, 5, 6] to not exclude [4].")
|
90
90
|
end
|
91
91
|
end
|
data/test/test_modals.rb
CHANGED
@@ -10,10 +10,22 @@ class TestModals < Test::Unit::TestCase
|
|
10
10
|
3.should(@expectation)
|
11
11
|
end
|
12
12
|
|
13
|
+
def test_will
|
14
|
+
3.will(@expectation)
|
15
|
+
end
|
16
|
+
|
13
17
|
def test_should_not
|
14
18
|
3.should_not(@bad_expectation)
|
15
19
|
end
|
16
20
|
|
21
|
+
def test_will_not
|
22
|
+
3.will_not(@bad_expectation)
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_wont
|
26
|
+
3.wont(@bad_expectation)
|
27
|
+
end
|
28
|
+
|
17
29
|
def test_should_operator_expectation_returned
|
18
30
|
obj = 3.should
|
19
31
|
assert_equal Matchy::Expectations::OperatorExpectation, obj.class
|
@@ -138,22 +138,20 @@ class TestOperatorExpectations < Test::Unit::TestCase
|
|
138
138
|
def test_fail_message
|
139
139
|
obj = Matchy::Expectations::OperatorExpectation.new(3, true)
|
140
140
|
|
141
|
-
def obj.
|
141
|
+
def obj.flunk(msg)
|
142
|
+
msg
|
142
143
|
end
|
143
144
|
|
144
|
-
obj == 4
|
145
|
-
|
146
|
-
obj.send(:failure_message, "==").should =~ /Expected 3 to == 4./
|
145
|
+
(obj == 4).should == "Expected 3 to == 4."
|
147
146
|
end
|
148
147
|
|
149
148
|
def test_negative_fail_message
|
150
|
-
obj = Matchy::Expectations::OperatorExpectation.new(3,
|
149
|
+
obj = Matchy::Expectations::OperatorExpectation.new(3, false)
|
151
150
|
|
152
|
-
def obj.
|
151
|
+
def obj.flunk(msg)
|
152
|
+
msg
|
153
153
|
end
|
154
154
|
|
155
|
-
obj == 3
|
156
|
-
|
157
|
-
obj.send(:negative_failure_message, "==").should =~ /Expected 3 to not == 3./
|
155
|
+
(obj == 3).should == "Expected 3 to not == 3."
|
158
156
|
end
|
159
157
|
end
|
@@ -135,28 +135,28 @@ class TestTruthExpectations < Test::Unit::TestCase
|
|
135
135
|
obj = equal(4)
|
136
136
|
obj.matches?(5)
|
137
137
|
|
138
|
-
obj.failure_message.should be
|
138
|
+
obj.failure_message.should be("Expected 5 to equal 4.")
|
139
139
|
end
|
140
140
|
|
141
141
|
def test_equal_negative_fail_message
|
142
142
|
obj = equal(5)
|
143
143
|
obj.matches?(5)
|
144
144
|
|
145
|
-
obj.negative_failure_message.should be
|
145
|
+
obj.negative_failure_message.should be("Expected 5 to not equal 5.")
|
146
146
|
end
|
147
147
|
|
148
148
|
def test_eql_fail_message
|
149
149
|
obj = eql(4)
|
150
150
|
obj.matches?(5)
|
151
151
|
|
152
|
-
obj.failure_message.should be
|
152
|
+
obj.failure_message.should be("Expected 5 to eql 4.")
|
153
153
|
end
|
154
154
|
|
155
|
-
def
|
155
|
+
def test_eql_negative_fail_message_for_eql
|
156
156
|
obj = eql(5)
|
157
157
|
obj.matches?(5)
|
158
158
|
|
159
|
-
obj.negative_failure_message.should be
|
159
|
+
obj.negative_failure_message.should be("Expected 5 to not eql 5.")
|
160
160
|
end
|
161
161
|
|
162
162
|
def test_exist_fail_message
|
@@ -177,41 +177,82 @@ class TestTruthExpectations < Test::Unit::TestCase
|
|
177
177
|
obj = be_close(3.0)
|
178
178
|
obj.matches?(6.0)
|
179
179
|
|
180
|
-
obj.failure_message.should be
|
180
|
+
obj.failure_message.should be("Expected 6.0 to be close to 3.0 (delta: 0.3).")
|
181
181
|
end
|
182
182
|
|
183
183
|
def test_be_close_negative_fail_message
|
184
184
|
obj = be_close(5.0)
|
185
185
|
obj.matches?(5.0)
|
186
186
|
|
187
|
-
obj.negative_failure_message.should be
|
187
|
+
obj.negative_failure_message.should be("Expected 5.0 to not be close to 5.0 (delta: 0.3).")
|
188
188
|
end
|
189
189
|
|
190
190
|
def test_be_fail_message
|
191
191
|
obj = be(4)
|
192
192
|
obj.matches?(5)
|
193
193
|
|
194
|
-
obj.failure_message.should be
|
194
|
+
obj.failure_message.should be("Expected 5 to be 4.")
|
195
195
|
end
|
196
196
|
|
197
197
|
def test_be_negative_fail_message
|
198
198
|
obj = be(5)
|
199
199
|
obj.matches?(5)
|
200
200
|
|
201
|
-
obj.negative_failure_message.should be
|
201
|
+
obj.negative_failure_message.should be("Expected 5 to not be 5.")
|
202
202
|
end
|
203
203
|
|
204
204
|
def test_satisfy_fail_message
|
205
205
|
obj = satisfy(lambda {|x| x == 4})
|
206
206
|
obj.matches?(6)
|
207
207
|
|
208
|
-
obj.failure_message.should be
|
208
|
+
obj.failure_message.should be("Expected 6 to satisfy given block.")
|
209
209
|
end
|
210
210
|
|
211
|
-
def
|
211
|
+
def test_eql_negative_fail_message_for_matches
|
212
212
|
obj = satisfy(lambda {|x| x == 4})
|
213
213
|
obj.matches?(4)
|
214
214
|
|
215
|
-
obj.negative_failure_message.should be
|
215
|
+
obj.negative_failure_message.should be("Expected 4 to not satisfy given block.")
|
216
216
|
end
|
217
|
+
|
218
|
+
def test_kind_of
|
219
|
+
3.should be_kind_of(Fixnum)
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_kind_of_fail
|
223
|
+
lambda {
|
224
|
+
3.should be_kind_of(Hash)
|
225
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_negative_kind_of
|
229
|
+
3.should_not be_kind_of(Hash)
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_negative_kind_of_fail
|
233
|
+
lambda {
|
234
|
+
3.should_not be_kind_of(Fixnum)
|
235
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
236
|
+
end
|
237
|
+
|
238
|
+
def test_respond_to
|
239
|
+
"foo".should respond_to(:length)
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_respond_to_fail
|
243
|
+
lambda {
|
244
|
+
"foo".should respond_to(:nonexistant_method)
|
245
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_negative_respond_to
|
249
|
+
"foo".should_not respond_to(:nonexistant_method)
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_negative_respond_to_fail
|
253
|
+
lambda {
|
254
|
+
"foo".should_not respond_to(:length)
|
255
|
+
}.should raise_error(Test::Unit::AssertionFailedError)
|
256
|
+
end
|
257
|
+
|
217
258
|
end
|