rspec 0.8.2 → 0.9.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 (245) hide show
  1. data/CHANGES +125 -9
  2. data/EXAMPLES.rd +50 -27
  3. data/README +14 -1
  4. data/Rakefile +95 -42
  5. data/UPGRADE +31 -0
  6. data/bin/spec +0 -1
  7. data/bin/spec_translator +6 -0
  8. data/examples/auto_spec_description_example.rb +19 -0
  9. data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
  10. data/examples/behave_as_example.rb +45 -0
  11. data/examples/custom_expectation_matchers.rb +13 -12
  12. data/examples/dynamic_spec.rb +2 -2
  13. data/examples/file_accessor_spec.rb +2 -2
  14. data/examples/greeter_spec.rb +3 -3
  15. data/examples/helper_method_example.rb +2 -2
  16. data/examples/io_processor_spec.rb +4 -4
  17. data/examples/legacy_spec.rb +10 -0
  18. data/examples/mocking_example.rb +5 -5
  19. data/examples/multi_threaded_behaviour_runner.rb +25 -0
  20. data/examples/partial_mock_example.rb +4 -4
  21. data/examples/predicate_example.rb +4 -4
  22. data/examples/priority.txt +1 -0
  23. data/examples/shared_behaviours_example.rb +31 -0
  24. data/examples/stack_spec.rb +52 -69
  25. data/examples/stubbing_example.rb +10 -10
  26. data/examples/test_case_adapter_example.rb +26 -0
  27. data/examples/test_case_spec.rb +6 -6
  28. data/lib/spec.rb +9 -4
  29. data/lib/spec/dsl.rb +10 -0
  30. data/lib/spec/dsl/behaviour.rb +189 -0
  31. data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
  32. data/lib/spec/dsl/behaviour_eval.rb +170 -0
  33. data/lib/spec/dsl/behaviour_factory.rb +32 -0
  34. data/lib/spec/dsl/composite_proc_builder.rb +28 -0
  35. data/lib/spec/dsl/configuration.rb +38 -0
  36. data/lib/spec/dsl/description.rb +34 -0
  37. data/lib/spec/dsl/example.rb +114 -0
  38. data/lib/spec/dsl/example_matcher.rb +28 -0
  39. data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
  40. data/lib/spec/expectations.rb +0 -3
  41. data/lib/spec/expectations/differs/default.rb +0 -1
  42. data/lib/spec/expectations/extensions.rb +0 -1
  43. data/lib/spec/expectations/extensions/object.rb +10 -53
  44. data/lib/spec/expectations/handler.rb +14 -18
  45. data/lib/spec/extensions.rb +1 -0
  46. data/lib/spec/extensions/object.rb +6 -0
  47. data/lib/spec/matchers.rb +19 -21
  48. data/lib/spec/matchers/be.rb +40 -11
  49. data/lib/spec/matchers/be_close.rb +2 -2
  50. data/lib/spec/matchers/operator_matcher.rb +52 -0
  51. data/lib/spec/matchers/respond_to.rb +21 -11
  52. data/lib/spec/mocks.rb +5 -28
  53. data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
  54. data/lib/spec/mocks/argument_expectation.rb +7 -4
  55. data/lib/spec/mocks/methods.rb +11 -16
  56. data/lib/spec/mocks/mock.rb +6 -3
  57. data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
  58. data/lib/spec/mocks/space.rb +28 -0
  59. data/lib/spec/mocks/spec_methods.rb +30 -0
  60. data/lib/spec/rake/spectask.rb +23 -21
  61. data/lib/spec/rake/verify_rcov.rb +1 -0
  62. data/lib/spec/runner.rb +88 -35
  63. data/lib/spec/runner/backtrace_tweaker.rb +2 -1
  64. data/lib/spec/runner/behaviour_runner.rb +102 -0
  65. data/lib/spec/runner/command_line.rb +5 -17
  66. data/lib/spec/runner/drb_command_line.rb +2 -2
  67. data/lib/spec/runner/extensions/kernel.rb +22 -9
  68. data/lib/spec/runner/formatter.rb +4 -0
  69. data/lib/spec/runner/formatter/base_formatter.rb +63 -0
  70. data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
  71. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
  72. data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
  73. data/lib/spec/runner/formatter/html_formatter.rb +74 -29
  74. data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
  75. data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
  76. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  77. data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
  78. data/lib/spec/runner/heckle_runner.rb +8 -7
  79. data/lib/spec/runner/option_parser.rb +136 -55
  80. data/lib/spec/runner/options.rb +26 -0
  81. data/lib/spec/runner/reporter.rb +38 -31
  82. data/lib/spec/runner/spec_parser.rb +22 -13
  83. data/lib/spec/test_case_adapter.rb +10 -0
  84. data/lib/spec/translator.rb +103 -86
  85. data/lib/spec/version.rb +7 -15
  86. data/plugins/mock_frameworks/flexmock.rb +27 -0
  87. data/plugins/mock_frameworks/mocha.rb +21 -0
  88. data/plugins/mock_frameworks/rspec.rb +18 -0
  89. data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
  90. data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
  91. data/spec/spec/dsl/behaviour_spec.rb +508 -0
  92. data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
  93. data/spec/spec/dsl/configuration_spec.rb +43 -0
  94. data/spec/spec/dsl/description_spec.rb +51 -0
  95. data/spec/spec/dsl/example_class_spec.rb +24 -0
  96. data/spec/spec/dsl/example_instance_spec.rb +140 -0
  97. data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
  98. data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
  99. data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
  100. data/spec/spec/expectations/differs/default_spec.rb +12 -12
  101. data/spec/spec/expectations/extensions/object_spec.rb +10 -10
  102. data/spec/spec/expectations/fail_with_spec.rb +20 -20
  103. data/spec/spec/matchers/be_close_spec.rb +37 -31
  104. data/spec/spec/matchers/be_spec.rb +50 -41
  105. data/spec/spec/matchers/change_spec.rb +54 -54
  106. data/spec/spec/matchers/description_generation_spec.rb +43 -31
  107. data/spec/spec/matchers/eql_spec.rb +24 -37
  108. data/spec/spec/matchers/equal_spec.rb +24 -37
  109. data/spec/spec/matchers/exist_spec.rb +48 -0
  110. data/spec/spec/matchers/handler_spec.rb +36 -23
  111. data/spec/spec/matchers/has_spec.rb +8 -8
  112. data/spec/spec/matchers/have_spec.rb +38 -38
  113. data/spec/spec/matchers/include_spec.rb +6 -6
  114. data/spec/spec/matchers/match_spec.rb +8 -8
  115. data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
  116. data/spec/spec/matchers/raise_error_spec.rb +34 -34
  117. data/spec/spec/matchers/respond_to_spec.rb +32 -8
  118. data/spec/spec/matchers/satisfy_spec.rb +6 -6
  119. data/spec/spec/matchers/should_===_spec.rb +38 -0
  120. data/spec/spec/matchers/should_==_spec.rb +37 -0
  121. data/spec/spec/matchers/should_=~_spec.rb +36 -0
  122. data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
  123. data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
  124. data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
  125. data/spec/spec/mocks/at_least_spec.rb +30 -30
  126. data/spec/spec/mocks/at_most_spec.rb +53 -57
  127. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  128. data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
  129. data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
  130. data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
  131. data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
  132. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
  133. data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
  134. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  135. data/spec/spec/mocks/mock_spec.rb +111 -141
  136. data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
  137. data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
  138. data/spec/spec/mocks/once_counts_spec.rb +32 -35
  139. data/spec/spec/mocks/options_hash_spec.rb +12 -10
  140. data/spec/spec/mocks/partial_mock_spec.rb +15 -15
  141. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
  142. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
  143. data/spec/spec/mocks/precise_counts_spec.rb +28 -32
  144. data/spec/spec/mocks/record_messages_spec.rb +10 -10
  145. data/spec/spec/mocks/stub_spec.rb +45 -45
  146. data/spec/spec/mocks/twice_counts_spec.rb +21 -21
  147. data/spec/spec/package/bin_spec_spec.rb +12 -0
  148. data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
  149. data/spec/spec/runner/command_line_spec.rb +8 -8
  150. data/spec/spec/runner/context_matching_spec.rb +14 -15
  151. data/spec/spec/runner/drb_command_line_spec.rb +12 -12
  152. data/spec/spec/runner/execution_context_spec.rb +8 -29
  153. data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
  154. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
  155. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
  156. data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
  157. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
  158. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
  159. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
  160. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
  161. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
  162. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
  163. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
  164. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
  165. data/spec/spec/runner/heckle_runner_spec.rb +21 -21
  166. data/spec/spec/runner/heckler_spec.rb +5 -5
  167. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
  168. data/spec/spec/runner/object_ext_spec.rb +3 -3
  169. data/spec/spec/runner/option_parser_spec.rb +171 -102
  170. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
  171. data/spec/spec/runner/reporter_spec.rb +106 -97
  172. data/spec/spec/runner/spec_matcher_spec.rb +46 -51
  173. data/spec/spec/runner/spec_parser_spec.rb +72 -16
  174. data/spec/spec/spec_classes.rb +12 -3
  175. data/spec/spec/translator_spec.rb +165 -36
  176. metadata +66 -76
  177. data/RELEASE-PLAN +0 -117
  178. data/examples/auto_spec_name_generation_example.rb +0 -18
  179. data/lib/spec/callback.rb +0 -11
  180. data/lib/spec/callback/callback_container.rb +0 -60
  181. data/lib/spec/callback/extensions/module.rb +0 -24
  182. data/lib/spec/callback/extensions/object.rb +0 -37
  183. data/lib/spec/deprecated.rb +0 -3
  184. data/lib/spec/expectations/extensions/proc.rb +0 -57
  185. data/lib/spec/expectations/should.rb +0 -5
  186. data/lib/spec/expectations/should/base.rb +0 -64
  187. data/lib/spec/expectations/should/change.rb +0 -69
  188. data/lib/spec/expectations/should/have.rb +0 -128
  189. data/lib/spec/expectations/should/not.rb +0 -74
  190. data/lib/spec/expectations/should/should.rb +0 -81
  191. data/lib/spec/expectations/sugar.rb +0 -47
  192. data/lib/spec/runner/context.rb +0 -154
  193. data/lib/spec/runner/context_eval.rb +0 -142
  194. data/lib/spec/runner/context_runner.rb +0 -55
  195. data/lib/spec/runner/execution_context.rb +0 -17
  196. data/lib/spec/runner/spec_matcher.rb +0 -25
  197. data/lib/spec/runner/specification.rb +0 -114
  198. data/spec/spec/callback/callback_container_spec.rb +0 -27
  199. data/spec/spec/callback/module_spec.rb +0 -37
  200. data/spec/spec/callback/object_spec.rb +0 -90
  201. data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
  202. data/spec/spec/expectations/should/should_==_spec.rb +0 -19
  203. data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
  204. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
  205. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
  206. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
  207. data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
  208. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
  209. data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
  210. data/spec/spec/expectations/should/should_be_spec.rb +0 -11
  211. data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
  212. data/spec/spec/expectations/should/should_change_spec.rb +0 -184
  213. data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
  214. data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
  215. data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
  216. data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
  217. data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
  218. data/spec/spec/expectations/should/should_have_spec.rb +0 -64
  219. data/spec/spec/expectations/should/should_include_spec.rb +0 -59
  220. data/spec/spec/expectations/should/should_match_spec.rb +0 -25
  221. data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
  222. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
  223. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
  224. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
  225. data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
  226. data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
  227. data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
  228. data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
  229. data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
  230. data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
  231. data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
  232. data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
  233. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
  234. data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
  235. data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
  236. data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
  237. data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
  238. data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
  239. data/spec/spec/runner/context_runner_spec.rb +0 -100
  240. data/spec/spec/runner/context_spec.rb +0 -405
  241. data/spec/spec/runner/kernel_ext_spec.rb +0 -16
  242. data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
  243. data/spec/spec/runner/specification_class_spec.rb +0 -72
  244. data/spec/spec/runner/specification_instance_spec.rb +0 -160
  245. data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
