assay 0.3.0 → 0.4.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.
Files changed (97) hide show
  1. data/.ruby +46 -41
  2. data/COPYING.rdoc +38 -0
  3. data/HISTORY.rdoc +18 -1
  4. data/QED.rdoc +1100 -0
  5. data/README.rdoc +139 -16
  6. data/lib/assay.rb +82 -29
  7. data/lib/assay.yml +46 -41
  8. data/lib/assay/{adapters → adapter}/minitest.rb +0 -0
  9. data/lib/assay/{adapters → adapter}/testunit.rb +0 -0
  10. data/lib/assay/assertable.rb +174 -0
  11. data/lib/assay/assertion.rb +98 -124
  12. data/lib/assay/assertor.rb +187 -0
  13. data/lib/assay/boolean_assay.rb +15 -0
  14. data/lib/assay/case_assay.rb +17 -0
  15. data/lib/assay/compare_assay.rb +38 -0
  16. data/lib/assay/core_ext/kernel.rb +52 -0
  17. data/lib/assay/core_ext/na.rb +9 -0
  18. data/lib/assay/directory_assay.rb +20 -0
  19. data/lib/assay/empty_assay.rb +17 -0
  20. data/lib/assay/equal_assay.rb +35 -0
  21. data/lib/assay/equality_assay.rb +18 -0
  22. data/lib/assay/execution_assay.rb +59 -0
  23. data/lib/assay/false_assay.rb +17 -0
  24. data/lib/assay/file_assay.rb +17 -0
  25. data/lib/assay/identity_assay.rb +49 -0
  26. data/lib/assay/include_assay.rb +17 -0
  27. data/lib/assay/instance_assay.rb +17 -0
  28. data/lib/assay/kind_assay.rb +18 -0
  29. data/lib/assay/less_assay.rb +18 -0
  30. data/lib/assay/less_equal_assay.rb +25 -0
  31. data/lib/assay/like_assay.rb +17 -0
  32. data/lib/assay/match_assay.rb +17 -0
  33. data/lib/assay/more_assay.rb +18 -0
  34. data/lib/assay/more_equal_assay.rb +25 -0
  35. data/lib/assay/nil_assay.rb +15 -0
  36. data/lib/assay/nomatch_assay.rb +17 -0
  37. data/lib/assay/output_assay.rb +35 -0
  38. data/lib/assay/path_assay.rb +17 -0
  39. data/lib/assay/raise_assay.rb +109 -0
  40. data/lib/assay/rescue_assay.rb +55 -0
  41. data/lib/assay/respond_assay.rb +17 -0
  42. data/lib/assay/return_assay.rb +46 -0
  43. data/lib/assay/silent_assay.rb +59 -0
  44. data/lib/assay/stderr_assay.rb +30 -0
  45. data/lib/assay/stdout_assay.rb +30 -0
  46. data/lib/assay/throw_assay.rb +89 -0
  47. data/lib/assay/true_assay.rb +20 -0
  48. data/lib/assay/unequal_assay.rb +37 -0
  49. data/lib/assay/within_assay.rb +39 -0
  50. data/test/case_compare_assay.rb +59 -0
  51. data/test/case_empty_assay.rb +51 -0
  52. data/test/case_equal_assay.rb +53 -0
  53. data/test/case_equality_assay.rb +55 -0
  54. data/test/case_false_assay.rb +48 -0
  55. data/test/case_identity_assay.rb +51 -0
  56. data/test/case_include_assay.rb +51 -0
  57. data/test/case_instance_assay.rb +51 -0
  58. data/test/case_kind_assay.rb +51 -0
  59. data/test/case_less_assay.rb +53 -0
  60. data/test/case_less_equal_assay.rb +53 -0
  61. data/test/case_like_assay.rb +57 -0
  62. data/test/case_match_assay.rb +45 -0
  63. data/test/case_more_assay.rb +53 -0
  64. data/test/case_more_equal_assay.rb +53 -0
  65. data/test/case_nil_assay.rb +48 -0
  66. data/test/case_nomatch_assay.rb +47 -0
  67. data/test/case_raise_assay.rb +51 -0
  68. data/test/case_respond_assay.rb +51 -0
  69. data/test/case_throw_assay.rb +51 -0
  70. data/test/case_true_assay.rb +48 -0
  71. data/test/case_unequal_assay.rb +55 -0
  72. data/test/case_within_assay.rb +61 -0
  73. data/test/helper.rb +36 -0
  74. metadata +135 -108
  75. data/APACHE2.txt +0 -205
  76. data/NOTICE.rdoc +0 -18
  77. data/lib/assay/assertions/compare_failure.rb +0 -61
  78. data/lib/assay/assertions/delta_failure.rb +0 -80
  79. data/lib/assay/assertions/empty_failure.rb +0 -76
  80. data/lib/assay/assertions/equality_failure.rb +0 -100
  81. data/lib/assay/assertions/execution_failure.rb +0 -90
  82. data/lib/assay/assertions/false_failure.rb +0 -72
  83. data/lib/assay/assertions/identity_failure.rb +0 -85
  84. data/lib/assay/assertions/instance_failure.rb +0 -76
  85. data/lib/assay/assertions/kind_failure.rb +0 -80
  86. data/lib/assay/assertions/match_failure.rb +0 -85
  87. data/lib/assay/assertions/nil_failure.rb +0 -75
  88. data/lib/assay/assertions/raise_failure.rb +0 -134
  89. data/lib/assay/assertions/response_failure.rb +0 -86
  90. data/lib/assay/assertions/same_failure.rb +0 -82
  91. data/lib/assay/assertions/throw_failure.rb +0 -122
  92. data/lib/assay/assertions/true_failure.rb +0 -79
  93. data/lib/assay/matcher.rb +0 -48
  94. data/qed/01_failure_classes.rdoc +0 -75
  95. data/qed/02_assertives.rdoc +0 -118
  96. data/qed/03_matchers.rdoc +0 -118
  97. data/qed/04_lookup.rdoc +0 -10
