minispec 0.0.1
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.
- checksums.yaml +7 -0
- data/.pryrc +2 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +2140 -0
- data/Rakefile +11 -0
- data/bin/minispec +4 -0
- data/lib/minispec.rb +175 -0
- data/lib/minispec/api.rb +2 -0
- data/lib/minispec/api/class.rb +195 -0
- data/lib/minispec/api/class/after.rb +49 -0
- data/lib/minispec/api/class/around.rb +54 -0
- data/lib/minispec/api/class/before.rb +101 -0
- data/lib/minispec/api/class/helpers.rb +116 -0
- data/lib/minispec/api/class/let.rb +44 -0
- data/lib/minispec/api/class/tests.rb +33 -0
- data/lib/minispec/api/instance.rb +158 -0
- data/lib/minispec/api/instance/mocks/doubles.rb +36 -0
- data/lib/minispec/api/instance/mocks/mocks.rb +319 -0
- data/lib/minispec/api/instance/mocks/spies.rb +17 -0
- data/lib/minispec/api/instance/mocks/stubs.rb +105 -0
- data/lib/minispec/helpers.rb +1 -0
- data/lib/minispec/helpers/array.rb +56 -0
- data/lib/minispec/helpers/booleans.rb +108 -0
- data/lib/minispec/helpers/generic.rb +24 -0
- data/lib/minispec/helpers/mocks/expectations.rb +29 -0
- data/lib/minispec/helpers/mocks/spies.rb +36 -0
- data/lib/minispec/helpers/raise.rb +44 -0
- data/lib/minispec/helpers/throw.rb +29 -0
- data/lib/minispec/mocks.rb +11 -0
- data/lib/minispec/mocks/expectations.rb +77 -0
- data/lib/minispec/mocks/stubs.rb +178 -0
- data/lib/minispec/mocks/validations.rb +80 -0
- data/lib/minispec/mocks/validations/amount.rb +63 -0
- data/lib/minispec/mocks/validations/arguments.rb +161 -0
- data/lib/minispec/mocks/validations/caller.rb +43 -0
- data/lib/minispec/mocks/validations/order.rb +47 -0
- data/lib/minispec/mocks/validations/raise.rb +111 -0
- data/lib/minispec/mocks/validations/return.rb +74 -0
- data/lib/minispec/mocks/validations/throw.rb +91 -0
- data/lib/minispec/mocks/validations/yield.rb +141 -0
- data/lib/minispec/proxy.rb +201 -0
- data/lib/minispec/reporter.rb +185 -0
- data/lib/minispec/utils.rb +139 -0
- data/lib/minispec/utils/differ.rb +325 -0
- data/lib/minispec/utils/pretty_print.rb +51 -0
- data/lib/minispec/utils/raise.rb +123 -0
- data/lib/minispec/utils/throw.rb +140 -0
- data/minispec.gemspec +27 -0
- data/test/mocks/expectations/amount.rb +67 -0
- data/test/mocks/expectations/arguments.rb +126 -0
- data/test/mocks/expectations/caller.rb +55 -0
- data/test/mocks/expectations/generic.rb +35 -0
- data/test/mocks/expectations/order.rb +46 -0
- data/test/mocks/expectations/raise.rb +166 -0
- data/test/mocks/expectations/return.rb +71 -0
- data/test/mocks/expectations/throw.rb +113 -0
- data/test/mocks/expectations/yield.rb +109 -0
- data/test/mocks/spies/amount.rb +68 -0
- data/test/mocks/spies/arguments.rb +57 -0
- data/test/mocks/spies/generic.rb +61 -0
- data/test/mocks/spies/order.rb +38 -0
- data/test/mocks/spies/raise.rb +158 -0
- data/test/mocks/spies/return.rb +71 -0
- data/test/mocks/spies/throw.rb +113 -0
- data/test/mocks/spies/yield.rb +101 -0
- data/test/mocks/test__doubles.rb +98 -0
- data/test/mocks/test__expectations.rb +27 -0
- data/test/mocks/test__mocks.rb +197 -0
- data/test/mocks/test__proxies.rb +61 -0
- data/test/mocks/test__spies.rb +43 -0
- data/test/mocks/test__stubs.rb +427 -0
- data/test/proxified_asserts.rb +34 -0
- data/test/setup.rb +53 -0
- data/test/test__around.rb +58 -0
- data/test/test__assert.rb +510 -0
- data/test/test__before_and_after.rb +117 -0
- data/test/test__before_and_after_all.rb +71 -0
- data/test/test__helpers.rb +197 -0
- data/test/test__raise.rb +104 -0
- data/test/test__skip.rb +41 -0
- data/test/test__throw.rb +103 -0
- metadata +196 -0
@@ -0,0 +1,34 @@
|
|
1
|
+
class MinispecTest
|
2
|
+
class ProxifiedAsserts < self
|
3
|
+
include MinispecTest::Asserts::Mixin
|
4
|
+
|
5
|
+
unit = Unit.new
|
6
|
+
unit.__ms__prepare_test
|
7
|
+
proxied_methods = [
|
8
|
+
[STRING, [:==, :===, :eql?, :equal?, :empty?, :!=, :=~, :<=, :include?, :start_with?, :frozen?]],
|
9
|
+
[TAINTED_STRING, [:tainted?]],
|
10
|
+
[UNTRUSTED_STRING, [:untrusted?]],
|
11
|
+
[ARRAY, [:!=, :any?, :all?, :empty?, :instance_of?, :respond_to?, :include?, :frozen?, :kind_of?]],
|
12
|
+
[HASH, [:any?, :all?, :is_a?, :empty?, :respond_to?]],
|
13
|
+
[NIL, [:nil?]]
|
14
|
+
]
|
15
|
+
|
16
|
+
proxied_methods.each do |(object, methods)|
|
17
|
+
methods.each do |method|
|
18
|
+
unit.proxy(object, method)
|
19
|
+
|
20
|
+
test = 'test_ %s#%s received through proxy' % [object.inspect, method]
|
21
|
+
define_method test do
|
22
|
+
messages = Messages.select do |m|
|
23
|
+
m[:object] == object && m[:method] == method
|
24
|
+
end
|
25
|
+
assert_operator messages.size, :>, 0
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
result = msrun(Unit)
|
31
|
+
Status = result.status
|
32
|
+
Messages = unit.__ms__mocks__messages_copy
|
33
|
+
end
|
34
|
+
end
|
data/test/setup.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
require 'minispec'
|
3
|
+
|
4
|
+
class Reporter < MiniSpec::Reporter
|
5
|
+
attr_reader :status
|
6
|
+
|
7
|
+
def initialize(*)
|
8
|
+
super
|
9
|
+
@status = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def mark_as_passed spec, test
|
13
|
+
super
|
14
|
+
@status[test] = 0
|
15
|
+
end
|
16
|
+
|
17
|
+
def mark_as_skipped spec, test, source
|
18
|
+
super
|
19
|
+
@status[test] = -1
|
20
|
+
end
|
21
|
+
|
22
|
+
def mark_as_failed spec, test, verb, proc, failures
|
23
|
+
super
|
24
|
+
@status[test] = 1
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class SilentReporter < Reporter
|
29
|
+
def puts(*); end
|
30
|
+
alias print puts
|
31
|
+
end
|
32
|
+
|
33
|
+
def msrun spec, verbose = false
|
34
|
+
reporter = verbose ? Reporter.new : SilentReporter.new
|
35
|
+
spec.run(reporter)
|
36
|
+
reporter.summary if verbose
|
37
|
+
reporter
|
38
|
+
end
|
39
|
+
|
40
|
+
class MinispecTest < Minitest::Test
|
41
|
+
def self.define_tests unit
|
42
|
+
result = msrun(unit)
|
43
|
+
unit.tests.each_pair do |test,(_,proc)|
|
44
|
+
status = test =~ /:fail/ ? 1 : 0
|
45
|
+
define_method 'test_ %s: %s' % [unit, test] do
|
46
|
+
assert_equal(status, result.status[test], proc.source_location)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class Expectations < self
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
class MinispecTest
|
2
|
+
class Around < self
|
3
|
+
|
4
|
+
X, Y = [], []
|
5
|
+
class A
|
6
|
+
include Minispec
|
7
|
+
|
8
|
+
around do |test|
|
9
|
+
X.clear
|
10
|
+
X << 1
|
11
|
+
test.call
|
12
|
+
X << 2
|
13
|
+
end
|
14
|
+
|
15
|
+
test :around do
|
16
|
+
X << :A
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_around
|
21
|
+
msrun(A)
|
22
|
+
assert_equal [1, :A, 2], X
|
23
|
+
end
|
24
|
+
|
25
|
+
module C
|
26
|
+
include Minispec
|
27
|
+
|
28
|
+
around /a/ do |test|
|
29
|
+
X.clear
|
30
|
+
test.call
|
31
|
+
X << :a
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class D
|
36
|
+
include C
|
37
|
+
|
38
|
+
test(:a) {}
|
39
|
+
test(:b) {}
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_around_runs_only_on_matching_tests
|
43
|
+
msrun(D)
|
44
|
+
assert_equal [:a], X
|
45
|
+
end
|
46
|
+
|
47
|
+
class F < A
|
48
|
+
around {raise}
|
49
|
+
around {X.clear}
|
50
|
+
test(:around) {}
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_only_last_around_run
|
54
|
+
msrun(F)
|
55
|
+
assert_equal [], X
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,510 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
class MinispecTest
|
4
|
+
class Asserts < self
|
5
|
+
module Mixin
|
6
|
+
STRING = 'abc'
|
7
|
+
TAINTED_STRING = 'tainted'.taint
|
8
|
+
UNTRUSTED_STRING = 'untrusted'.untrust
|
9
|
+
ARRAY = [1, '2', 'three']
|
10
|
+
HASH = {foo: :bar}
|
11
|
+
INTEGER = 2.freeze # on jruby integers are not frozen
|
12
|
+
FLOAT = 2.0
|
13
|
+
NIL = nil
|
14
|
+
|
15
|
+
class Unit
|
16
|
+
include Minispec
|
17
|
+
continue_on_failures true
|
18
|
+
end
|
19
|
+
|
20
|
+
Unit.test :== do
|
21
|
+
is(STRING) == %[abc]
|
22
|
+
assert(INTEGER) == FLOAT
|
23
|
+
end
|
24
|
+
def test_equality
|
25
|
+
assert STRING == 'abc'
|
26
|
+
assert INTEGER == FLOAT
|
27
|
+
assert passed(:==)
|
28
|
+
end
|
29
|
+
Unit.test ':== generates a failure' do
|
30
|
+
is(STRING) == 'a'
|
31
|
+
end
|
32
|
+
def test_failure_of_equality
|
33
|
+
assert failed(:==)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
Unit.test :=== do
|
38
|
+
check(STRING) === 'ABC'.downcase
|
39
|
+
prove(String) === STRING
|
40
|
+
check(Array) === ARRAY
|
41
|
+
assume(Hash) === HASH
|
42
|
+
end
|
43
|
+
def test_case_equality
|
44
|
+
assert STRING === 'ABC'.downcase
|
45
|
+
assert String === STRING
|
46
|
+
assert Array === ARRAY
|
47
|
+
assert Hash === HASH
|
48
|
+
assert passed(:===)
|
49
|
+
end
|
50
|
+
Unit.test ':=== generates a failure' do
|
51
|
+
check(STRING) === 'ABC'
|
52
|
+
end
|
53
|
+
def test_failure_of_case_equality
|
54
|
+
assert failed(:===)
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
Unit.test :eql? do
|
59
|
+
is(STRING).eql? 'cba'.reverse
|
60
|
+
refute(INTEGER).eql? FLOAT
|
61
|
+
end
|
62
|
+
def test_eql?
|
63
|
+
assert STRING.eql?('cba'.reverse)
|
64
|
+
refute INTEGER.eql?(FLOAT)
|
65
|
+
assert passed(:eql?)
|
66
|
+
end
|
67
|
+
Unit.test ':eql? generates a failure' do
|
68
|
+
is(STRING).eql? 'cba'
|
69
|
+
end
|
70
|
+
def test_failure_of_eql?
|
71
|
+
assert failed(:eql?)
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
Unit.test :equal? do
|
76
|
+
is(STRING).equal? STRING
|
77
|
+
refute('a').equal? 'a'
|
78
|
+
end
|
79
|
+
def test_equal?
|
80
|
+
assert STRING.equal?(STRING)
|
81
|
+
refute 'a'.equal?('a')
|
82
|
+
assert passed(:equal?)
|
83
|
+
end
|
84
|
+
Unit.test ':equal? generates a failure' do
|
85
|
+
is(STRING).equal? 'abc'
|
86
|
+
end
|
87
|
+
def test_failure_of_equal?
|
88
|
+
assert failed(:equal?)
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
Unit.test :empty? do
|
93
|
+
refute(STRING).empty?
|
94
|
+
refute(ARRAY).empty?
|
95
|
+
refute(HASH).empty?
|
96
|
+
is([]).empty?
|
97
|
+
is({}).empty?
|
98
|
+
end
|
99
|
+
def test_empty?
|
100
|
+
refute STRING.empty?
|
101
|
+
refute ARRAY.empty?
|
102
|
+
refute HASH.empty?
|
103
|
+
assert [].empty?
|
104
|
+
assert({}.empty?)
|
105
|
+
assert passed(:empty?)
|
106
|
+
end
|
107
|
+
Unit.test ':empty? generates a failure' do
|
108
|
+
is(STRING).empty?
|
109
|
+
end
|
110
|
+
def test_failure_of_empty?
|
111
|
+
assert failed(:empty?)
|
112
|
+
end
|
113
|
+
|
114
|
+
|
115
|
+
Unit.test :=~ do
|
116
|
+
assume(STRING) =~ /a/
|
117
|
+
end
|
118
|
+
def test_tilde_match
|
119
|
+
assert(STRING =~ /a/)
|
120
|
+
assert passed(:=~)
|
121
|
+
end
|
122
|
+
Unit.test ':=~ generates a failure' do
|
123
|
+
assume(STRING) =~ /z/
|
124
|
+
end
|
125
|
+
def test_failure_of_tilde_match
|
126
|
+
assert failed(:=~)
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
Unit.test :match do
|
131
|
+
expect(STRING).match /b/
|
132
|
+
end
|
133
|
+
def test_match
|
134
|
+
assert STRING.match(/b/)
|
135
|
+
assert passed(:match)
|
136
|
+
end
|
137
|
+
Unit.test ':match generates a failure' do
|
138
|
+
expect(STRING).match /bar/
|
139
|
+
end
|
140
|
+
def test_failure_of_match
|
141
|
+
assert failed(:match)
|
142
|
+
end
|
143
|
+
|
144
|
+
|
145
|
+
Unit.test :include? do
|
146
|
+
does(STRING).include? 'c'
|
147
|
+
does(ARRAY).include? 1
|
148
|
+
end
|
149
|
+
def test_include?
|
150
|
+
assert STRING.include?('c')
|
151
|
+
assert ARRAY.include?(1)
|
152
|
+
assert passed(:include?)
|
153
|
+
end
|
154
|
+
Unit.test ':include? generates a failure' do
|
155
|
+
does(STRING).include? 'z'
|
156
|
+
end
|
157
|
+
def test_failure_of_include?
|
158
|
+
assert failed(:include?)
|
159
|
+
end
|
160
|
+
|
161
|
+
|
162
|
+
Unit.test :any? do
|
163
|
+
are(ARRAY).any? {|x| x.to_i > 1}
|
164
|
+
has(HASH).any? {|k,v| k == :foo}
|
165
|
+
end
|
166
|
+
def test_any?
|
167
|
+
assert ARRAY.any? {|x| x.to_i > 1}
|
168
|
+
assert HASH.any? {|k,v| k == :foo}
|
169
|
+
assert passed(:any?)
|
170
|
+
end
|
171
|
+
Unit.test ':any? generates a failure' do
|
172
|
+
has(HASH).any? {|k,v| k == :baz}
|
173
|
+
end
|
174
|
+
def test_failure_of_any?
|
175
|
+
assert failed(:any?)
|
176
|
+
end
|
177
|
+
|
178
|
+
Unit.test :all? do
|
179
|
+
expect(ARRAY).all? {|v| v.to_i > -1}
|
180
|
+
verify(HASH).all? {|k,v| v}
|
181
|
+
end
|
182
|
+
def test_all?
|
183
|
+
assert ARRAY.all? {|v| v.to_i > -1}
|
184
|
+
assert HASH.all? {|k,v| v}
|
185
|
+
assert passed(:all?)
|
186
|
+
end
|
187
|
+
Unit.test ':all? generates a failure' do
|
188
|
+
verify(HASH).all? {|k,v| v == :blah}
|
189
|
+
end
|
190
|
+
def test_failure_of_all?
|
191
|
+
assert failed(:all?)
|
192
|
+
end
|
193
|
+
|
194
|
+
|
195
|
+
Unit.test :start_with? do
|
196
|
+
does(STRING).start_with? 'a'
|
197
|
+
end
|
198
|
+
def test_start_with?
|
199
|
+
assert STRING.start_with?('a')
|
200
|
+
assert passed(:start_with?)
|
201
|
+
end
|
202
|
+
Unit.test ':start_with? generates a failure' do
|
203
|
+
does(STRING).start_with? 'blah'
|
204
|
+
end
|
205
|
+
def test_failure_of_start_with?
|
206
|
+
assert failed(:start_with?)
|
207
|
+
end
|
208
|
+
|
209
|
+
Unit.test :end_with? do
|
210
|
+
does(STRING).end_with? 'c'
|
211
|
+
end
|
212
|
+
def test_end_with?
|
213
|
+
assert STRING.end_with?('c')
|
214
|
+
assert passed(:end_with?)
|
215
|
+
end
|
216
|
+
Unit.test ':end_with? generates a failure' do
|
217
|
+
does(STRING).end_with? 'doh'
|
218
|
+
end
|
219
|
+
def test_failure_of_end_with?
|
220
|
+
assert failed(:end_with?)
|
221
|
+
end
|
222
|
+
|
223
|
+
Unit.test :valid_encoding? do
|
224
|
+
has(STRING).valid_encoding?
|
225
|
+
end
|
226
|
+
def test_valid_encoding?
|
227
|
+
assert STRING.valid_encoding?
|
228
|
+
assert passed(:valid_encoding?)
|
229
|
+
end
|
230
|
+
Unit.test ':valid_encoding? generates a failure' do
|
231
|
+
refute(STRING).valid_encoding?
|
232
|
+
end
|
233
|
+
def test_failure_of_valid_encoding?
|
234
|
+
assert failed(:valid_encoding?)
|
235
|
+
end
|
236
|
+
|
237
|
+
Unit.test :ascii_only? do
|
238
|
+
is(STRING).ascii_only?
|
239
|
+
end
|
240
|
+
def test_ascii_only?
|
241
|
+
assert STRING.ascii_only?
|
242
|
+
assert passed(:ascii_only?)
|
243
|
+
end
|
244
|
+
Unit.test ':ascii_only? generates a failure' do
|
245
|
+
is('ё').ascii_only?
|
246
|
+
end
|
247
|
+
def test_failure_of_ascii_only?
|
248
|
+
assert failed(:ascii_only?)
|
249
|
+
end
|
250
|
+
|
251
|
+
Unit.test :> do
|
252
|
+
is(FLOAT) > 0
|
253
|
+
is('b') > 'a'
|
254
|
+
end
|
255
|
+
def test_bt
|
256
|
+
assert(FLOAT > 0)
|
257
|
+
assert('b' > 'a')
|
258
|
+
assert passed(:>)
|
259
|
+
end
|
260
|
+
Unit.test ':> generates a failure' do
|
261
|
+
is('a') > 'b'
|
262
|
+
end
|
263
|
+
def test_failure_of_bt
|
264
|
+
assert failed(:>)
|
265
|
+
end
|
266
|
+
|
267
|
+
Unit.test :>= do
|
268
|
+
is(INTEGER) >= FLOAT
|
269
|
+
is(STRING) >= 'ab'
|
270
|
+
end
|
271
|
+
def test_bte
|
272
|
+
assert(INTEGER >= FLOAT)
|
273
|
+
assert(STRING >= 'ab')
|
274
|
+
assert passed(:>=)
|
275
|
+
end
|
276
|
+
Unit.test ':>= generates a failure' do
|
277
|
+
is(STRING) >= 'xyz'
|
278
|
+
end
|
279
|
+
def test_failure_of_bte
|
280
|
+
assert failed(:>=)
|
281
|
+
end
|
282
|
+
|
283
|
+
Unit.test :< do
|
284
|
+
is(0) < INTEGER
|
285
|
+
is('a') < 'b'
|
286
|
+
end
|
287
|
+
def test_lt
|
288
|
+
assert(0 < INTEGER)
|
289
|
+
assert('a' < 'b')
|
290
|
+
assert passed(:<)
|
291
|
+
end
|
292
|
+
Unit.test ':< generates a failure' do
|
293
|
+
is('b') < 'a'
|
294
|
+
end
|
295
|
+
def test_failure_of_lt
|
296
|
+
assert failed(:<)
|
297
|
+
end
|
298
|
+
|
299
|
+
Unit.test :<= do
|
300
|
+
is(FLOAT) <= INTEGER
|
301
|
+
is(STRING) <= 'abcd'
|
302
|
+
end
|
303
|
+
def test_lte
|
304
|
+
assert(FLOAT <= INTEGER)
|
305
|
+
assert(STRING <= 'abcd')
|
306
|
+
assert passed(:<=)
|
307
|
+
end
|
308
|
+
Unit.test ':<= generates a failure' do
|
309
|
+
is(STRING) <= '0'
|
310
|
+
end
|
311
|
+
def test_failure_of_lte
|
312
|
+
assert failed(:<=)
|
313
|
+
end
|
314
|
+
|
315
|
+
Unit.test :between? do
|
316
|
+
is(FLOAT).between? FLOAT, INTEGER
|
317
|
+
is('b').between? 'a', 'c'
|
318
|
+
end
|
319
|
+
def test_between?
|
320
|
+
assert(FLOAT.between? FLOAT, INTEGER)
|
321
|
+
assert('b'.between? 'a', 'c')
|
322
|
+
assert passed(:between?)
|
323
|
+
end
|
324
|
+
Unit.test ':between? generates a failure' do
|
325
|
+
is('b').between? 'x', 'y'
|
326
|
+
end
|
327
|
+
def test_failure_of_between?
|
328
|
+
assert failed(:between?)
|
329
|
+
end
|
330
|
+
|
331
|
+
Unit.test :nil? do
|
332
|
+
is(NIL).nil?
|
333
|
+
refute(STRING).nil?
|
334
|
+
end
|
335
|
+
def test_nil?
|
336
|
+
assert(NIL.nil?)
|
337
|
+
refute STRING.nil?
|
338
|
+
assert passed(:nil?)
|
339
|
+
end
|
340
|
+
Unit.test ':nil? generates a failure' do
|
341
|
+
is(STRING).nil?
|
342
|
+
end
|
343
|
+
def test_failure_of_nil?
|
344
|
+
assert failed(:nil?)
|
345
|
+
end
|
346
|
+
|
347
|
+
Unit.test :!~ do
|
348
|
+
prove(STRING) !~ /z/
|
349
|
+
end
|
350
|
+
def test_not_match
|
351
|
+
assert(STRING !~ /z/)
|
352
|
+
assert passed(:!~)
|
353
|
+
end
|
354
|
+
Unit.test ':!~ generates a failure' do
|
355
|
+
prove(STRING) !~ /a/
|
356
|
+
end
|
357
|
+
def test_failure_of_not_match
|
358
|
+
assert failed(:!~)
|
359
|
+
end
|
360
|
+
|
361
|
+
Unit.test :tainted? do
|
362
|
+
is(TAINTED_STRING).tainted?
|
363
|
+
refute(STRING).tainted?
|
364
|
+
end
|
365
|
+
def test_tainted?
|
366
|
+
assert TAINTED_STRING.tainted?
|
367
|
+
refute STRING.tainted?
|
368
|
+
assert passed(:tainted?)
|
369
|
+
end
|
370
|
+
Unit.test ':tainted? generates a failure' do
|
371
|
+
is(STRING).tainted?
|
372
|
+
end
|
373
|
+
def test_failure_of_tainted?
|
374
|
+
assert failed(:tainted?)
|
375
|
+
end
|
376
|
+
|
377
|
+
Unit.test :untrusted? do
|
378
|
+
is(UNTRUSTED_STRING).untrusted?
|
379
|
+
refute(STRING).untrusted?
|
380
|
+
end
|
381
|
+
def test_untrusted?
|
382
|
+
assert UNTRUSTED_STRING.untrusted?
|
383
|
+
refute STRING.untrusted?
|
384
|
+
assert passed(:untrusted?)
|
385
|
+
end
|
386
|
+
Unit.test ':untrusted? generates a failure' do
|
387
|
+
is(STRING).untrusted?
|
388
|
+
end
|
389
|
+
def test_failure_of_untrusted?
|
390
|
+
assert failed(:untrusted?)
|
391
|
+
end
|
392
|
+
|
393
|
+
Unit.test :frozen? do
|
394
|
+
refute(STRING).frozen?
|
395
|
+
is('smth'.freeze).frozen?
|
396
|
+
negate(ARRAY).frozen?
|
397
|
+
is(INTEGER).frozen?
|
398
|
+
end
|
399
|
+
def test_frozen?
|
400
|
+
refute STRING.frozen?
|
401
|
+
assert 'smth'.freeze.frozen?
|
402
|
+
refute ARRAY.frozen?
|
403
|
+
assert INTEGER.frozen?
|
404
|
+
assert passed(:frozen?)
|
405
|
+
end
|
406
|
+
Unit.test ':frozen? generates a failure' do
|
407
|
+
is(STRING).frozen?
|
408
|
+
end
|
409
|
+
def test_failure_of_frozen?
|
410
|
+
assert failed(:frozen?)
|
411
|
+
end
|
412
|
+
|
413
|
+
Unit.test :instance_of? do
|
414
|
+
check(STRING).instance_of? String
|
415
|
+
negate(ARRAY).instance_of? Enumerable
|
416
|
+
end
|
417
|
+
def test_instance_of?
|
418
|
+
assert STRING.instance_of?(String)
|
419
|
+
refute ARRAY.instance_of?(Enumerable)
|
420
|
+
assert passed(:instance_of?)
|
421
|
+
end
|
422
|
+
Unit.test ':instance_of? generates a failure' do
|
423
|
+
check(STRING).instance_of? Array
|
424
|
+
end
|
425
|
+
def test_failure_of_instance_of?
|
426
|
+
assert failed(:instance_of?)
|
427
|
+
end
|
428
|
+
|
429
|
+
Unit.test :kind_of? do
|
430
|
+
is(STRING).kind_of? String
|
431
|
+
is(ARRAY).kind_of? Enumerable
|
432
|
+
end
|
433
|
+
def test_kind_of?
|
434
|
+
assert STRING.kind_of?(String)
|
435
|
+
assert ARRAY.kind_of?(Enumerable)
|
436
|
+
assert passed(:kind_of?)
|
437
|
+
end
|
438
|
+
Unit.test ':kind_of? generates a failure' do
|
439
|
+
is(STRING).kind_of? Hash
|
440
|
+
end
|
441
|
+
def test_failure_of_kind_of?
|
442
|
+
assert failed(:kind_of?)
|
443
|
+
end
|
444
|
+
|
445
|
+
Unit.test :is_a? do
|
446
|
+
check(STRING).is_a? String
|
447
|
+
assert(HASH).is_a? Hash
|
448
|
+
end
|
449
|
+
def test_is_a?
|
450
|
+
assert STRING.is_a?(String)
|
451
|
+
assert HASH.is_a?(Hash)
|
452
|
+
assert passed(:is_a?)
|
453
|
+
end
|
454
|
+
Unit.test ':is_a? generates a failure' do
|
455
|
+
check(STRING).is_a? Symbol
|
456
|
+
end
|
457
|
+
def test_failure_of_is_a?
|
458
|
+
assert failed(:is_a?)
|
459
|
+
end
|
460
|
+
|
461
|
+
Unit.test :respond_to? do
|
462
|
+
does(STRING).respond_to? :ascii_only?
|
463
|
+
does(ARRAY).respond_to? :any?
|
464
|
+
does(HASH).respond_to? :any?
|
465
|
+
end
|
466
|
+
def test_respond_to?
|
467
|
+
assert STRING.respond_to?(:ascii_only?)
|
468
|
+
assert(ARRAY).respond_to?(:any?)
|
469
|
+
assert(HASH).respond_to?(:any?)
|
470
|
+
assert passed(:respond_to?)
|
471
|
+
end
|
472
|
+
Unit.test ':respond_to? generates a failure' do
|
473
|
+
does(STRING).respond_to? :blah
|
474
|
+
end
|
475
|
+
def test_failure_of_respond_to?
|
476
|
+
assert failed(:respond_to?)
|
477
|
+
end
|
478
|
+
|
479
|
+
Unit.test :!= do
|
480
|
+
check(STRING) != 'blah'
|
481
|
+
negate(ARRAY) != ARRAY
|
482
|
+
end
|
483
|
+
def test_not_equal
|
484
|
+
assert(STRING != 'blah')
|
485
|
+
refute(ARRAY != ARRAY)
|
486
|
+
assert passed(:!=)
|
487
|
+
end
|
488
|
+
Unit.test ':!= generates a failure' do
|
489
|
+
check(STRING) != STRING
|
490
|
+
end
|
491
|
+
def test_failure_of_not_equal
|
492
|
+
assert failed(:!=)
|
493
|
+
end
|
494
|
+
|
495
|
+
def passed test
|
496
|
+
self.class::Status[test] == 0
|
497
|
+
end
|
498
|
+
def failed test
|
499
|
+
self.class::Status[':%s generates a failure' % test] == 1
|
500
|
+
end
|
501
|
+
end
|
502
|
+
include Mixin
|
503
|
+
|
504
|
+
result = msrun(Unit)
|
505
|
+
Status = result.status
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
509
|
+
# running same tests but this time with proxified objects
|
510
|
+
require File.expand_path('../proxified_asserts', __FILE__)
|