@@ -1,134 +1,146 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "Matchers should be able to generate a description" do
4
- setup do
3
+ describe "Matchers should be able to generate their own descriptions" do
4
+ before(:each) do
5
5
  @desc = nil
6
6
  @callback = lambda { |desc| @desc = desc }
7
7
  Spec::Matchers.description_generated(&@callback)
8
8
  end
9
9
 
10
- specify "should == expected" do
10
+ it "should == expected" do
11
11
  "this".should == "this"
12
12
  @desc.should == "should == \"this\""
13
13
  end
14
14
 
15
- specify "should_not == expected" do
15
+ it "should not == expected" do
16
16
  "this".should_not == "that"
17
17
  @desc.should == "should not == \"that\""
18
18
  end
19
19
 
20
- specify "should be empty (arbitrary predicate)" do
20
+ it "should be empty (arbitrary predicate)" do
21
21
  [].should be_empty
22
22
  @desc.should == "should be empty"
23
23
  end
24
24
 
25
- specify "should not be empty (arbitrary predicate)" do
25
+ it "should not be empty (arbitrary predicate)" do
26
26
  [1].should_not be_empty
27
27
  @desc.should == "should not be empty"
28
28
  end
29
29
 
30
- specify "should be true" do
30
+ it "should be true" do
31
31
  true.should be_true
