blob: 6c0ca95bc57f00155d4a3337eff46ec63075036b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
module Spec
module Matchers
class Satisfy #:nodoc:
def initialize(&block)
@block = block
end
def matches?(actual, &block)
@block = block if block
@actual = actual
@block.call(actual)
end
def failure_message
"expected #{@actual} to satisfy block"
end
def negative_failure_message
"expected #{@actual} not to satisfy block"
end
end
# :call-seq:
# should satisfy {}
# should_not satisfy {}
#
# Passes if the submitted block returns true. Yields target to the
# block.
#
# Generally speaking, this should be thought of as a last resort when
# you can't find any other way to specify the behaviour you wish to
# specify.
#
# If you do find yourself in such a situation, you could always write
# a custom matcher, which would likely make your specs more expressive.
#
# == Examples
#
# 5.should satisfy { |n|
# n > 3
# }
def satisfy(&block)
Matchers::Satisfy.new(&block)
end
end
end
|