assert 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/Gemfile.lock +3 -1
  2. data/README.rdoc +6 -6
  3. data/Rakefile +2 -3
  4. data/assert.gemspec +1 -0
  5. data/lib/assert/assertions.rb +30 -30
  6. data/lib/assert/context.rb +71 -66
  7. data/lib/assert/macro.rb +14 -0
  8. data/lib/assert/macros/methods.rb +52 -0
  9. data/lib/assert/rake_tasks.rb +31 -13
  10. data/lib/assert/result.rb +12 -4
  11. data/lib/assert/result_set.rb +2 -2
  12. data/lib/assert/runner.rb +2 -6
  13. data/lib/assert/setup/autorun.rb +0 -1
  14. data/lib/assert/suite.rb +19 -15
  15. data/lib/assert/test.rb +6 -17
  16. data/lib/assert/version.rb +1 -1
  17. data/lib/assert/view/base.rb +1 -1
  18. data/lib/assert/view/terminal.rb +8 -30
  19. data/test/assertions/assert_block_test.rb +1 -1
  20. data/test/assertions/assert_empty_test.rb +43 -0
  21. data/test/assertions/assert_equal_test.rb +43 -0
  22. data/test/assertions/assert_includes_test.rb +44 -0
  23. data/test/assertions/assert_instance_of_test.rb +4 -4
  24. data/test/assertions/assert_kind_of_test.rb +3 -3
  25. data/test/assertions/assert_match_test.rb +43 -0
  26. data/test/assertions/assert_nil_test.rb +43 -0
  27. data/test/assertions/assert_not_block_test.rb +1 -1
  28. data/test/assertions/assert_not_empty_test.rb +43 -0
  29. data/test/assertions/assert_not_equal_test.rb +43 -0
  30. data/test/assertions/assert_not_included_test.rb +44 -0
  31. data/test/assertions/assert_not_instance_of_test.rb +4 -4
  32. data/test/assertions/assert_not_kind_of_test.rb +2 -2
  33. data/test/assertions/assert_not_match_test.rb +43 -0
  34. data/test/assertions/assert_not_nil_test.rb +43 -0
  35. data/test/assertions/assert_not_respond_to_test.rb +6 -6
  36. data/test/assertions/assert_not_same_test.rb +45 -0
  37. data/test/assertions/assert_respond_to_test.rb +6 -6
  38. data/test/assertions/assert_same_test.rb +45 -0
  39. data/test/assertions_test.rb +21 -298
  40. data/test/context/class_methods_test.rb +81 -112
  41. data/test/context_test.rb +35 -40
  42. data/test/helper.rb +5 -2
  43. data/test/irb.rb +2 -5
  44. data/test/macro_test.rb +99 -0
  45. data/test/options_test.rb +2 -2
  46. data/test/result_set_test.rb +47 -54
  47. data/test/result_test.rb +4 -17
  48. data/test/runner_test.rb +2 -10
  49. data/test/suite_test.rb +85 -13
  50. data/test/test/running_test.rb +19 -28
  51. data/test/test_test.rb +130 -128
  52. data/test/view_test.rb +3 -17
  53. metadata +50 -7
