rspec 0.7.5.1 → 0.8.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 (194) hide show
  1. data/CHANGES +60 -1
  2. data/EXAMPLES.rd +38 -19
  3. data/MIT-LICENSE +1 -1
  4. data/README +24 -17
  5. data/RELEASE-PLAN +117 -0
  6. data/Rakefile +24 -18
  7. data/TODO.0.8.0 +5 -0
  8. data/examples/auto_spec_name_generation_example.rb +18 -0
  9. data/examples/custom_expectation_matchers.rb +53 -0
  10. data/examples/dynamic_spec.rb +9 -0
  11. data/examples/io_processor_spec.rb +2 -2
  12. data/examples/mocking_example.rb +4 -4
  13. data/examples/partial_mock_example.rb +2 -2
  14. data/examples/predicate_example.rb +2 -2
  15. data/examples/stack_spec.rb +32 -36
  16. data/examples/stubbing_example.rb +19 -19
  17. data/examples/test_case_spec.rb +6 -6
  18. data/lib/spec.rb +3 -0
  19. data/lib/spec/callback.rb +8 -0
  20. data/lib/spec/callback/extensions/object.rb +4 -0
  21. data/lib/spec/deprecated.rb +3 -0
  22. data/lib/spec/expectations.rb +44 -17
  23. data/lib/spec/expectations/extensions.rb +1 -2
  24. data/lib/spec/expectations/extensions/object.rb +78 -130
  25. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  26. data/lib/spec/expectations/handler.rb +47 -0
  27. data/lib/spec/expectations/should/base.rb +32 -29
  28. data/lib/spec/expectations/should/change.rb +1 -1
  29. data/lib/spec/expectations/should/have.rb +9 -17
  30. data/lib/spec/expectations/should/not.rb +54 -56
  31. data/lib/spec/expectations/should/should.rb +59 -65
  32. data/lib/spec/expectations/sugar.rb +27 -4
  33. data/lib/spec/matchers.rb +160 -0
  34. data/lib/spec/matchers/be.rb +161 -0
  35. data/lib/spec/matchers/be_close.rb +37 -0
  36. data/lib/spec/matchers/change.rb +120 -0
  37. data/lib/spec/matchers/eql.rb +43 -0
  38. data/lib/spec/matchers/equal.rb +43 -0
  39. data/lib/spec/matchers/has.rb +44 -0
  40. data/lib/spec/matchers/have.rb +140 -0
  41. data/lib/spec/matchers/include.rb +50 -0
  42. data/lib/spec/matchers/match.rb +41 -0
  43. data/lib/spec/matchers/raise_error.rb +100 -0
  44. data/lib/spec/matchers/respond_to.rb +35 -0
  45. data/lib/spec/matchers/satisfy.rb +47 -0
  46. data/lib/spec/matchers/throw_symbol.rb +75 -0
  47. data/lib/spec/mocks.rb +224 -1
  48. data/lib/spec/mocks/argument_expectation.rb +16 -2
  49. data/lib/spec/mocks/error_generator.rb +5 -3
  50. data/lib/spec/mocks/errors.rb +2 -2
  51. data/lib/spec/mocks/extensions/object.rb +1 -1
  52. data/lib/spec/mocks/message_expectation.rb +29 -19
  53. data/lib/spec/mocks/{mock_methods.rb → methods.rb} +5 -5
  54. data/lib/spec/mocks/mock.rb +2 -2
  55. data/lib/spec/mocks/mock_handler.rb +81 -68
  56. data/lib/spec/rake/spectask.rb +7 -12
  57. data/lib/spec/rake/verify_rcov.rb +1 -1
  58. data/lib/spec/runner.rb +117 -0
  59. data/lib/spec/runner/command_line.rb +8 -5
  60. data/lib/spec/runner/context.rb +13 -37
  61. data/lib/spec/runner/context_eval.rb +4 -3
  62. data/lib/spec/runner/context_runner.rb +7 -4
  63. data/lib/spec/runner/drb_command_line.rb +1 -1
  64. data/lib/spec/runner/execution_context.rb +3 -11
  65. data/lib/spec/runner/extensions/kernel.rb +7 -5
  66. data/lib/spec/runner/extensions/object.rb +4 -1
  67. data/lib/spec/runner/formatter/base_text_formatter.rb +11 -3
  68. data/lib/spec/runner/formatter/html_formatter.rb +21 -10
  69. data/lib/spec/runner/heckle_runner.rb +24 -8
  70. data/lib/spec/runner/heckle_runner_win.rb +10 -0
  71. data/lib/spec/runner/option_parser.rb +58 -13
  72. data/lib/spec/runner/spec_matcher.rb +22 -29
  73. data/lib/spec/runner/spec_parser.rb +1 -0
  74. data/lib/spec/runner/specification.rb +36 -22
  75. data/lib/spec/translator.rb +87 -0
  76. data/lib/spec/version.rb +16 -7
  77. data/spec/spec/callback/callback_container_spec.rb +27 -0
  78. data/spec/spec/callback/module_spec.rb +37 -0
  79. data/spec/spec/callback/object_spec.rb +90 -0
  80. data/spec/spec/callback/object_with_class_callback_spec.rb +19 -0
  81. data/spec/spec/expectations/differs/default_spec.rb +107 -0
  82. data/spec/spec/expectations/extensions/object_spec.rb +46 -0
  83. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  84. data/spec/spec/expectations/should/should_==_spec.rb +19 -0
  85. data/spec/spec/expectations/should/should_=~_spec.rb +13 -0
  86. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +21 -0
  87. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +30 -0
  88. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +81 -0
  89. data/spec/spec/expectations/should/should_be_close_spec.rb +18 -0
  90. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +44 -0
  91. data/spec/spec/expectations/should/should_be_false_spec.rb +39 -0
  92. data/spec/spec/expectations/should/should_be_spec.rb +11 -0
  93. data/spec/spec/expectations/should/should_be_true_spec.rb +27 -0
  94. data/spec/spec/expectations/should/should_change_spec.rb +184 -0
  95. data/spec/spec/expectations/should/should_eql_spec.rb +11 -0
  96. data/spec/spec/expectations/should/should_equal_spec.rb +11 -0
  97. data/spec/spec/expectations/should/should_have_at_least_spec.rb +53 -0
  98. data/spec/spec/expectations/should/should_have_at_most_spec.rb +45 -0
  99. data/spec/spec/expectations/should/should_have_key_spec.rb +21 -0
  100. data/spec/spec/expectations/should/should_have_spec.rb +64 -0
  101. data/spec/spec/expectations/should/should_include_spec.rb +59 -0
  102. data/spec/spec/expectations/should/should_match_spec.rb +25 -0
  103. data/spec/spec/expectations/should/should_not_==_spec.rb +15 -0
  104. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +21 -0
  105. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +11 -0
  106. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +68 -0
  107. data/spec/spec/expectations/should/should_not_be_spec.rb +11 -0
  108. data/spec/spec/expectations/should/should_not_change_spec.rb +24 -0
  109. data/spec/spec/expectations/should/should_not_eql_spec.rb +11 -0
  110. data/spec/spec/expectations/should/should_not_equal_spec.rb +11 -0
  111. data/spec/spec/expectations/should/should_not_have_key_spec.rb +15 -0
  112. data/spec/spec/expectations/should/should_not_include_spec.rb +58 -0
  113. data/spec/spec/expectations/should/should_not_match_spec.rb +11 -0
  114. data/spec/spec/expectations/should/should_not_raise_spec.rb +75 -0
  115. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +15 -0
  116. data/spec/spec/expectations/should/should_not_throw_spec.rb +35 -0
  117. data/spec/spec/expectations/should/should_raise_spec.rb +66 -0
  118. data/spec/spec/expectations/should/should_respond_to_spec.rb +15 -0
  119. data/spec/spec/expectations/should/should_satisfy_spec.rb +35 -0
  120. data/spec/spec/expectations/should/should_throw_spec.rb +27 -0
  121. data/spec/spec/matchers/be_close_spec.rb +33 -0
  122. data/spec/spec/matchers/be_spec.rb +182 -0
  123. data/spec/spec/matchers/change_spec.rb +232 -0
  124. data/spec/spec/matchers/description_generation_spec.rb +147 -0
  125. data/spec/spec/matchers/eql_spec.rb +41 -0
  126. data/spec/spec/matchers/equal_spec.rb +41 -0
  127. data/spec/spec/matchers/handler_spec.rb +75 -0
  128. data/spec/spec/matchers/has_spec.rb +37 -0
  129. data/spec/spec/matchers/have_spec.rb +259 -0
  130. data/spec/spec/matchers/include_spec.rb +33 -0
  131. data/spec/spec/matchers/match_spec.rb +37 -0
  132. data/spec/spec/matchers/matcher_methods_spec.rb +85 -0
  133. data/spec/spec/matchers/raise_error_spec.rb +147 -0
  134. data/spec/spec/matchers/respond_to_spec.rb +30 -0
  135. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  136. data/spec/spec/matchers/throw_symbol_spec.rb +59 -0
  137. data/spec/spec/mocks/any_number_of_times_spec.rb +34 -0
  138. data/spec/spec/mocks/at_least_spec.rb +97 -0
  139. data/spec/spec/mocks/at_most_spec.rb +97 -0
  140. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  141. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  142. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  143. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  144. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +74 -0
  145. data/spec/spec/mocks/mock_ordering_spec.rb +80 -0
  146. data/spec/spec/mocks/mock_spec.rb +407 -0
  147. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  148. data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  149. data/spec/spec/mocks/once_counts_spec.rb +56 -0
  150. data/spec/spec/mocks/options_hash_spec.rb +31 -0
  151. data/spec/spec/mocks/partial_mock_spec.rb +52 -0
  152. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +64 -0
  153. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +92 -0
  154. data/spec/spec/mocks/precise_counts_spec.rb +56 -0
  155. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  156. data/spec/spec/mocks/stub_spec.rb +159 -0
  157. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  158. data/spec/spec/runner/command_line_spec.rb +32 -0
  159. data/spec/spec/runner/context_matching_spec.rb +28 -0
  160. data/spec/spec/runner/context_runner_spec.rb +100 -0
  161. data/spec/spec/runner/context_spec.rb +405 -0
  162. data/spec/spec/runner/drb_command_line_spec.rb +74 -0
  163. data/spec/spec/runner/execution_context_spec.rb +52 -0
  164. data/spec/spec/runner/formatter/html_formatter_spec.rb +40 -0
  165. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +21 -0
  166. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +36 -0
  167. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +78 -0
  168. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +18 -0
  169. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +41 -0
  170. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +21 -0
  171. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +46 -0
  172. data/spec/spec/runner/heckle_runner_spec.rb +63 -0
  173. data/spec/spec/runner/heckler_spec.rb +14 -0
  174. data/spec/spec/runner/kernel_ext_spec.rb +16 -0
  175. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  176. data/spec/spec/runner/object_ext_spec.rb +11 -0
  177. data/spec/spec/runner/option_parser_spec.rb +269 -0
  178. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +47 -0
  179. data/spec/spec/runner/reporter_spec.rb +126 -0
  180. data/spec/spec/runner/spec_matcher_spec.rb +107 -0
  181. data/spec/spec/runner/spec_name_generation_spec.rb +102 -0
  182. data/spec/spec/runner/spec_parser_spec.rb +37 -0
  183. data/spec/spec/runner/specification_class_spec.rb +72 -0
  184. data/spec/spec/runner/specification_instance_spec.rb +160 -0
  185. data/spec/spec/runner/specification_should_raise_spec.rb +136 -0
  186. data/spec/spec/spec_classes.rb +102 -0
  187. data/spec/spec/translator_spec.rb +79 -0
  188. data/spec/spec_helper.rb +35 -0
  189. metadata +141 -9
  190. data/bin/drbspec +0 -3
  191. data/lib/spec/expectations/diff.rb +0 -28
  192. data/lib/spec/expectations/extensions/numeric.rb +0 -19
  193. data/lib/spec/expectations/extensions/string.rb +0 -22
  194. data/lib/spec/expectations/message_builder.rb +0 -13
