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
@@ -1,15 +1,18 @@
1
1
  require 'assert'
2
2
 
3
- class Assert::Test::RunningTest < Assert::Context
4
- desc "Assert tests that are run"
3
+ class Assert::Test
5
4
 
6
- class NothingTest < Assert::Test::RunningTest
5
+ class RunningTest < Assert::Context
6
+ desc "Assert tests that are run"
7
+ subject{ @test }
8
+ end
9
+
10
+ class NothingTest < RunningTest
7
11
  desc "and does nothing"
8
12
  setup do
9
13
  @test = Factory.test
10
14
  @test.run
11
15
  end
12
- subject{ @test }
13
16
 
14
17
  should "have 0 results" do
15
18
  assert_equal 0, subject.result_count
@@ -19,13 +22,12 @@ class Assert::Test::RunningTest < Assert::Context
19
22
 
20
23
 
21
24
 
22
- class PassTest < Assert::Test::RunningTest
25
+ class PassTest < RunningTest
23
26
  desc "and passes a single assertion"
24
27
  setup do
25
28
  @test = Factory.test{ assert(1 == 1) }
26
29
  @test.run
27
30
  end
28
- subject{ @test }
29
31
 
30
32
  should "have 1 result" do
31
33
  assert_equal 1, subject.result_count
@@ -38,13 +40,12 @@ class Assert::Test::RunningTest < Assert::Context
38
40
 
39
41
 
40
42
 
41
- class FailTest < Assert::Test::RunningTest
43
+ class FailTest < RunningTest
42
44
  desc "and fails a single assertion"
43
45
  setup do
44
46
  @test = Factory.test{ assert(1 == 0) }
45
47
  @test.run
46
48
  end
47
- subject{ @test }
48
49
 
49
50
  should "have 1 result" do
50
51
  assert_equal 1, subject.result_count
@@ -57,13 +58,12 @@ class Assert::Test::RunningTest < Assert::Context
57
58
 
58
59
 
59
60
 
60
- class SkipTest < Assert::Test::RunningTest
61
+ class SkipTest < RunningTest
61
62
  desc "and skips"
62
63
  setup do
63
64
  @test = Factory.test{ skip }
64
65
  @test.run
65
66
  end
66
- subject{ @test }
67
67
 
68
68
  should "have 1 result" do
69
69
  assert_equal 1, subject.result_count
@@ -76,13 +76,12 @@ class Assert::Test::RunningTest < Assert::Context
76
76
 
77
77
 
78
78
 
79
- class ErrorTest < Assert::Test::RunningTest
79
+ class ErrorTest < RunningTest
80
80
  desc "and errors"
81
81
  setup do
82
82
  @test = Factory.test{ raise("WHAT") }
83
83
  @test.run
84
84
  end
85
- subject{ @test }
86
85
 
87
86
  should "have 1 result" do
88
87
  assert_equal 1, subject.result_count
@@ -95,7 +94,7 @@ class Assert::Test::RunningTest < Assert::Context
95
94
 
96
95
 
97
96
 
98
- class MixedTest < Assert::Test::RunningTest
97
+ class MixedTest < RunningTest
99
98
  desc "and has 1 pass and 1 fail assertion"
100
99
  setup do
101
100
  @test = Factory.test do
@@ -104,7 +103,6 @@ class Assert::Test::RunningTest < Assert::Context
104
103
  end
105
104
  @test.run
106
105
  end
107
- subject{ @test }
108
106
 
109
107
  should "have 2 total results" do
110
108
  assert_equal 2, subject.result_count
@@ -120,7 +118,7 @@ class Assert::Test::RunningTest < Assert::Context
120
118
 
121
119
 
122
120
 
123
- class MixedSkipTest < Assert::Test::RunningTest
121
+ class MixedSkipTest < RunningTest
124
122
  desc "and has 1 pass and 1 fail assertion with a skip call in between"
125
123
  setup do
126
124
  @test = Factory.test do
@@ -130,7 +128,6 @@ class Assert::Test::RunningTest < Assert::Context
130
128
  end