@@ -0,0 +1,45 @@
1
+ require 'assert'
2
+
3
+ class Assert::Assertions::AssertNotSameTest < Assert::Context
4
+ desc "the assert_not_same helper run in a test"
5
+ setup do
6
+ klass = Class.new
7
+ object = klass.new
8
+ fail_desc = @fail_desc = "assert not same fail desc"
9
+ fail_args = @fail_args = [ object, object, fail_desc ]
10
+ @test = Factory.test do
11
+ assert_not_same(*fail_args) # fail
12
+ assert_not_same(object, klass.new) # pass
13
+ end
14
+ @test.run
15
+ end
16
+ subject{ @test }
17
+
18
+ should "have 2 total results" do
19
+ assert_equal 2, subject.result_count
20
+ end
21
+ should "have 1 pass result" do
22
+ assert_equal 1, subject.result_count(:pass)
23
+ end
24
+ should "have 1 fail result" do
25
+ assert_equal 1, subject.result_count(:fail)
26
+ end
27
+
28
+ class FailMessageTest < AssertNotSameTest
29
+ desc "with a failed result"
30
+ setup do
31
+ @expected = [
32
+ @fail_args[2],
33
+ "#{@fail_args[0].inspect} (#{@fail_args[0].object_id}) not expected to be the same as #{@fail_args[1].inspect} (#{@fail_args[1].object_id}).",
34
+ ].join("\n")
35
+ @fail_message = @test.fail_results.first.message
36
+ end
37
+ subject{ @fail_message }
38
+
39
+ should "have a fail message with an explanation of what failed and my fail description" do
40
+ assert_equal @expected, subject
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -4,9 +4,9 @@ class Assert::Assertions::AssertRespondToTest < Assert::Context
4
4
  desc "the assert_respond_to helper run in a test"
5
5
  setup do
6
6
  fail_desc = @fail_desc = "assert respond to fail desc"
7
- fail_args = @fail_args = [ "1", :abs, fail_desc ]
7
+ fail_args = @fail_args = [ :abs, "1", fail_desc ]
8
8
  @test = Factory.test do
9
- assert_respond_to(1, :abs) # pass
9
+ assert_respond_to(:abs, 1) # pass
10
10
  assert_respond_to(*fail_args) # fail
11
11
  end
12
12
  @test.run
@@ -27,9 +27,9 @@ class Assert::Assertions::AssertRespondToTest < Assert::Context
27
27
  desc "with a failed result"
28
28
  setup do
29
29
  @expected = [
30
- "Expected #{@fail_args[0].inspect} (#{@fail_args[0].class}) to",
31
- "respond to ##{@fail_args[1]}.\n#{@fail_args[2]}"
32
- ].join(" ")
30
+ @fail_args[2],
31
+ "Expected #{@fail_args[1].inspect} (#{@fail_args[1].class}) to respond to ##{@fail_args[0]}."
32
+ ].join("\n")
33
33
  @fail_message = @test.fail_results.first.message
34
34
  end
35
35
  subject{ @fail_message }
@@ -40,4 +40,4 @@ class Assert::Assertions::AssertRespondToTest < Assert::Context
40
40
 
41
41
  end
42
42
 
43
- end
43
+ end
@@ -0,0 +1,45 @@
1
+ require 'assert'
2
+
3
+ class Assert::Assertions::AssertSameTest < Assert::Context
4
+ desc "the assert_same helper run in a test"
5
+ setup do
6
+ klass = Class.new
7
+ object = klass.new
8
+ fail_desc = @fail_desc = "assert same fail desc"
9
+ fail_args = @fail_args = [ object, klass.new, fail_desc ]
10
+ @test = Factory.test do
11
+ assert_same(object, object) # pass
12
+ assert_same(*fail_args) # fail
13
+ end
14
+ @test.run
15
+ end
16
+ subject{ @test }
17
+
18
+ should "have 2 total results" do
19
+ assert_equal 2, subject.result_count
20
+ end
21
+ should "have 1 pass result" do
22
+ assert_equal 1, subject.result_count(:pass)
23
+ end
24
+ should "have 1 fail result" do
25
+ assert_equal 1, subject.result_count(:fail)
26
+ end
27
+
28
+ class FailMessageTest < AssertSameTest
29
+ desc "with a failed result"
30
+ setup do
31
+ @expected = [
32
+ @fail_args[2],
33
+ "Expected #{@fail_args[0].inspect} (#{@fail_args[0].object_id}) to be the same as #{@fail_args[1].inspect} (#{@fail_args[1].object_id}).",
34
+ ].join("\n")
35
+ @fail_message = @test.fail_results.first.message
36
+ end
37
+ subject{ @fail_message }
38
+
39
+ should "have a fail message with an explanation of what failed and my fail description" do
40
+ assert_equal @expected, subject
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -1,28 +1,27 @@
1
1
  require 'assert'