32
32
  @desc.should == "should be true"
33
33
  end
34
34
 
35
- specify "should be false" do
35
+ it "should be false" do
36
36
  false.should be_false
37
37
  @desc.should == "should be false"
38
38
  end
39
39
 
40
- specify "should be nil" do
40
+ it "should be nil" do
41
41
  nil.should be_nil
42
42
  @desc.should == "should be nil"
43
43
  end
44
44
 
45
- specify "should be > n" do
45
+ it "should be > n" do
46
46
  5.should be > 3
47
47
  @desc.should == "should be > 3"
48
48
  end
49
49
 
50
- specify "should be close" do
51
- 5.0.should be_close(5.0, 0.5)
52
- @desc.should == "should be close to 5.0 (+- 0.5)"
50
+ it "should be predicate arg1, arg2 and arg3" do
51
+ 5.0.should be_between(0,10)
52
+ @desc.should == "should be between 0 and 10"
53
+ end
54
+
55
+ it "should be_few_words predicate should be transformed to 'be few words'" do
56
+ 5.should be_kind_of(Fixnum)
57
+ @desc.should == "should be kind of Fixnum"
58
+ end
59
+
60
+ it "should preserve a proper prefix for be predicate" do
61
+ 5.should be_a_kind_of(Fixnum)
62
+ @desc.should == "should be a kind of Fixnum"
63
+ 5.should be_an_instance_of(Fixnum)
64
+ @desc.should == "should be an instance of Fixnum"
53
65
  end