131
129
  @test.run
132
130
  end
133
- subject{ @test }
134
131
 
135
132
  should "have 2 total results" do
136
133
  assert_equal 2, subject.result_count
@@ -152,7 +149,7 @@ class Assert::Test::RunningTest < Assert::Context
152
149
 
153
150
 
154
151
 
155
- class MixedErrorTest < Assert::Test::RunningTest
152
+ class MixedErrorTest < RunningTest
156
153
  desc "and has 1 pass and 1 fail assertion with an exception raised in between"
157
154
  setup do
158
155
  @test = Factory.test do
@@ -162,7 +159,6 @@ class Assert::Test::RunningTest < Assert::Context
162
159
  end
163
160
  @test.run
164
161
  end
165
- subject{ @test }
166
162
 
167
163
  should "have an error for its last result" do
168
164
  assert_kind_of Assert::Result::Error, subject.results.last
@@ -184,7 +180,7 @@ class Assert::Test::RunningTest < Assert::Context
184
180
 
185
181
 
186
182
 
187
- class MixedPassTest < Assert::Test::RunningTest
183
+ class MixedPassTest < RunningTest
188
184
  desc "and has 1 pass and 1 fail assertion with a pass call in between"
189
185
  setup do
190
186
  @test = Factory.test do
@@ -194,7 +190,6 @@ class Assert::Test::RunningTest < Assert::Context
194
190
  end
195
191
  @test.run
196
192
  end
197
- subject{ @test }
198
193
 
199
194
  should "have a pass for its last result" do
200
195
  assert_kind_of Assert::Result::Fail, subject.results.last
@@ -213,7 +208,7 @@ class Assert::Test::RunningTest < Assert::Context
213
208
 
214
209
 
215
210
 
216
- class MixedFailTest < Assert::Test::RunningTest
211
+ class MixedFailTest < RunningTest
217
212
  desc "and has 1 pass and 1 fail assertion with a fail call in between"
218
213
  setup do
219
214
  @test = Factory.test do
@@ -223,7 +218,6 @@ class Assert::Test::RunningTest < Assert::Context
223
218
  end
224
219
  @test.run
225
220
  end
226
- subject{ @test }
227
221
 
228
222
  should "have a fail for its last result" do
229
223
  assert_kind_of Assert::Result::Pass, subject.results.last
@@ -242,7 +236,7 @@ class Assert::Test::RunningTest < Assert::Context
242
236
 
243
237
 
244
238
 
245
- class MixedFlunkTest < Assert::Test::RunningTest
239
+ class MixedFlunkTest < RunningTest
246
240
  desc "and has 1 pass and 1 fail assertion with a flunk call in between"
247
241
  setup do
248
242
  @test = Factory.test do
@@ -252,7 +246,6 @@ class Assert::Test::RunningTest < Assert::Context
252
246
  end
253
247
  @test.run
254
248
  end
255
- subject{ @test }
256
249
 
257
250
  should "have a fail for its last result" do
258
251
  assert_kind_of Assert::Result::Pass, subject.results.last
@@ -271,7 +264,7 @@ class Assert::Test::RunningTest < Assert::Context
271
264
 
272
265
 
273
266
 
274
- class WithSetupTest < Assert::Test::RunningTest
267
+ class WithSetupTest < RunningTest
275
268
  desc "a Test that runs and has assertions that depend on a setup block"
276
269
  setup do
277
270
  @context_class = Factory.context_class do
@@ -282,7 +275,6 @@ class Assert::Test::RunningTest < Assert::Context
282
275
  end
283
276
  @test.run
284
277
  end
285
- subject{ @test }
286
278
 
287
279
  should "have 1 total result" do
288
280
  assert_equal 1, subject.result_count
@@ -295,7 +287,7 @@ class Assert::Test::RunningTest < Assert::Context
295
287
 
296
288
 
297
289
 
298
- class WithTeardownTest < Assert::Test::RunningTest
290
+ class WithTeardownTest < RunningTest
299
291
  desc "a Test that runs and has assertions with a teardown block"