@@ -0,0 +1,19 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/../../spec_helper"
3
+
4
+ context "An Object with class callback" do
5
+ specify "should notify the class callback" do
6
+ klass = Class.new do
7
+ class << self
8
+ callback_events :the_callback
9
+ end
10
+ end
11
+
12
+ klass_callback_called = false
13
+ klass.the_callback {klass_callback_called = true}
14
+ obj = klass.new
15
+ obj.send(:notify_class_callbacks, :the_callback)
16
+
17
+ klass_callback_called.should == true
18
+ end
19
+ end
@@ -0,0 +1,107 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+ require File.dirname(__FILE__) + '/../../../../lib/spec/expectations/differs/default'
3
+
4
+ module Spec
5
+ module Fixtures
6
+ class Animal
7
+ def initialize(name,species)
8
+ @name,@species = name,species
9
+ end
10
+
11
+ def inspect
12
+ <<-EOA
13
+ <Animal
14
+ name=#{@name},
15
+ species=#{@species}
16
+ >
17
+ EOA
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ context "Diff" do
24
+ setup do
25
+ @differ = Spec::Expectations::Differs::Default.new
26
+ end
27
+
28
+ specify "should output unified diff of two strings" do
29
+ expected="foo\nbar\nzap\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nline\n"
30
+ actual="foo\nzap\nbar\nthis\nis\nsoo\nvery\nvery\nequal\ninsert\na\nanother\nline\n"
31
+ expected_diff="\n\n@@ -1,6 +1,6 @@\n foo\n-bar\n zap\n+bar\n this\n is\n soo\n@@ -9,5 +9,6 @@\n equal\n insert\n a\n+another\n line\n"
32
+ diff = @differ.diff_as_string(expected, actual)
33
+ diff.should_eql(expected_diff)
34
+ end
35
+
36
+ specify "should output unified diff message of two arrays" do
37
+ expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
38
+ actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
39
+
40
+ expected_diff = <<'EOD'
41
+
42
+
43
+ @@ -5,7 +5,7 @@
44
+ :metasyntactic,
45
+ "variable",
46
+ :delta,
47
+ - "charlie",
48
+ + "tango",
49
+ :width,
50
+ - "quite wide"]
51
+ + "very wide"]
52
+ EOD
53
+
54
+
55
+ diff = @differ.diff_as_object(expected,actual)
56
+ diff.should_eql expected_diff
57
+ end
58
+
59
+ specify "should output unified diff message of two objects" do
60
+ expected = Spec::Fixtures::Animal.new "bob", "giraffe"
61
+ actual = Spec::Fixtures::Animal.new "bob", "tortoise"
62
+
63
+ expected_diff = <<'EOD'
64
+
65
+ @@ -1,5 +1,5 @@
66
+ <Animal
67
+ name=bob,
68
+ - species=giraffe
69
+ + species=tortoise
70
+ >
71
+ EOD
72
+
73
+ diff = @differ.diff_as_object(expected,actual)
74
+ diff.should_eql expected_diff
75
+ end
76
+
77
+ end
78
+
79
+
80
+ context "Diff in context format" do
81
+ setup do
82
+ @differ = Spec::Expectations::Differs::Default.new(:context)
83
+ end
84
+
85
+ specify "should output unified diff message of two objects" do
86
+ expected = Spec::Fixtures::Animal.new "bob", "giraffe"
87
+ actual = Spec::Fixtures::Animal.new "bob", "tortoise"
88
+
89
+ expected_diff = <<'EOD'
90
+
91
+ ***************
92
+ *** 1,5 ****
93
+ <Animal
94
+ name=bob,
95
+ ! species=giraffe
96
+ >
97
+ --- 1,5 ----
98
+ <Animal
99
+ name=bob,
100
+ ! species=tortoise
101
+ >
102
+ EOD
103
+
104
+ diff = @differ.diff_as_object(expected,actual)
105
+ diff.should_eql expected_diff
106
+ end
107
+ end
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "Object#should" do
4
+ setup do
5
+ @target = "target"
6
+ @matcher = mock("matcher")
7
+ @matcher.stub!(:matches?).and_return(true)
8
+ @matcher.stub!(:failure_message)
9
+ end
10
+
11
+ specify "should accept and interact with a matcher" do
12
+ @matcher.should_receive(:matches?).with(@target).and_return(true)
13
+
14
+ @target.should @matcher
15
+ end
16
+
17
+ specify "should ask for a failure_message when matches? returns false" do
18
+ @matcher.should_receive(:matches?).with(@target).and_return(false)
19
+ @matcher.should_receive(:failure_message).and_return("the failure message")
20
+ lambda {
21
+ @target.should @matcher
22
+ }.should_fail_with "the failure message"
23
+ end
24
+ end
25
+
26
+ context "Object#should_not" do
27
+ setup do
28
+ @target = "target"
29
+ @matcher = mock("matcher")
30
+ end
31
+
32
+ specify "should accept and interact with a matcher" do
33
+ @matcher.should_receive(:matches?).with(@target).and_return(false)
34
+ @matcher.stub!(:negative_failure_message)
35
+
36
+ @target.should_not @matcher
37
+ end
38
+
39
+ specify "should ask for a negative_failure_message when matches? returns true" do
40
+ @matcher.should_receive(:matches?).with(@target).and_return(true)
41
+ @matcher.should_receive(:negative_failure_message).and_return("the negative failure message")
42
+ lambda {
43
+ @target.should_not @matcher
44
+ }.should_fail_with "the negative failure message"
45
+ end
46
+ end
@@ -0,0 +1,71 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ context "Spec::Expectations.fail_with with no diff" do
4
+ setup do
5
+ @old_differ = Spec::Expectations.differ
6
+ Spec::Expectations.differ = nil
7
+ end
8
+
9
+ specify "should handle just a message" do
10
+ lambda {
11
+ Spec::Expectations.fail_with "the message"
12
+ }.should_fail_with "the message"
13
+ end
14
+
15
+ specify "should handle an Array" do
16
+ lambda {
17
+ Spec::Expectations.fail_with ["the message","expected","actual"]
18
+ }.should_fail_with "the message"
19
+ end
20
+
21
+ teardown do
22
+ Spec::Expectations.differ = @old_differ
23
+ end
24
+ end
25
+
26
+ context "Spec::Expectations.fail_with with diff" do
27
+ setup do
28
+ @old_differ = Spec::Expectations.differ
29
+ @differ = mock("differ")
30
+ Spec::Expectations.differ = @differ
31
+ end
32
+
33
+ specify "should not call differ if no expected/actual" do
34
+ lambda {
35
+ Spec::Expectations.fail_with "the message"
36
+ }.should_fail_with "the message"
37
+ end
38
+
39
+ specify "should call differ if expected/actual are presented separately" do
40
+ @differ.should_receive(:diff_as_string).and_return("diff")
41
+ lambda {
42
+ Spec::Expectations.fail_with "the message", "expected", "actual"
43
+ }.should_fail_with "the message\nDiff:diff"
44
+ end
45
+
46
+ specify "should call differ if expected/actual are not strings" do
47
+ @differ.should_receive(:diff_as_object).and_return("diff")
48
+ lambda {
49
+ Spec::Expectations.fail_with "the message", :expected, :actual
50
+ }.should_fail_with "the message\nDiff:diff"
51
+ end
52
+
53
+ specify "should not call differ if expected or actual are procs" do
54
+ @differ.should_not_receive(:diff_as_string)
55
+ @differ.should_not_receive(:diff_as_object)
56
+ lambda {
57
+ Spec::Expectations.fail_with "the message", lambda {}, lambda {}
58
+ }.should_fail_with "the message"
59
+ end
60
+
61
+ specify "should call differ if expected/actual are presented in an Array with message" do
62
+ @differ.should_receive(:diff_as_string).with("actual","expected").and_return("diff")
63
+ lambda {
64
+ Spec::Expectations.fail_with(["the message", "expected", "actual"])
65
+ }.should_fail_with /the message\nDiff:diff/
66
+ end
67
+
68
+ teardown do
69
+ Spec::Expectations.differ = @old_differ
70
+ end
71
+ end
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ require 'spec/expectations/differs/default'
4
+
5
+ context "should ==" do
6
+
7
+ specify "should pass when objects are ==" do
8
+ lambda do
9
+ "apple".should == "apple"
10
+ end.should_pass
11
+ end
12
+
13
+ specify "should fail when objects are not ==" do
14
+ lambda do
15
+ "1".should == 1
16
+ end.should_fail_with "expected 1, got \"1\" (using ==)"
17
+ end
18
+
19
+ end
@@ -0,0 +1,13 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ context "should =~" do
4
+ specify "should pass when =~ operator returns non-nil" do
5
+ "foo".should =~ /oo/
6
+ end
7
+
8
+ specify "should fail when =~ operator returns nil" do
9
+ lambda do
10
+ "fu".should =~ /oo/
11
+ end.should_fail_with "expected =~ /oo/, got \"fu\""
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_be_a_kind_of" do
4
+ specify "should fail when target is not specified class" do
5
+ lambda do
6
+ 5.should_be_a_kind_of(String)
7
+ end.should_fail_with "expected kind_of?(String) to return true, got false"
8
+ end
9
+
10
+ specify "should pass when target is of specified class" do
11
+ lambda do
12
+ 5.should_be_a_kind_of(Fixnum)
13
+ end.should_pass
14
+ end
15
+
16
+ specify "should pass when target is of subclass of specified class" do
17
+ lambda do
18
+ 5.should_be_a_kind_of(Integer)
19
+ end.should_pass
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_be_an_instance_of" do
4
+ specify "should fail when target is not specified class (OLD STYLE)" do
5
+ lambda do
6
+ 5.should_be_an_instance_of(Integer)
7
+ end.should_fail_with "expected instance_of?(Integer) to return true, got false"
8
+ end
9
+
10
+ specify "should pass when target is specified class (OLD STYLE)" do
11
+ lambda do
12
+ 5.should_be_an_instance_of(Fixnum)
13
+ end.should_pass
14
+ end
15
+
16
+ begin
17
+ specify "should fail when target is not specified class" do
18
+ lambda do
19
+ 5.should be_instance_of(Integer)
20
+ end.should_fail_with "expected instance_of?(Integer) to return true, got false"
21
+ end
22
+
23
+ specify "should pass when target is specified class" do
24
+ lambda do
25
+ 5.should be_instance_of(Fixnum)
26
+ end.should_pass
27
+ end
28
+ end
29
+
30
+ end
@@ -0,0 +1,81 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Expectations
5
+ module Helper
6
+ context "should_be_<arbitrary predicate>" do
7
+ specify "should fail when method returns something other than true false or nil" do
8
+ mock=HandCodedMock.new(5)
9
+ lambda do
10
+ mock.should_be_funny
11
+ end.should_pass
12
+ mock.__verify
13
+ end
14
+
15
+ specify "should fail when predicate accepts args and returns false" do
16
+ mock=HandCodedMock.new(false)
17
+ lambda do
18
+ mock.should_be_hungry(1, 2, 3)
19
+ end.should_fail_with "expected hungry?(1, 2, 3) to return true, got false"
20
+ mock.__verify
21
+ end
22
+
23
+ specify "should fail when predicate returns false" do
24
+ mock=HandCodedMock.new(false)
25
+ lambda do
26
+ mock.should_be_funny
27
+ end.should_fail
28
+ end
29
+
30
+ specify "should fail when predicate returns nil" do
31
+ mock=HandCodedMock.new(nil)
32
+ lambda do
33
+ mock.should_be_funny
34
+ end.should_fail
35
+ mock.__verify
36
+ end
37
+
38
+ specify "should pass when predicate accepts args and returns true" do
39
+ mock=HandCodedMock.new(true)
40
+ lambda do
41
+ mock.should_be_hungry(1, 2, 3)
42
+ end.should_pass
43
+ mock.__verify
44
+ end
45
+
46
+ specify "should pass when predicate returns true" do
47
+ mock=HandCodedMock.new(true)
48
+ lambda do
49
+ mock.should_be_funny
50
+ end.should_pass
51
+ mock.__verify
52
+ end
53
+
54
+ specify "should raise when target does not respond to predicate" do
55
+ lambda do
56
+ 5.should_be_funny
57
+ end.should_raise(NameError)
58
+ end
59
+
60
+ specify "should support multi word predicates with should" do
61
+ lambda do
62
+ HandCodedMock.new(true).should_multi_word_predicate
63
+ end.should_pass
64
+ end
65
+
66
+ specify "should support multi word predicates with should be" do
67
+ lambda do
68
+ HandCodedMock.new(true).should_be_multi_word_predicate
69
+ end.should_pass
70
+ end
71
+
72
+ specify "should support present tense (i.e. t.should_exist evaluates t.exists?)" do
73
+ mock=HandCodedMock.new(true)
74
+ lambda do
75
+ mock.should_exist
76
+ end.should_pass
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ context "should_be_close" do
4
+ specify "should not raise when values are within bounds" do
5
+ 3.5.should_be_close(3.5, 0.5)
6
+ 3.5.should_be_close(3.1, 0.5)
7
+ 3.5.should_be_close(3.01, 0.5)
8
+ 3.5.should_be_close(3.9, 0.5)
9
+ 3.5.should_be_close(3.99, 0.5)
10
+ end
11
+
12
+ specify "should raise when values are outside bounds" do
13
+ lambda { 3.5.should_be_close(3.0, 0.5) }.should_fail_with "expected 3.0 +/- (<0.5), got 3.5"
14
+ lambda { 3.5.should_be_close(2.0, 0.5) }.should_fail
15
+ lambda { 3.5.should_be_close(3.0, 0.5) }.should_fail
16
+ lambda { 3.5.should_be_close(4.0, 0.5) }.should_fail
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+
3
+ context "should_be <" do
4
+ specify "should pass when < operator returns true" do
5
+ 3.should_be < 4
6
+ end
7
+
8
+ specify "should fail when < operator returns false" do
9
+ lambda { 3.should_be < 3 }.should_fail_with "expected < 3, got 3"
10
+ end
11
+ end
12
+
13
+ context "should_be <=" do
14
+ specify "should pass when <= operator returns true" do
15
+ 3.should_be <= 4
16
+ 4.should_be <= 4
17
+ end
18
+
19
+ specify "should fail when <= operator returns false" do
20
+ lambda { 3.should_be <= 2 }.should_fail
21
+ end
22
+ end
23
+
24
+ context "should_be >=" do
25
+ specify "should pass when >= operator returns true" do
26
+ 4.should_be >= 4
27
+ 5.should_be >= 4
28
+ end
29
+
30
+ specify "should fail when >= operator returns false" do
31
+ lambda { 3.should_be >= 4 }.should_fail
32
+ end
33
+ end
34
+
35
+ context "should_be >" do
36
+ specify "should pass when > operator returns true" do
37
+ 5.should_be > 4
38
+ end
39
+
40
+ specify "should fail when > operator returns false" do
41
+ lambda { 3.should_be > 4 }.should_fail
42
+ end
43
+ end
44
+