54
66
 
55
- specify "should equal" do
67
+ it "should equal" do
56
68
  expected = "expected"
57
69
  expected.should equal(expected)
58
70
  @desc.should == "should equal \"expected\""
59
71
  end
60
72
 
61
- specify "should_not equal" do
73
+ it "should_not equal" do
62
74
  5.should_not equal(37)
63
75
  @desc.should == "should not equal 37"
64
76
  end
65
77
 
66
- specify "should eql" do
78
+ it "should eql" do
67
79
  "string".should eql("string")
68
80
  @desc.should == "should eql \"string\""
69
81
  end
70
82
 
71
- specify "should not eql" do
83
+ it "should not eql" do
72
84
  "a".should_not eql(:a)
73
85
  @desc.should == "should not eql :a"
74
86
  end
75
87
 
76
- specify "should have_key" do
88
+ it "should have_key" do
77
89
  {:a => "a"}.should have_key(:a)
78
90
  @desc.should == "should have key :a"
79
91
  end
80
92
 
81
- specify "should have n items" do
93
+ it "should have n items" do
82
94
  team.should have(3).players
83
95
  @desc.should == "should have 3 players"
84
96
  end
85
97
 
86
- specify "should have at least n items" do
98
+ it "should have at least n items" do
87
99
  team.should have_at_least(2).players