300
292
  setup do
301
293
  new_message = @new_message = "HOLLA"
@@ -310,7 +302,6 @@ class Assert::Test::RunningTest < Assert::Context
310
302
  end
311
303
  @test.run
312
304
  end
313
- subject{ @test }
314
305
 
315
306
  should "have 1 total result" do
316
307
  assert_equal 1, subject.result_count
data/test/test_test.rb CHANGED
@@ -1,163 +1,165 @@
1
1
  require 'assert'
2
2
 
3
- class Assert::Test::BasicTest < Assert::Context
4
- desc "Assert test"
5
- setup do
6
- test_name = "test: should do something amazing"
7
- @test_code = lambda{ assert(true) }
8
- context_desc = "context class"
9
- @context_class = Factory.context_class do
10
- desc context_desc
11
- end
12
- @test = Factory.test(test_name, @context_class, @test_code)
13
- @expected_name = [ context_desc, test_name.gsub(/^test:\s+should/, "should") ].join(" ")
14
- end
15
- subject{ @test }
16
-
17
- INSTANCE_METHODS = [
18
- :name, :code, :context_class,
19
- :results, :results=,
20
- :run, :run_setup, :run_teardown,
21
- :result_count,
22
- Assert::Result.types.keys.collect{|k| "#{k}_results".to_sym }
23
- ].flatten
24
- INSTANCE_METHODS.each do |method|
25
- should "respond to the instance method ##{method}" do
26
- assert_respond_to subject, method
3
+ class Assert::Test
4
+
5
+ class BasicTest < Assert::Context
6
+ desc "Assert test"
7
+ setup do
8
+ test_name = "test: should do something amazing"
9
+ @test_code = lambda{ assert(true) }
10
+ context_desc = "context class"
11
+ @context_class = Factory.context_class do
12
+ desc context_desc
13
+ end
14
+ @test = Factory.test(test_name, @context_class, @test_code)
15
+ @expected_name = [ context_desc, test_name.gsub(/^test:\s+should/, "should") ].join(" ")
27
16
  end
28
- end
17
+ teardown do
18
+ TEST_ASSERT_SUITE.clear
19
+ end
20
+ subject{ @test }
29
21
 
30
- should "set it's test name to the context description with the passed in name cleaned" do
31
- assert_equal @expected_name, subject.name
32
- end
33
- should "set it's context class and code from its initialize" do
34
- assert_equal @context_class, subject.context_class
35
- assert_equal @test_code, subject.code
36
- end
37
- should "have zero results before running" do
38
- assert_equal 0, subject.result_count
39
- end
40
- should "have a custom inspect that only shows limited attributes" do
41
- attributes_string = [ :name, :context_class, :results ].collect do |method|
42
- "@#{method}=#{subject.send(method).inspect}"
43
- end.join(" ")
44
- expected = "#<#{subject.class} #{attributes_string}>"
45
- assert_equal expected, subject.inspect
46
- end
22
+ should have_readers :name, :code, :context_class
23
+ should have_accessor :results
24
+ should have_instance_methods :run, :result_count
25
+ should have_instance_methods *Assert::Result.types.keys.collect{|k| "#{k}_results".to_sym }
47
26
 
48
- teardown do
49
- TEST_ASSERT_SUITE.clear
50
- end
27
+ should "set it's test name to the context description with the passed in name cleaned" do
28
+ assert_equal @expected_name, subject.name
29
+ end
51
30
 
31
+ should "set it's context class and code from its initialize" do
32
+ assert_equal @context_class, subject.context_class
33
+ assert_equal @test_code, subject.code
34
+ end
35
+
36
+ should "have zero results before running" do
37
+ assert_equal 0, subject.result_count
38
+ end
39
+
40
+ should "have a custom inspect that only shows limited attributes" do
41
+ attributes_string = [ :name, :context_class, :results ].collect do |method|
42
+ "@#{method}=#{subject.send(method).inspect}"
43
+ end.join(" ")
44
+ expected = "#<#{subject.class} #{attributes_string}>"
45
+ assert_equal expected, subject.inspect
46
+ end
47
+
48
+ end
52
49
 