2
2
 
3
- class Assert::Assertions::BasicTest < Assert::Context
4
-
5
- desc "An assert context"
6
- setup do
7
- @context_class = Factory.context_class
8
- @context = @context_class.new
9
- end
10
- subject{ @context }
3
+ module Assert::Assertions
4
+ class BasicTest < Assert::Context
11
5
 
12
- INSTANCE_METHODS = [
13
- :assert_block, :assert_not_block, :refute_block,
14
- :assert_raises, :assert_raise, :assert_nothing_raised, :assert_not_raises, :assert_not_raise,
15
- :assert_kind_of, :assert_not_kind_of, :refute_kind_of,
16
- :assert_instance_of, :assert_not_instance_of, :refute_instance_of,
17
- :assert_respond_to, :assert_not_respond_to, :refute_respond_to,
18
- :assert_same, :assert_not_same, :refute_same,
19
- :assert_equal, :assert_not_equal, :refute_equal,
20
- :assert_match, :assert_not_match, :assert_no_match, :refute_match
21
- ]
22
- INSTANCE_METHODS.each do |method|
23
- should "respond to the instance method ##{method}" do
24
- assert_respond_to subject, method
6
+ desc "An assert context"
7
+ setup do
8
+ @context_class = Factory.context_class
9
+ @context = @context_class.new
25
10
  end
11
+ subject{ @context }
12
+
13
+ should have_instance_methods :assert_block, :assert_not_block, :refute_block
14
+ should have_instance_methods :assert_raises, :assert_raise, :assert_nothing_raised, :assert_not_raises, :assert_not_raise
15
+ should have_instance_methods :assert_kind_of, :assert_not_kind_of, :refute_kind_of
16
+ should have_instance_methods :assert_instance_of, :assert_not_instance_of, :refute_instance_of
17
+ should have_instance_methods :assert_respond_to, :assert_not_respond_to, :refute_respond_to
18
+ should have_instance_methods :assert_same, :assert_not_same, :refute_same
19
+ should have_instance_methods :assert_equal, :assert_not_equal, :refute_equal
20
+ should have_instance_methods :assert_match, :assert_not_match, :assert_no_match, :refute_match
21
+ should have_instance_methods :assert_empty, :assert_not_empty, :refute_empty
22
+ should have_instance_methods :assert_includes, :assert_included
23
+ should have_instance_methods :assert_not_includes, :assert_not_included, :refute_includes, :refute_included
24
+ should have_instance_methods :assert_nil, :assert_not_nil, :refute_nil
26
25
  end
27
26
 
28
27
  class IgnoredTest < BasicTest
@@ -48,6 +47,7 @@ class Assert::Assertions::BasicTest < Assert::Context
48
47
  end
49
48
  assert_equal(Assert::Assertions::IGNORED_ASSERTION_HELPERS.size, subject.size)
50
49
  end
50
+
51
51
  should "have a custom ignore message for each helper in the constant" do
52
52
  assert_equal(@expected_messages, subject.collect(&:message))
53
53
  end
@@ -55,280 +55,3 @@ class Assert::Assertions::BasicTest < Assert::Context
55
55
  end
56
56
 
57
57
  end