88
100
  @desc.should == "should have at least 2 players"
89
101
  end
90
102
 
91
- specify "should have at most n items" do
103
+ it "should have at most n items" do
92
104
  team.should have_at_most(4).players
93
105
  @desc.should == "should have at most 4 players"
94
106
  end
95
107
 
96
- specify "should include" do
108
+ it "should include" do
97
109
  [1,2,3].should include(3)
98
110
  @desc.should == "should include 3"
99
111
  end
100
112
 
101
- specify "should match" do
113
+ it "should match" do
102
114
  "this string".should match(/this string/)
103
115
  @desc.should == "should match /this string/"
104
116
  end
105
117
 
106
- specify "should raise_error" do
118
+ it "should raise_error" do
107
119
  lambda { raise }.should raise_error
108
120
  @desc.should == "should raise Exception"
109
121
  end
110
122
 
111
- specify "should raise_error with type" do
123
+ it "should raise_error with type" do
112
124
  lambda { raise }.should raise_error(RuntimeError)
113
125
  @desc.should == "should raise RuntimeError"
114
126
  end
115
127
 
116
- specify "should raise_error with type and message" do
128
+ it "should raise_error with type and message" do
117
129
  lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
118
130
  @desc.should == "should raise RuntimeError with \"there was an error\""
119
131
  end
120
132
 
121
- specify "should respond_to" do
133
+ it "should respond_to" do
122
134
  [].should respond_to(:insert)
123
135
  @desc.should == "should respond to #insert"
124
136
  end
125
137
 
126
- specify "should throw symbol" do
138
+ it "should throw symbol" do
127
139
  lambda { throw :what_a_mess }.should throw_symbol
128
140
  @desc.should == "should throw a Symbol"
129
141
  end
130
142
 
131
- specify "should throw symbol (with named symbol)" do
143
+ it "should throw symbol (with named symbol)" do
132
144
  lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
133
145
  @desc.should == "should throw :what_a_mess"
134
146
  end
@@ -141,7 +153,7 @@ context "Matchers should be able to generate a description" do
141
153
  end.new
142
154
  end
143
155
 
144
- teardown do
145
- Spec::Matchers.unregister_callback(:description_generated, @callback)
156
+ after(:each) do
157
+ Spec::Matchers.unregister_description_generated(@callback)
146
158
  end
147
159
  end
@@ -1,41 +1,28 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "should eql(expected)" do
4
-
5
- specify "should pass if target.eql?(expected)" do
6
- 1.should eql(1)
3
+ module Spec
4
+ module Matchers
5
+ describe Eql do
6
+ it "should match when actual.eql?(expected)" do
7
+ Eql.new(1).matches?(1).should be_true
8
+ end
9
+ it "should not match when !actual.eql?(expected)" do
10
+ Eql.new(1).matches?(2).should be_false
11
+ end
12
+ it "should describe itself" do
13
+ matcher = Eql.new(1)
14
+ matcher.description.should == "eql 1"
15
+ end
16
+ it "should provide message, expected and actual on #failure_message" do
17
+ matcher = Eql.new("1")
18
+ matcher.matches?(1)
19
+ matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
20
+ end
21
+ it "should provide message, expected and actual on #negative_failure_message" do
22
+ matcher = Eql.new(1)
23
+ matcher.matches?(1)
24
+ matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
25
+ end
26
+ end
7
27
  end
8
-
9
- specify "should fail unless target.eql?(expected)" do
10
- lambda {
11
- 1.should eql("1")
12
- }.should fail
13
- end
14
-
15
- specify "should provide message, expected and actual on failure" do
16
- matcher = eql("1")
17
- matcher.matches?(1)
18
- matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
19
- end
20
-
21
- end
22
-
23
- context "should_not eql(expected)" do
24
-
25
- specify "should pass unless target.eql?(expected)" do
26
- 1.should_not eql("1")
27
- end
28
-
29
- specify "should fail if target.eql?(expected)" do
30
- lambda {
31
- 1.should_not eql(1)
32
- }.should fail
33
- end
34
-
35
- specify "should provide message, expected and actual on failure" do
36
- matcher = eql(1)
37
- matcher.matches?(1)
38
- matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
39
- end
40
-
41
28
  end