@@ -1,18 +0,0 @@
1
- = COPYRIGHT NOTICES
2
-
3
- == Assay
4
-
5
- Copyright 2009 Thomas Sawyer
6
-
7
- Licensed under the Apache License, Version 2.0 (the "License");
8
- you may not use this file except in compliance with the License.
9
- You may obtain a copy of the License at
10
-
11
- http://www.apache.org/licenses/LICENSE-2.0
12
-
13
- Unless required by applicable law or agreed to in writing, software
14
- distributed under the License is distributed on an "AS IS" BASIS,
15
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- See the License for the specific language governing permissions and
17
- limitations under the License.
18
-
@@ -1,61 +0,0 @@
1
- require 'assay/assertion'
2
-
3
- module Assay
4
-
5
- class CompareFailure < Assertion
6
-
7
- def self.assertion_name
8
- :like
9
- end
10
-
11
- # Test assertion.
12
- def self.pass?(exp, act)
13
- exp.equal?(act) ||
14
- exp.eq?(act) ||
15
- exp.==(act) ||
16
- exp.===(act)
17
- end
18
-
19
- #
20
- def to_s
21
- return @mesg if @mesg
22
- return super unless @arguments.size == 2
23
-
24
- iexp = @arguments[0].inspect
25
- iact = @arguments[1].inspect
26
-
27
- if @_negated
28
- "Expected #{iact} to NOT be like #{iexp}"
29
- else
30
- "Expected #{iact} to be like #{iexp}"
31
- end
32
- end
33
-
34
- end
35
-
36
-
37
- module Assertives
38
-
39
- end
40
-
41
-
42
- module Matchers
43
- #
44
- #
45
- # object1.should be_like(object2)
46
- #
47
- def be_like(act)
48
- CompareFailure.to_matcher(act)
49
- end
50
-
51
- #
52
- #
53
- # object1.should be_like(object2)
54
- #
55
- def is_like(act)
56
- CompareFailure.to_matcher(act)
57
- end
58
- end
59
-
60
- end
61
-
@@ -1,80 +0,0 @@
1
- require 'assay/assertions/compare_failure'
2
-
3
- module Assay
4
-
5
- # TODO: Support Range
6
- class DeltaFailure < CompareFailure
7
-
8
- #
9
- def self.assertion_name
10
- :in_delta
11
- end
12
-
13
- # Check assertion.
14
- def self.pass?(exp, act, delta)
15
- case delta
16
- when Numeric
17
- (exp.to_f - act.to_f).abs <= delta.to_f
18
- else
19
- exp - act <= delta
20
- end
21
- end
22
-
23
- #
24
- def to_s
25
- return @mesg if @mesg
26
- return super unless @arguments.size == 3
27
-
28
- exp = @arguments[0].inspect
29
- act = @arguments[1].inspect
30
- delta = @arguments[2].inspect
31
-
32
- if @_negated
33
- "Expected #{exp} to NOT be within #{delta} of #{act}"
34
- else
35
- "Expected #{exp} to be within #{delta} of #{act}"
36
- end
37
- end
38
-
39
- end
40
-
41
-
42
- module Assertives
43
- # Passes if expected and actual are equal within delta tolerance.
44
- #
45
- # assert_in_delta 0.05, (50000.0 / 10**6), 0.00001
46
- #
47
- def assert_in_delta(exp, act, delta, msg=nil)
48
- DeltaFailure.assert(exp, act, delta, :message=>msg, :backtrace=>caller)
49
- end
50
-
51
- # Passes if expected and actual are equal not within delta tolerance.
52
- #
53
- # assert_not_in_delta 0.05, (50000.0 / 10**6), 0.00001
54
- #
55
- def self.not_in_delta(exp, act, delta, msg=nil)
56
- opts[:backtrace] ||= caller
57
- DeltaFailure.refute(exp, act, delta, :message=>msg, :backtrace=>caller)
58
- end
59
- end
60
-
61
-
62
- module Matchers
63
- #
64
- #
65
- # value1.should be_within(delta, value2)
66
- #
67
- def is_within(delta, act)
68
- DeltaFailure.to_matcher(act, delta)
69
- end
70
-
71
- #
72
- #
73
- # value1.assert is_within(delta, value2)
74
- #
75
- def be_within(delta, act)
76
- DeltaFailure.to_matcher(act, delta)
77
- end
78
- end
79
-
80
- end
@@ -1,76 +0,0 @@
1
- require 'assay/assertion'
2
-
3
- module Assay
4
-
5
- class EmptyFailure < Assertion
6
-
7
- def self.assertion_name
8
- :empty
9
- end
10
-
11
- def self.assertion_operator
12
- :empty?
13
- end
14
-
15
- # Check assertion.
16
- def self.pass?(exp)
17
- exp.empty?
18
- end
19
-
20
- #
21
- def to_s
22
- return @mesg if @mesg
23
- return super unless @arguments.size == 1
24
-
25
- exp = @arguments.first.inspect
26
-
27
- if @_negated
28
- "Expected #{exp} to NOT be empty"
29
- else
30
- "Expected #{exp} to be empty"
31
- end
32
- end
33
-
34
- end
35
-
36
-
37
- module Assertives
38
- # Passed if object is +true+.
39
- #
40
- def assert_empty(exp, msg=nil)
41
- EmptyFailure.assert(exp, :message=>msg, :backtrace=>caller)
42
- end
43
-
44
- # Passed if object is not +true+.
45
- #
46
- # assert_not_true(false)
47
- #
48
- def refute_empty(exp, msg=nil)
49
- opts[:backtrace] ||= caller
50
- EmptyFailure.refute(exp, :message=>msg, :backtrace=>caller)
51
- end
52
-
53
- alias_method :assert_not_empty, :refute_empty
54
- end
55
-
56
-
57
- module Matchers
58
- # Empty?
59
- #
60
- # object.assert is_true
61
- #
62
- def is_empty
63
- EmptyFailure.to_matcher
64
- end
65
-
66
- # Empty?
67
- #
68
- # object.should be_empty
69
- #
70
- def be_empty
71
- EmptyFailure.to_matcher
72
- end
73
- end
74
-
75
- end
76
-
@@ -1,100 +0,0 @@
1
- require 'assay/assertions/compare_failure'
2
-
3
- module Assay
4
-
5
- #
6
- class EqualityFailure < CompareFailure
7
-
8
- #
9
- def self.assertion_name
10
- :equal
11
- end
12
-
13
- #
14
- def self.assertion_operator
15
- :==
16
- end
17
-
18
- # Check assertion.
19
- def self.pass?(exp, act)
20
- exp == act
21
- end
22
-
23
- # Check negated assertion.
24
- def self.fail?(exp, act)
25
- exp != act
26
- end
27
-
28
- #
29
- def to_s
30
- return @mesg if @mesg
31
- return super unless @arguments.size == 2
32
-
33
- oper = @_negated ? "!=" : "=="
34
- iexp = @arguments[0].inspect
35
- iact = @arguments[1].inspect
36
-
37
- if iexp.size > SIZE_LIMIT or iact.size > SIZE_LIMIT
38
- diff = ANSI::Diff.new(iact, iexp)
39
- "a #{oper} b\na) #{diff.diff1}\nb) #{diff.diff2}"
40
- else
41
- "#{iact} #{oper} #{iexp}"
42
- end
43
- end
44
-
45
- end
46
-
47
-
48
- module Assertives
49
- # Passes if expected == +actual.
50
- #
51
- # Note that the ordering of arguments is important,
52
- # since a helpful error message is generated when this
53
- # one fails that tells you the values of expected and actual.
54
- #
55
- # assert_equal 'MY STRING', 'my string'.upcase
56
- #
57
- def assert_equal(exp, act, msg=nil)
58
- EqualityFailure.assert(exp, act, :message=>msg, :backtrace=>caller)
59
- end
60
-
61
- # Passes if expected != actual
62
- #
63
- # assert_not_equal 'some string', 5
64
- #
65
- def assert_not_equal(exp, act, msg=nil)
66
- EqualityFailure.refute(exp, act, :message=>msg, :backtrace=>caller)
67
- end
68
- end
69
-
70
-
71
- module Matchers
72
- # Passes if +expected+ == +actual+.
73
- #
74
- # 'MY STRING'.assert is_equal_to('my string'.upcase)
75
- # 'MY STRING'.refute is_equal_to('another string')
76
- #
77
- def is_equal_to(exp, opts={})
78
- EqualityFailure.to_matcher(exp)
79
- end
80
-
81
- # Passes if +expected+ == +actual+.
82
- #
83
- # 'MY STRING'.should be_equal_to('my string'.upcase)
84
- # 'MY STRING'.should_not be_equal_to('another string')
85
- #
86
- def be_equal_to(exp)
87
- EqualityFailure.to_matcher(exp)
88
- end
89
-
90
- ## # Passes if expected != actual
91
- ## #
92
- ## # 'some string'.should not_be_equal_to('foo')
93
- ## #
94
- ## def not_be_equal_to(exp, act, opts)
95
- ## opts[:backtrace] ||= caller
96
- ## EqualityFailure.to_matcher!(exp, opts)
97
- ## end
98
- end
99
-
100
- end
@@ -1,90 +0,0 @@
1
- require 'assay/assertion'
2
-
3
- module Assay
4
-
5
- # Assert that a block of coded executes without error.
6
- #
7
- # ExecutionFailure is also the base class of the other
8
- # block-executing assertion classes.
9
- class ExecutionFailure < Assertion
10
- #
11
- def self.assertion_name
12
- :execution
13
- end
14
-
15
- # Check assertion.
16
- def self.pass?(_=nil, &block)
17
- begin
18
- block.call
19
- true
20
- rescue Exception
21
- false
22
- end
23
- end
24
-
25
- # Check negated assertion.
26
- def self.fail?(_=nil, &block)
27
- begin
28
- block.call
29
- false
30
- rescue Exception
31
- true
32
- end
33
- end
34
-
35
- #
36
- def to_s
37
- return @mesg if @mesg
38
- if @_negated
39
- "Expected procedure to raise an exception"
40
- else
41
- "Expected procedure to execute successfully"
42
- end
43
- end
44
-
45
- end
46
-
47
-
48
- module Assertives
49
- # Passes if the block yields successfully.
50
- #
51
- # assert_executes "Couldn't do the thing" do
52
- # do_the_thing
53
- # end
54
- #
55
- def assert_executes(msg=nil, &blk)
56
- ExecutionFailure.assert(:message=>msg, :backtrace=>caller, &blk)
57
- end
58
-
59
- # Passes if the block does not yield successfully.
60
- #
61
- # assert_not_executes "Couldn't do the thing" do
62
- # do_the_thing
63
- # end
64
- #
65
- def assert_not_executes(msg=nil, &blk)
66
- ExecutionFailure.refute(:message=>msg, :backtrace=>caller, &blk)
67
- end
68
- end
69
-
70
-
71
- module Matchers
72
- # TODO: Reasonable matcher for ExectuionFailure ?
73
- #
74
- #
75
- # proc.assert is_executed(*args)
76
- #
77
- def is_executed(&block)
78
- ExecutionFailure.to_matcher(&block)
79
- end
80
-
81
- #
82
- #
83
- # proc.should be_executed(*args)
84
- #
85
- def be_extecuted(&block)
86
- ExecutionFailure.to_matcher(&block)
87
- end
88
- end
89
-
90
- end
@@ -1,72 +0,0 @@
1
- require 'assay/assertions/compare_failure'
2
-
3
- module Assay
4
-
5
- class FalseFailure < CompareFailure
6
-
7
- def self.assertion_name
8
- :false
9
- end
10
-
11
- def self.assertion_operator
12
- :false?
13
- end
14
-
15
- # Check assertion.
16
- def self.pass?(exp)
17
- FalseClass === exp
18
- end
19
-
20
- #
21
- def to_s
22
- return @mesg if @mesg
23
- return super unless @arguments.size == 1
24
-
25
- exp = @arguments[0].inspect
26
-
27
- if @_negated
28
- "Expected #{exp} to NOT be false"
29
- else
30
- "Expected #{exp} to be false"
31
- end
32
- end
33
-
34
- end
35
-
36
-
37
- module Assertives
38
- # Passed if object is +false+.
39
- #
40
- def assert_false(exp, msg=nil)
41
- FalseFailure.assert(exp, :message=>msg, :backtrace=>caller)
42
- end
43
-
44
- # Passed if object is not +false+.
45
- #
46
- # assert_not_false(false)
47
- #
48
- def assert_not_false(exp, msg=nil)
49
- FalseFailure.refute(exp, :message=>msg, :backtrace=>caller)
50
- end
51
- end
52
-
53
-
54
- module Matchers
55
- #
56
- #
57
- # value.assert is_false
58
- #
59
- def is_false
60
- FalseFailure.to_matcher
61
- end
62
-
63
- #
64
- #
65
- # value.should be_false
66
- #
67
- def be_false
68
- FalseFailure.to_matcher
69
- end
70
- end
71
-
72
- end