58
-
59
- =begin
60
- module Assert::Assertions
61
-
62
- class AssertSameTest < BasicTest
63
-
64
- setup do
65
- klass = Class.new
66
- object = klass.new
67
- @test = Assert::Test.new("assert same test", lambda do
68
- assert_same(object, object) # pass
69
- assert_same(object, klass.new) # fail
70
- end, @context_klass)
71
- @test.run
72
- end
73
- subject{ @test }
74
-
75
- should "have 2 total results" do
76
- assert_equal 2, subject.result_count
77
- end
78
-
79
- should "have 1 pass result" do
80
- assert_equal 1, subject.result_count(:pass)
81
- end
82
-
83
- should "have 1 fail result" do
84
- assert_equal 1, subject.result_count(:fail)
85
- end
86
-
87
- class MessagesTest < AssertSameTest
88
-
89
- setup do
90
- klass = Class.new
91
- args = [ klass.new, klass.new, "assert same shoudn't fail!" ]
92
- @test = Assert::Test.new("assert same message test", lambda do
93
- assert_same(*args)
94
- end, @context_klass)
95
- @expected_message = "Expected #{args[0].inspect} (#{args[0].object_id}) to be the same as #{args[1]} (#{args[1].object_id}).\n#{args[2]}"
96
- @test.run
97
- @message = @test.fail_results.first.message
98
- end
99
- subject{ @message }
100
-
101
- should "have the correct failure message" do
102
- assert_equal @expected_message, subject
103
- end
104
-
105
- end
106
-
107
- end
108
-
109
- class AssertNotSameTest < BasicTest
110
-
111
- setup do
112
- klass = Class.new
113
- object = klass.new
114
- @test = Assert::Test.new("assert not same test", lambda do
115
- assert_not_same(object, object) # fail
116
- assert_not_same(object, klass.new) # pass
117
- end, @context_klass)
118
- @test.run
119
- end
120
- subject{ @test }
121
-
122
- should "have 2 total results" do
123
- assert_equal 2, subject.result_count
124
- end
125
-
126
- should "have 1 pass result" do
127
- assert_equal 1, subject.result_count(:pass)
128
- end
129
-
130
- should "have 1 fail result" do
131
- assert_equal 1, subject.result_count(:fail)
132
- end
133
-
134
- class MessagesTest < AssertNotSameTest
135
-
136
- setup do
137
- klass = Class.new
138
- object = klass.new
139
- args = [ object, object, "assert not same shoudn't fail!" ]
140
- @test = Assert::Test.new("assert not same message test", lambda do
141
- assert_not_same(*args)
142
- end, @context_klass)
143
- @expected_message = "#{args[0].inspect} (#{args[0].object_id}) not expected to be the same as #{args[1]} (#{args[1].object_id}).\n#{args[2]}"
144
- @test.run
145
- @message = @test.fail_results.first.message
146
- end
147
- subject{ @message }
148
-
149
- should "have the correct failure message" do
150
- assert_equal @expected_message, subject
151
- end
152
-
153
- end
154
-
155
- end
156
-
157
- class AssertEqualTest < BasicTest
158
-
159
- setup do
160
- @test = Assert::Test.new("assert equal test", lambda do
161
- assert_equal(1, 1) # pass
162
- assert_equal(1, 2) # fail
163
- end, @context_klass)
164
- @test.run
165
- end
166
- subject{ @test }
167
-
168
- should "have 2 total results" do
169
- assert_equal 2, subject.result_count
170
- end
171
-
172
- should "have 1 pass result" do
173
- assert_equal 1, subject.result_count(:pass)
174
- end
175
-
176
- should "have 1 fail result" do
177
- assert_equal 1, subject.result_count(:fail)
178
- end
179
-
180
- class MessagesTest < AssertEqualTest
181
-
182
- setup do
183
- args = [ 1, 2, "assert equal shoudn't fail!" ]
184
- @test = Assert::Test.new("assert equal message test", lambda do
185
- assert_equal(*args)
186
- end, @context_klass)
187
- @expected_message = "Expected #{args[0].inspect}, not #{args[1].inspect}.\n#{args[2]}"
188
- @test.run
189
- @message = @test.fail_results.first.message
190
- end
191
- subject{ @message }
192
-
193
- should "have the correct failure message" do
194
- assert_equal @expected_message, subject
195
- end
196
-
197
- end
198
-
199
- end
200
-
201
- class AssertNotEqualTest < BasicTest
202
-
203
- setup do
204
- @test = Assert::Test.new("assert not equal test", lambda do
205
- assert_not_equal(1, 1) # fail
206
- assert_not_equal(1, 2) # pass
207
- end, @context_klass)
208
- @test.run
209
- end
210
- subject{ @test }
211
-
212
- should "have 2 total results" do
213
- assert_equal 2, subject.result_count
214
- end
215
-
216
- should "have 1 pass result" do
217
- assert_equal 1, subject.result_count(:pass)
218
- end
219
-
220
- should "have 1 fail result" do
221
- assert_equal 1, subject.result_count(:fail)
222
- end
223
-
224
- class MessagesTest < AssertNotEqualTest
225
-
226
- setup do
227
- args = [ 1, 1, "assert not equal shoudn't fail!" ]
228
- @test = Assert::Test.new("assert not equal message test", lambda do
229
- assert_not_equal(*args)
230
- end, @context_klass)
231
- @expected_message = "#{args[0].inspect} not expected to be equal to #{args[1].inspect}.\n#{args[2]}"
232
- @test.run
233
- @message = @test.fail_results.first.message
234
- end
235
- subject{ @message }
236
-
237
- should "have the correct failure message" do
238
- assert_equal @expected_message, subject
239
- end
240
-
241
- end
242
-
243
- end
244
-
245
- class AssertMatchTest < BasicTest
246
-
247
- setup do
248
- @test = Assert::Test.new("assert match test", lambda do
249
- assert_match("a string", /a/) # pass
250
- assert_match("a string", "not") # fail
251
- end, @context_klass)
252
- @test.run
253
- end
254
- subject{ @test }
255
-
256
- should "have 2 total results" do
257
- assert_equal 2, subject.result_count
258
- end
259
-
260
- should "have 1 pass result" do
261
- assert_equal 1, subject.result_count(:pass)
262
- end
263
-
264
- should "have 1 fail result" do
265
- assert_equal 1, subject.result_count(:fail)
266
- end
267
-
268
- class MessagesTest < AssertMatchTest
269
-
270
- setup do
271
- args = [ "a string", "not", "assert match shoudn't fail!" ]
272
- @test = Assert::Test.new("assert match message test", lambda do
273
- assert_match(*args)
274
- end, @context_klass)
275
- @expected_message = "Expected #{args[0].inspect} to match #{args[1].inspect}.\n#{args[2]}"
276
- @test.run
277
- @message = @test.fail_results.first.message
278
- end
279
- subject{ @message }
280
-
281
- should "have the correct failure message" do
282
- assert_equal @expected_message, subject
283
- end
284
-
285
- end
286
-
287
- end
288
-
289
- class AssertNotMatchTest < BasicTest
290
-
291
- setup do
292
- @test = Assert::Test.new("assert not match test", lambda do
293
- assert_not_match("a string", /a/) # fail
294
- assert_not_match("a string", "not") # pass
295
- end, @context_klass)
296
- @test.run
297
- end
298
- subject{ @test }
299
-
300
- should "have 2 total results" do
301
- assert_equal 2, subject.result_count
302
- end
303
-
304
- should "have 1 pass result" do
305
- assert_equal 1, subject.result_count(:pass)
306
- end
307
-
308
- should "have 1 fail result" do
309
- assert_equal 1, subject.result_count(:fail)
310
- end
311
-
312
- class MessagesTest < AssertNotMatchTest
313
-
314
- setup do
315
- args = [ "a string", /a/, "assert not match shoudn't fail!" ]
316
- @test = Assert::Test.new("assert not match message test", lambda do
317
- assert_not_match(*args)
318
- end, @context_klass)
319
- @expected_message = "#{args[0].inspect} not expected to match #{args[1].inspect}.\n#{args[2]}"
320
- @test.run
321
- @message = @test.fail_results.first.message
322
- end
323
- subject{ @message }
324
-
325
- should "have the correct failure message" do
326
- assert_equal @expected_message, subject
327
- end
328
-
329
- end
330
-
331
- end
332
-
333
- end
334
- =end