@@ -1,41 +1,28 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "should equal(expected)" do
4
-
5
- specify "should pass if target.equal?(expected)" do
6
- 1.should equal(1)
3
+ module Spec
4
+ module Matchers
5
+ describe Equal do
6
+ it "should match when actual.equal?(expected)" do
7
+ Equal.new(1).matches?(1).should be_true
8
+ end
9
+ it "should not match when !actual.equal?(expected)" do
10
+ Equal.new("1").matches?("1").should be_false
11
+ end
12
+ it "should describe itself" do
13
+ matcher = Equal.new(1)
14
+ matcher.description.should == "equal 1"
15
+ end
16
+ it "should provide message, expected and actual on #failure_message" do
17
+ matcher = Equal.new("1")
18
+ matcher.matches?(1)
19
+ matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
20
+ end
21
+ it "should provide message, expected and actual on #negative_failure_message" do
22
+ matcher = Equal.new(1)
23
+ matcher.matches?(1)
24
+ matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
25
+ end
26
+ end
7
27
  end
8
-
9
- specify "should fail unless target.equal?(expected)" do
10
- lambda {
11
- "1".should equal("1")
12
- }.should fail
13
- end
14
-
15
- specify "should provide message, expected and actual on failure" do
16
- matcher = equal("1")
17
- matcher.matches?("1")
18
- matcher.failure_message.should == ["expected \"1\", got \"1\" (using .equal?)", "1", "1"]
19
- end
20
-
21
- end
22
-
23
- context "should_not equal(expected)" do
24
-
25
- specify "should pass unless target.equal?(expected)" do
26
- "1".should_not equal("1")
27
- end
28
-
29
- specify "should fail if target.equal?(expected)" do
30
- lambda {
31
- 1.should_not equal(1)
32
- }.should fail
33
- end
34
-
35
- specify "should provide message, expected and actual on failure" do
36
- matcher = equal(1)
37
- matcher.matches?(1)
38
- matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
39
- end
40
-
41
28
  end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ # NOTE - this was initially handled by an explicit matcher, but is now
4
+ # handled by a default set of predicate_matchers.
5
+
6
+ class Substance
7
+ def initialize exists, description
8
+ @exists = exists
9
+ @description = description
10
+ end
11
+ def exist?
12
+ @exists
13
+ end
14
+ def inspect
15
+ @description
16
+ end
17
+ end
18
+
19
+ describe "should exist" do
20
+ before(:each) do
21
+ @real = Substance.new true, 'something real'
22
+ @imaginary = Substance.new false, 'something imaginary'
23
+ end
24
+
25
+ it "should pass if target exists" do
26
+ @real.should exist
27
+ end
28
+
29
+ it "should fail if target does not exist" do
30
+ lambda { @imaginary.should exist }.
31
+ should fail
32
+ end
33
+ end
34
+
35
+ describe "should_not exist" do
36
+ before(:each) do
37
+ @real = Substance.new true, 'something real'
38
+ @imaginary = Substance.new false, 'something imaginary'
39
+ end
40
+ it "should pass if target doesn't exist" do
41
+ @imaginary.should_not exist
42
+ end
43
+ it "should fail if target does exist" do
44
+ lambda { @real.should_not exist }.
45
+ should fail
46
+ end
47
+ end
48
+
@@ -46,30 +46,43 @@ module ExampleExpectations
46
46
 
47
47
  end
48
48
 