53
50
 
54
51
  # testing <type>_results methods and result_count(<type>)
55
- class ResultsTest < Assert::Test::BasicTest
52
+ class ResultsTest < BasicTest
56
53
  desc "methods from Assert::Result.types"
54
+ end
57
55
 
58
- class PassFailIgnoreTest < ResultsTest
59
- setup do
60
- @test = Factory.test("pass fail ignore test", @context_class) do
61
- ignore("something")
62
- assert(true)
63
- assert(false)
64
- ignore("something else")
65
- assert(34)
66
- assert(nil)
67
- end
68
- @test.run
69
- end
70
- subject{ @test }
71
-
72
- should "return the pass results with #pass_results" do
73
- assert_kind_of Array, subject.pass_results
74
- assert_equal 2, subject.pass_results.size
75
- subject.pass_results.each do |result|
76
- assert_kind_of Assert::Result::Pass, result
77
- end
78
- end
79
- should "return the size of #pass_results with #result_count(:pass)" do
80
- assert_equal(subject.pass_results.size, subject.result_count(:pass))
81
- end
82
- should "return the fail results with #fail_results" do
83
- assert_kind_of Array, subject.fail_results
84
- assert_equal 2, subject.fail_results.size
85
- subject.fail_results.each do |result|
86
- assert_kind_of Assert::Result::Fail, result
87
- end
88
- end
89
- should "return the size of #fail_results with #result_count(:fail)" do
90
- assert_equal(subject.fail_results.size, subject.result_count(:fail))
56
+ class PassFailIgnoreTest < ResultsTest
57
+ setup do
58
+ @test = Factory.test("pass fail ignore test", @context_class) do
59
+ ignore("something")
60
+ assert(true)
61
+ assert(false)
62
+ ignore("something else")
63
+ assert(34)
64
+ assert(nil)
91
65
  end
92
- should "return the ignore results with #ignore_results" do
93
- assert_kind_of Array, subject.ignore_results
94
- assert_equal 2, subject.ignore_results.size
95
- subject.ignore_results.each do |result|
96
- assert_kind_of Assert::Result::Ignore, result
97
- end
66
+ @test.run
67
+ end
68
+ subject{ @test }
69
+
70
+ should "return the pass results with #pass_results" do
71
+ assert_kind_of Array, subject.pass_results
72
+ assert_equal 2, subject.pass_results.size
73
+ subject.pass_results.each do |result|
74
+ assert_kind_of Assert::Result::Pass, result
98
75
  end
99
- should "return the size of #ignore_results with #result_count(:ignore)" do
100
- assert_equal(subject.ignore_results.size, subject.result_count(:ignore))
76
+ end
77
+
78
+ should "return the size of #pass_results with #result_count(:pass)" do
79
+ assert_equal(subject.pass_results.size, subject.result_count(:pass))
80
+ end
81
+
82
+ should "return the fail results with #fail_results" do
83
+ assert_kind_of Array, subject.fail_results
84
+ assert_equal 2, subject.fail_results.size
85
+ subject.fail_results.each do |result|
86
+ assert_kind_of Assert::Result::Fail, result
101
87
  end
102
- should "return the total number of tests with #result_count" do
103
- assert_equal(6, subject.result_count)
88
+ end
89
+
90
+ should "return the size of #fail_results with #result_count(:fail)" do
91
+ assert_equal(subject.fail_results.size, subject.result_count(:fail))
92
+ end
93
+
94
+ should "return the ignore results with #ignore_results" do
95
+ assert_kind_of Array, subject.ignore_results
96
+ assert_equal 2, subject.ignore_results.size
97
+ subject.ignore_results.each do |result|
98
+ assert_kind_of Assert::Result::Ignore, result
104
99
  end
100
+ end
105
101
 
102
+ should "return the size of #ignore_results with #result_count(:ignore)" do
103
+ assert_equal(subject.ignore_results.size, subject.result_count(:ignore))
106
104
  end
107
105
 
