assay 0.2.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/.ruby +44 -0
- data/APACHE2.txt +205 -0
- data/HISTORY.rdoc +26 -0
- data/NOTICE.rdoc +18 -0
- data/README.rdoc +50 -0
- data/lib/assay.rb +44 -0
- data/lib/assay.yml +44 -0
- data/lib/assay/adapters/minitest.rb +25 -0
- data/lib/assay/adapters/testunit.rb +42 -0
- data/lib/assay/assertion.rb +148 -0
- data/lib/assay/assertions/compare_failure.rb +60 -0
- data/lib/assay/assertions/delta_failure.rb +80 -0
- data/lib/assay/assertions/empty_failure.rb +76 -0
- data/lib/assay/assertions/equality_failure.rb +105 -0
- data/lib/assay/assertions/execution_failure.rb +91 -0
- data/lib/assay/assertions/false_failure.rb +73 -0
- data/lib/assay/assertions/identity_failure.rb +86 -0
- data/lib/assay/assertions/instance_failure.rb +77 -0
- data/lib/assay/assertions/kind_failure.rb +80 -0
- data/lib/assay/assertions/match_failure.rb +86 -0
- data/lib/assay/assertions/nil_failure.rb +75 -0
- data/lib/assay/assertions/raise_failure.rb +133 -0
- data/lib/assay/assertions/response_failure.rb +87 -0
- data/lib/assay/assertions/same_failure.rb +83 -0
- data/lib/assay/assertions/throw_failure.rb +123 -0
- data/lib/assay/assertions/true_failure.rb +80 -0
- data/lib/assay/matcher.rb +48 -0
- data/qed/01_failure_classes.rdoc +75 -0
- data/qed/02_assertives.rdoc +118 -0
- data/qed/03_matchers.rdoc +118 -0
- data/qed/04_lookup.rdoc +10 -0
- metadata +143 -0
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'assay/assertions/compare_failure'
|
2
|
+
|
3
|
+
module Assay
|
4
|
+
|
5
|
+
# Comparison assertion for TrueClass.
|
6
|
+
#
|
7
|
+
# TrueFailure.pass?(true) #=> true
|
8
|
+
# TrueFailure.fail?(true) #=> false
|
9
|
+
# TrueFailure.pass?(1) #=> false
|
10
|
+
#
|
11
|
+
class TrueFailure < CompareFailure
|
12
|
+
|
13
|
+
def self.assertion_name
|
14
|
+
:true
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.assertion_operator
|
18
|
+
:true?
|
19
|
+
end
|
20
|
+
|
21
|
+
# Check assertion.
|
22
|
+
def self.pass?(exp)
|
23
|
+
TrueClass === exp
|
24
|
+
end
|
25
|
+
|
26
|
+
#
|
27
|
+
def to_s
|
28
|
+
return super unless @arguments.size == 1
|
29
|
+
|
30
|
+
exp = @arguments[0].inspect
|
31
|
+
|
32
|
+
if @_negated
|
33
|
+
"Expected #{exp} to NOT be true"
|
34
|
+
else
|
35
|
+
"Expected #{exp} to be true"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
module Assertives
|
43
|
+
# Passed if object is +true+.
|
44
|
+
#
|
45
|
+
def assert_true(exp, opts={})
|
46
|
+
opts[:backtrace] ||= caller
|
47
|
+
TrueFailure.assert(exp, opts)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Passed if object is not +true+.
|
51
|
+
#
|
52
|
+
# assert_not_true(false)
|
53
|
+
#
|
54
|
+
def assert_not_true(exp, opts={})
|
55
|
+
opts[:backtrace] ||= caller
|
56
|
+
TrueFailure.refute(exp, opts)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
module Matchers
|
62
|
+
# True?
|
63
|
+
#
|
64
|
+
# value.assert is_true
|
65
|
+
#
|
66
|
+
def is_true
|
67
|
+
TrueFailure.to_matcher
|
68
|
+
end
|
69
|
+
|
70
|
+
# True?
|
71
|
+
#
|
72
|
+
# value.should be_true
|
73
|
+
#
|
74
|
+
def be_true
|
75
|
+
TrueFailure.to_matcher
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
@@ -0,0 +1,48 @@
|
|
1
|
+
module Assay
|
2
|
+
|
3
|
+
#
|
4
|
+
class Matcher
|
5
|
+
def initialize(fail_class, *arguments, &block)
|
6
|
+
@fail_class = fail_class
|
7
|
+
@arguments = arguments
|
8
|
+
@block = block
|
9
|
+
end
|
10
|
+
|
11
|
+
#
|
12
|
+
def fail_class
|
13
|
+
@fail_class
|
14
|
+
end
|
15
|
+
|
16
|
+
#
|
17
|
+
def matches?(target)
|
18
|
+
@exception = nil
|
19
|
+
@target = target
|
20
|
+
|
21
|
+
@fail_class.pass?(target, *@arguments, &@block)
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns Exception class.
|
25
|
+
def exception(message=nil)
|
26
|
+
@exception ||= fail_class.new(message, @target, *@arguments, &@block)
|
27
|
+
# :negated => options[:negated],
|
28
|
+
# :backtrace => options[:backtrace] || caller,
|
29
|
+
end
|
30
|
+
|
31
|
+
# This is just for RSpec matcher compatability.
|
32
|
+
def fail_message
|
33
|
+
exception.to_s
|
34
|
+
end
|
35
|
+
|
36
|
+
# This is just for RSpec matcher compatability.
|
37
|
+
def negative_fail_message
|
38
|
+
#exception.set_negative(true)
|
39
|
+
exception.to_s
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
def fail(backtrace=nil)
|
44
|
+
super exception #(backtrace || caller)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
= Failure Classes
|
2
|
+
|
3
|
+
require 'assay'
|
4
|
+
|
5
|
+
== EqualityFailure
|
6
|
+
|
7
|
+
assert Assay::EqualityFailure.pass?(1,1)
|
8
|
+
refute Assay::EqualityFailure.pass?(1,2)
|
9
|
+
|
10
|
+
== TrueFailure
|
11
|
+
|
12
|
+
assert Assay::TrueFailure.pass?(true)
|
13
|
+
refute Assay::TrueFailure.pass?(false)
|
14
|
+
|
15
|
+
== FalseFailure
|
16
|
+
|
17
|
+
assert Assay::FalseFailure.pass?(false)
|
18
|
+
refute Assay::FalseFailure.pass?(true)
|
19
|
+
|
20
|
+
== NilFailure
|
21
|
+
|
22
|
+
assert Assay::NilFailure.pass?(nil)
|
23
|
+
refute Assay::NilFailure.pass?(true)
|
24
|
+
refute Assay::NilFailure.pass?(false)
|
25
|
+
|
26
|
+
== DeltaFailure
|
27
|
+
|
28
|
+
assert Assay::DeltaFailure.pass?(1, 1.5, 2)
|
29
|
+
refute Assay::DeltaFailure.pass?(1, 2.5, 1)
|
30
|
+
|
31
|
+
== MatchFailure
|
32
|
+
|
33
|
+
assert Assay::MatchFailure.pass?(/a/, "abc")
|
34
|
+
refute Assay::MatchFailure.pass?(/x/, "abc")
|
35
|
+
|
36
|
+
== SameFailure
|
37
|
+
|
38
|
+
assert Assay::SameFailure.pass?(1, 1)
|
39
|
+
refute Assay::SameFailure.pass?(1, 1.0)
|
40
|
+
|
41
|
+
== IdentityFailure
|
42
|
+
|
43
|
+
assert Assay::IdentityFailure.pass?(:a, :a)
|
44
|
+
refute Assay::IdentityFailure.pass?("a", "a")
|
45
|
+
|
46
|
+
== InstanceFailure
|
47
|
+
|
48
|
+
assert Assay::InstanceFailure.pass?(1, Fixnum)
|
49
|
+
refute Assay::InstanceFailure.pass?(1, String)
|
50
|
+
|
51
|
+
== KindFailure
|
52
|
+
|
53
|
+
assert Assay::KindFailure.pass?(1, Integer)
|
54
|
+
refute Assay::KindFailure.pass?(1, String)
|
55
|
+
|
56
|
+
== RaiseFailure
|
57
|
+
|
58
|
+
assert Assay::RaiseFailure.pass?(ArgumentError){ raise ArgumentError }
|
59
|
+
refute Assay::RaiseFailure.pass?(ArgumentError){ raise TypeError }
|
60
|
+
|
61
|
+
== ResponseFailure
|
62
|
+
|
63
|
+
assert Assay::ResponseFailure.pass?("string", :upcase)
|
64
|
+
refute Assay::ResponseFailure.pass?("string", :not_a_method)
|
65
|
+
|
66
|
+
== ExecutionFailure
|
67
|
+
|
68
|
+
assert Assay::ExecutionFailure.pass?(){ nil }
|
69
|
+
refute Assay::ExecutionFailure.pass?(){ raise }
|
70
|
+
|
71
|
+
== ThrowFailure
|
72
|
+
|
73
|
+
assert Assay::ThrowFailure.pass?(:foo){ throw :foo }
|
74
|
+
refute Assay::ThrowFailure.pass?(:foo){ throw :bar }
|
75
|
+
|
@@ -0,0 +1,118 @@
|
|
1
|
+
= Assertion Methods
|
2
|
+
|
3
|
+
require 'assay'
|
4
|
+
|
5
|
+
include Assay::Assertives
|
6
|
+
|
7
|
+
== EqualityFailure
|
8
|
+
|
9
|
+
assert_equal(1,1)
|
10
|
+
|
11
|
+
expect Assay::EqualityFailure do
|
12
|
+
assert_equal(1,2)
|
13
|
+
end
|
14
|
+
|
15
|
+
== TrueFailure
|
16
|
+
|
17
|
+
assert_true(true)
|
18
|
+
|
19
|
+
expect Assay::TrueFailure do
|
20
|
+
assert_true(false)
|
21
|
+
end
|
22
|
+
|
23
|
+
== FalseFailure
|
24
|
+
|
25
|
+
assert_false(false)
|
26
|
+
|
27
|
+
expect Assay::FalseFailure do
|
28
|
+
assert_false(true)
|
29
|
+
end
|
30
|
+
|
31
|
+
== NilFailure
|
32
|
+
|
33
|
+
assert_nil(nil)
|
34
|
+
|
35
|
+
expect Assay::NilFailure do
|
36
|
+
assert_nil(true)
|
37
|
+
end
|
38
|
+
|
39
|
+
== DeltaFailure
|
40
|
+
|
41
|
+
assert_in_delta(1, 1.5, 2)
|
42
|
+
|
43
|
+
expect Assay::DeltaFailure do
|
44
|
+
assert_in_delta(1, 2.5, 1)
|
45
|
+
end
|
46
|
+
|
47
|
+
== MatchFailure
|
48
|
+
|
49
|
+
assert_match(/a/, "abc")
|
50
|
+
|
51
|
+
expect Assay::MatchFailure do
|
52
|
+
assert_match(/x/, "abc")
|
53
|
+
end
|
54
|
+
|
55
|
+
== SameFailure
|
56
|
+
|
57
|
+
assert_same(1, 1)
|
58
|
+
|
59
|
+
expect Assay::SameFailure do
|
60
|
+
assert_same(1, 1.0)
|
61
|
+
end
|
62
|
+
|
63
|
+
== IdentityFailure
|
64
|
+
|
65
|
+
assert_identical(:a, :a)
|
66
|
+
|
67
|
+
expect Assay::IdentityFailure do
|
68
|
+
assert_identical("a", "a")
|
69
|
+
end
|
70
|
+
|
71
|
+
== InstanceFailure
|
72
|
+
|
73
|
+
assert_instance_of(1, Fixnum)
|
74
|
+
|
75
|
+
expect Assay::InstanceFailure do
|
76
|
+
assert_instance_of(1, String)
|
77
|
+
end
|
78
|
+
|
79
|
+
== KindFailure
|
80
|
+
|
81
|
+
assert_kind_of(1, Integer)
|
82
|
+
|
83
|
+
expect Assay::KindFailure do
|
84
|
+
assert_kind_of(1, String)
|
85
|
+
end
|
86
|
+
|
87
|
+
== RaiseFailure
|
88
|
+
|
89
|
+
assert_raises(ArgumentError){ raise ArgumentError }
|
90
|
+
|
91
|
+
expect Assay::RaiseFailure do
|
92
|
+
assert_raises(ArgumentError){ raise TypeError }
|
93
|
+
end
|
94
|
+
|
95
|
+
== ResponseFailure
|
96
|
+
|
97
|
+
assert_responds_to("string", :upcase)
|
98
|
+
|
99
|
+
expect Assay::ResponseFailure do
|
100
|
+
assert_responds_to("string", :not_a_method)
|
101
|
+
end
|
102
|
+
|
103
|
+
== Executionfailure
|
104
|
+
|
105
|
+
assert_executes{ :ok }
|
106
|
+
|
107
|
+
expect Assay::ExecutionFailure do
|
108
|
+
assert_executes{ raise }
|
109
|
+
end
|
110
|
+
|
111
|
+
== ThrowFailure
|
112
|
+
|
113
|
+
assert_throws(:foo){ throw :foo }
|
114
|
+
|
115
|
+
expect Assay::ThrowFailure do
|
116
|
+
assert_throws(:foo){ throw :bar }
|
117
|
+
end
|
118
|
+
|
@@ -0,0 +1,118 @@
|
|
1
|
+
= Matchers
|
2
|
+
|
3
|
+
require 'assay'
|
4
|
+
|
5
|
+
include Assay::Matchers
|
6
|
+
|
7
|
+
== EqualityFailure
|
8
|
+
|
9
|
+
1.assert is_equal_to(1)
|
10
|
+
|
11
|
+
expect Assay::EqualityFailure do
|
12
|
+
1.assert is_equal_to(2)
|
13
|
+
end
|
14
|
+
|
15
|
+
== TrueFailure
|
16
|
+
|
17
|
+
true.assert is_true
|
18
|
+
|
19
|
+
expect Assay::TrueFailure do
|
20
|
+
false.assert is_true
|
21
|
+
end
|
22
|
+
|
23
|
+
== FalseFailure
|
24
|
+
|
25
|
+
false.assert is_false
|
26
|
+
|
27
|
+
expect Assay::FalseFailure do
|
28
|
+
true.assert is_false
|
29
|
+
end
|
30
|
+
|
31
|
+
== NilFailure
|
32
|
+
|
33
|
+
nil.assert is_nil
|
34
|
+
|
35
|
+
expect Assay::NilFailure do
|
36
|
+
true.assert is_nil
|
37
|
+
end
|
38
|
+
|
39
|
+
== DeltaFailure
|
40
|
+
|
41
|
+
1.assert is_within(1.5, 2)
|
42
|
+
|
43
|
+
expect Assay::DeltaFailure do
|
44
|
+
1.assert is_within(0.5, 2)
|
45
|
+
end
|
46
|
+
|
47
|
+
== MatchFailure
|
48
|
+
|
49
|
+
"abc".assert is_match_for(/a/)
|
50
|
+
|
51
|
+
expect Assay::MatchFailure do
|
52
|
+
"abc".assert is_match_for(/x/)
|
53
|
+
end
|
54
|
+
|
55
|
+
== SameFailure
|
56
|
+
|
57
|
+
1.assert is_same_as(1)
|
58
|
+
|
59
|
+
expect Assay::SameFailure do
|
60
|
+
1.assert is_same_as(1.0)
|
61
|
+
end
|
62
|
+
|
63
|
+
== IdentityFailure
|
64
|
+
|
65
|
+
:a.assert is_identical_to(:a)
|
66
|
+
|
67
|
+
expect Assay::IdentityFailure do
|
68
|
+
"a".assert is_identical_to("a")
|
69
|
+
end
|
70
|
+
|
71
|
+
== InstanceFailure
|
72
|
+
|
73
|
+
1.assert is_instance_of(Fixnum)
|
74
|
+
|
75
|
+
expect Assay::InstanceFailure do
|
76
|
+
1.assert is_instance_of(String)
|
77
|
+
end
|
78
|
+
|
79
|
+
== KindFailure
|
80
|
+
|
81
|
+
1.assert is_kind_of(Integer)
|
82
|
+
|
83
|
+
expect Assay::KindFailure do
|
84
|
+
1.assert is_kind_of(String)
|
85
|
+
end
|
86
|
+
|
87
|
+
== RaiseFailure
|
88
|
+
|
89
|
+
ArgumentError.assert is_raised{ raise ArgumentError }
|
90
|
+
|
91
|
+
expect Assay::RaiseFailure do
|
92
|
+
ArgumentError.assert is_raised{ raise TypeError }
|
93
|
+
end
|
94
|
+
|
95
|
+
== ResponseFailure
|
96
|
+
|
97
|
+
"string".assert is_responsive_to(:upcase)
|
98
|
+
|
99
|
+
expect Assay::ResponseFailure do
|
100
|
+
"string".assert is_responsive_to(:not_a_method)
|
101
|
+
end
|
102
|
+
|
103
|
+
== ExecutionFailure
|
104
|
+
|
105
|
+
assert is_executed{ :foo }
|
106
|
+
|
107
|
+
expect Assay::ExecutionFailure do
|
108
|
+
assert is_executed{ raise }
|
109
|
+
end
|
110
|
+
|
111
|
+
== ThrowFailure
|
112
|
+
|
113
|
+
:foo.assert is_thrown{ throw :foo }
|
114
|
+
|
115
|
+
expect Assay::ThrowFailure do
|
116
|
+
:foo.assert is_thrown{ throw :bar }
|
117
|
+
end
|
118
|
+
|