49
- context "ExpectationMatcherHandler" do
50
- include ExampleExpectations
51
-
52
- specify "should handle submitted args" do
53
- 5.should arbitrary_matcher(:expected => 5)
54
- 5.should arbitrary_matcher(:expected => "wrong").with(5)
55
- lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
56
- lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
57
- 5.should_not arbitrary_matcher(:expected => 4)
58
- 5.should_not arbitrary_matcher(:expected => 5).with(4)
59
- lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
60
- lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
61
- end
49
+ module Spec
50
+ module Expectations
51
+ describe ExpectationMatcherHandler, ".handle_matcher" do
52
+ it "should ask the matcher if it matches" do
53
+ matcher = mock("matcher")
54
+ actual = Object.new
55
+ matcher.should_receive(:matches?).with(actual).and_return(true)
56
+ ExpectationMatcherHandler.handle_matcher(actual, matcher)
57
+ end
58
+ end
59
+
60
+ describe ExpectationMatcherHandler do
61
+ include ExampleExpectations
62
+
63
+ it "should handle submitted args" do
64
+ 5.should arbitrary_matcher(:expected => 5)
65
+ 5.should arbitrary_matcher(:expected => "wrong").with(5)
66
+ lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
67
+ lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
68
+ 5.should_not arbitrary_matcher(:expected => 4)
69
+ 5.should_not arbitrary_matcher(:expected => 5).with(4)
70
+ lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
71
+ lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
72
+ end
62
73
 
63
- specify "should handle the submitted block" do
64
- 5.should arbitrary_matcher { 5 }
65
- 5.should arbitrary_matcher(:expected => 4) { 5 }
66
- 5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
67
- end
74
+ it "should handle the submitted block" do
75
+ 5.should arbitrary_matcher { 5 }
76
+ 5.should arbitrary_matcher(:expected => 4) { 5 }
77
+ 5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
78
+ end
68
79
 
69
- specify "should explain when matcher does not support should_not" do
70
- lambda {
71
- 5.should_not positive_only_matcher(:expected => 5)
72
- }.should fail_with(/Matcher does not support should_not.\n/)
73
- end
80
+ it "should explain when matcher does not support should_not" do
81
+ lambda {
82
+ 5.should_not positive_only_matcher(:expected => 5)
83
+ }.should fail_with(/Matcher does not support should_not.\n/)
84
+ end
74
85
 
86
+ end
87
+ end
75
88
  end
@@ -1,35 +1,35 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
- context "should have_sym(*args)" do
4
- specify "should pass if #has_sym?(*args) returns true" do
3
+ describe "should have_sym(*args)" do
4
+ it "should pass if #has_sym?(*args) returns true" do
5
5
  {:a => "A"}.should have_key(:a)
6
6
  end
7
7
 
8
- specify "should fail if #has_sym?(*args) returns false" do
8
+ it "should fail if #has_sym?(*args) returns false" do
9
9
  lambda {
10
10
  {:b => "B"}.should have_key(:a)
11
11
  }.should fail_with("expected #has_key?(:a) to return true, got false")
12
12
  end
13
13
 
14
- specify "should fail if target does not respond to #has_sym?" do
14
+ it "should fail if target does not respond to #has_sym?" do
15
15
  lambda {
16
16
  Object.new.should have_key(:a)
17
17
  }.should raise_error(NoMethodError)
18
18
  end
19
19
  end
20
20
 
21
- context "should_not have_sym(*args)" do
22
- specify "should pass if #has_sym?(*args) returns false" do
21
+ describe "should_not have_sym(*args)" do
22
+ it "should pass if #has_sym?(*args) returns false" do
23
23
  {:a => "A"}.should_not have_key(:b)
24
24
  end
25
25
 
26
- specify "should fail if #has_sym?(*args) returns true" do
26
+ it "should fail if #has_sym?(*args) returns true" do
27
27
  lambda {
28
28
  {:a => "A"}.should_not have_key(:a)
29
29
  }.should fail_with("expected #has_key?(:a) to return false, got true")
30
30
  end
31
31
 
32
- specify "should fail if target does not respond to #has_sym?" do
32
+ it "should fail if target does not respond to #has_sym?" do
33
33
  lambda {
34
34
  Object.new.should have_key(:a)
35
35
  }.should raise_error(NoMethodError)