106
+ should "return the total number of tests with #result_count" do
107
+ assert_equal(6, subject.result_count)
108
+ end
108
109
 
110
+ end
109
111
 
110
- class SkipTest < ResultsTest
111
- setup do
112
- @test = Factory.test("skip test", @context_class) do
113
- skip
114
- end
115
- @test.run
116
- end
117
- subject{ @test }
118
-
119
- should "return the skip results with #skip_results" do
120
- assert_kind_of Array, subject.skip_results
121
- assert_equal 1, subject.skip_results.size
122
- subject.skip_results.each do |result|
123
- assert_kind_of Assert::Result::Skip, result
124
- end
125
- end
126
- should "return the size of #skip_results with #result_count(:skip)" do
127
- assert_equal(subject.skip_results.size, subject.result_count(:skip))
112
+
113
+
114
+ class SkipHandlingTest < ResultsTest
115
+ setup do
116
+ @test = Factory.test("skip test", @context_class) { skip }
117
+ @test.run
118
+ end
119
+ subject{ @test }
120
+
121
+ should "return the skip results with #skip_results" do
122
+ assert_kind_of Array, subject.skip_results
123
+ assert_equal 1, subject.skip_results.size
124
+ subject.skip_results.each do |result|
125
+ assert_kind_of Assert::Result::Skip, result
128
126
  end
127
+ end
129
128
 
129
+ should "return the size of #skip_results with #result_count(:skip)" do
130
+ assert_equal(subject.skip_results.size, subject.result_count(:skip))
130
131
  end
131
132
 
133
+ end
134
+
132
135
 
133
136
 
134
- class ErrorTest < ResultsTest
135
- setup do
136
- @test = Factory.test("error test", @context_class) do
137
- raise StandardError, "WHAT"
138
- end
139
- @test.run
140
- end
141
- subject{ @test }
142
-
143
- should "return the error results with #error_results" do
144
- assert_kind_of Array, subject.error_results
145
- assert_equal 1, subject.error_results.size
146
- subject.error_results.each do |result|
147
- assert_kind_of Assert::Result::Error, result
148
- end
137
+ class ErrorHandlingTest < ResultsTest
138
+ setup do
139
+ @test = Factory.test("error test", @context_class) do
140
+ raise StandardError, "WHAT"
149
141
  end
150
- should "return the size of #error_results with #result_count(:error)" do
151
- assert_equal(subject.error_results.size, subject.result_count(:error))
142
+ @test.run
143
+ end
144
+ subject{ @test }
145
+
146
+ should "return the error results with #error_results" do
147
+ assert_kind_of Array, subject.error_results
148
+ assert_equal 1, subject.error_results.size
149
+ subject.error_results.each do |result|
150
+ assert_kind_of Assert::Result::Error, result
152
151
  end
152
+ end
153
153
 
154
+ should "return the size of #error_results with #result_count(:error)" do
155
+ assert_equal(subject.error_results.size, subject.result_count(:error))
154
156
  end
155
157
 
156
158
  end
157
159
 
158
160
 
159
161
 
160
- class ComparingTest < Assert::Test::BasicTest
162
+ class ComparingTest < BasicTest
161
163
  desc "<=> another test"
162
164
  setup do
163
165
  @test = Factory.test("mmm")
@@ -168,10 +170,12 @@ class Assert::Test::BasicTest < Assert::Context
168
170
  result = @test <=> Factory.test("aaa")
169
171
  assert_equal(1, result)
170
172
  end
171
- should "return 0 with named the same" do
173
+
174
+ should "return 0 with a test named the same" do
172
175
  result = @test <=> Factory.test(@test.name)
173
176
  assert_equal(0, result)
174
177
  end
178
+
175
179
  should "return -1 with a test named 'zzz' (less than it)" do
176
180
  result = @test <=> Factory.test("zzz")
177
181
  assert_equal(-1, result)
@@ -179,6 +183,4 @@ class Assert::Test::BasicTest < Assert::Context
179
183
 
180
184
  end
181
185
 
182
-
183
-
184
186
  end