mspec 1.5.17 → 1.5.18

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 (174) hide show
  1. data/.gitignore +27 -0
  2. data/Gemfile +4 -0
  3. data/README +39 -159
  4. data/Rakefile +4 -44
  5. data/bin/mkspec.bat +1 -0
  6. data/bin/mspec-ci.bat +1 -0
  7. data/bin/mspec-run.bat +1 -0
  8. data/bin/mspec-tag.bat +1 -0
  9. data/bin/mspec.bat +1 -0
  10. data/lib/mspec/commands/mkspec.rb +2 -2
  11. data/lib/mspec/commands/mspec-run.rb +4 -0
  12. data/lib/mspec/commands/mspec.rb +18 -3
  13. data/lib/mspec/guards.rb +1 -0
  14. data/lib/mspec/guards/block_device.rb +22 -0
  15. data/lib/mspec/guards/guard.rb +14 -2
  16. data/lib/mspec/helpers.rb +5 -5
  17. data/lib/mspec/helpers/const_lookup.rb +6 -1
  18. data/lib/mspec/helpers/datetime.rb +28 -0
  19. data/lib/mspec/helpers/ducktype.rb +4 -4
  20. data/lib/mspec/helpers/environment.rb +19 -2
  21. data/lib/mspec/helpers/fs.rb +5 -1
  22. data/lib/mspec/helpers/io.rb +39 -1
  23. data/lib/mspec/helpers/numeric.rb +89 -0
  24. data/lib/mspec/helpers/pack.rb +3 -0
  25. data/lib/mspec/helpers/ruby_exe.rb +53 -15
  26. data/lib/mspec/helpers/singleton_class.rb +7 -0
  27. data/lib/mspec/helpers/stasy.rb +33 -0
  28. data/lib/mspec/helpers/tmp.rb +16 -3
  29. data/lib/mspec/matchers.rb +8 -0
  30. data/lib/mspec/matchers/be_computed_by.rb +37 -0
  31. data/lib/mspec/matchers/be_computed_by_function.rb +35 -0
  32. data/lib/mspec/matchers/be_nan.rb +20 -0
  33. data/lib/mspec/matchers/be_valid_dns_name.rb +25 -0
  34. data/lib/mspec/matchers/have_data.rb +6 -5
  35. data/lib/mspec/matchers/have_private_method.rb +24 -0
  36. data/lib/mspec/matchers/have_singleton_method.rb +24 -0
  37. data/lib/mspec/matchers/infinity.rb +28 -0
  38. data/lib/mspec/matchers/match_yaml.rb +5 -5
  39. data/lib/mspec/matchers/raise_error.rb +5 -3
  40. data/lib/mspec/matchers/signed_zero.rb +28 -0
  41. data/lib/mspec/mocks/mock.rb +15 -9
  42. data/lib/mspec/mocks/object.rb +4 -0
  43. data/lib/mspec/mocks/proxy.rb +26 -1
  44. data/lib/mspec/runner/actions.rb +0 -1
  45. data/lib/mspec/runner/context.rb +18 -16
  46. data/lib/mspec/runner/formatters.rb +2 -0
  47. data/lib/mspec/runner/formatters/dotted.rb +13 -1
  48. data/lib/mspec/runner/formatters/junit.rb +96 -0
  49. data/lib/mspec/runner/formatters/profile.rb +70 -0
  50. data/lib/mspec/runner/mspec.rb +11 -0
  51. data/lib/mspec/runner/shared.rb +1 -1
  52. data/lib/mspec/utils/options.rb +33 -9
  53. data/lib/mspec/utils/ruby_name.rb +1 -1
  54. data/lib/mspec/utils/script.rb +2 -1
  55. data/lib/mspec/version.rb +1 -1
  56. data/mspec.gemspec +40 -0
  57. data/spec/commands/mkspec_spec.rb +4 -3
  58. data/spec/commands/mspec_ci_spec.rb +1 -6
  59. data/spec/commands/mspec_run_spec.rb +1 -6
  60. data/spec/commands/mspec_spec.rb +14 -6
  61. data/spec/commands/mspec_tag_spec.rb +28 -27
  62. data/spec/expectations/expectations_spec.rb +1 -1
  63. data/spec/expectations/should_spec.rb +4 -4
  64. data/spec/guards/background_spec.rb +2 -2
  65. data/spec/guards/block_device_spec.rb +46 -0
  66. data/spec/guards/bug_spec.rb +2 -3
  67. data/spec/guards/compliance_spec.rb +2 -2
  68. data/spec/guards/conflict_spec.rb +2 -2
  69. data/spec/guards/endian_spec.rb +2 -2
  70. data/spec/guards/extensions_spec.rb +2 -2
  71. data/spec/guards/feature_spec.rb +2 -2
  72. data/spec/guards/guard_spec.rb +80 -22
  73. data/spec/guards/noncompliance_spec.rb +2 -2
  74. data/spec/guards/platform_spec.rb +2 -2
  75. data/spec/guards/quarantine_spec.rb +2 -2
  76. data/spec/guards/runner_spec.rb +2 -2
  77. data/spec/guards/specified_spec.rb +2 -2
  78. data/spec/guards/superuser_spec.rb +2 -2
  79. data/spec/guards/support_spec.rb +2 -2
  80. data/spec/guards/tty_spec.rb +2 -2
  81. data/spec/guards/user_spec.rb +2 -2
  82. data/spec/guards/version_spec.rb +2 -2
  83. data/spec/helpers/argv_spec.rb +3 -2
  84. data/spec/helpers/const_lookup_spec.rb +3 -2
  85. data/spec/helpers/datetime_spec.rb +44 -0
  86. data/spec/helpers/ducktype_spec.rb +3 -2
  87. data/spec/helpers/encode_spec.rb +3 -2
  88. data/spec/helpers/enumerator_class_spec.rb +5 -5
  89. data/spec/helpers/environment_spec.rb +15 -3
  90. data/spec/helpers/fixture_spec.rb +3 -2
  91. data/spec/helpers/flunk_spec.rb +4 -3
  92. data/spec/helpers/fs_spec.rb +35 -18
  93. data/spec/helpers/hash_spec.rb +3 -2
  94. data/spec/helpers/io_spec.rb +75 -6
  95. data/spec/helpers/language_version_spec.rb +3 -2
  96. data/spec/helpers/mock_to_path_spec.rb +3 -2
  97. data/spec/helpers/numeric_spec.rb +25 -0
  98. data/spec/helpers/ruby_exe_spec.rb +115 -29
  99. data/spec/helpers/scratch_spec.rb +3 -1
  100. data/spec/helpers/stasy_spec.rb +59 -0
  101. data/spec/helpers/tmp_spec.rb +21 -4
  102. data/spec/matchers/base_spec.rb +2 -2
  103. data/spec/matchers/be_an_instance_of_spec.rb +2 -2
  104. data/spec/matchers/be_ancestor_of_spec.rb +2 -2
  105. data/spec/matchers/be_close_spec.rb +2 -2
  106. data/spec/matchers/be_computed_by_function_spec.rb +36 -0
  107. data/spec/matchers/be_computed_by_spec.rb +42 -0
  108. data/spec/matchers/be_empty_spec.rb +2 -2
  109. data/spec/matchers/be_false_spec.rb +3 -3
  110. data/spec/matchers/be_kind_of_spec.rb +2 -2
  111. data/spec/matchers/be_nan_spec.rb +28 -0
  112. data/spec/matchers/be_nil_spec.rb +3 -3
  113. data/spec/matchers/be_true_spec.rb +3 -3
  114. data/spec/matchers/be_valid_dns_name_spec.rb +50 -0
  115. data/spec/matchers/complain_spec.rb +2 -2
  116. data/spec/matchers/eql_spec.rb +2 -2
  117. data/spec/matchers/equal_element_spec.rb +2 -2
  118. data/spec/matchers/equal_spec.rb +2 -2
  119. data/spec/matchers/equal_utf16_spec.rb +2 -2
  120. data/spec/matchers/have_class_variable_spec.rb +3 -3
  121. data/spec/matchers/have_constant_spec.rb +2 -2
  122. data/spec/matchers/have_data_spec.rb +8 -5
  123. data/spec/matchers/have_instance_method_spec.rb +2 -2
  124. data/spec/matchers/have_instance_variable_spec.rb +3 -3
  125. data/spec/matchers/have_method_spec.rb +2 -2
  126. data/spec/matchers/have_private_instance_method_spec.rb +3 -3
  127. data/spec/matchers/have_private_method_spec.rb +44 -0
  128. data/spec/matchers/have_protected_instance_method_spec.rb +2 -2
  129. data/spec/matchers/have_public_instance_method_spec.rb +2 -2
  130. data/spec/matchers/have_singleton_method_spec.rb +45 -0
  131. data/spec/matchers/include_spec.rb +2 -2
  132. data/spec/matchers/infinity_spec.rb +34 -0
  133. data/spec/matchers/match_yaml_spec.rb +3 -3
  134. data/spec/matchers/output_spec.rb +2 -2
  135. data/spec/matchers/output_to_fd_spec.rb +2 -2
  136. data/spec/matchers/raise_error_spec.rb +24 -3
  137. data/spec/matchers/respond_to_spec.rb +2 -2
  138. data/spec/matchers/signed_zero_spec.rb +32 -0
  139. data/spec/matchers/stringsymboladapter_spec.rb +2 -2
  140. data/spec/mocks/mock_spec.rb +12 -12
  141. data/spec/mocks/proxy_spec.rb +1 -1
  142. data/spec/runner/actions/gdb_spec.rb +1 -1
  143. data/spec/runner/actions/tag_spec.rb +1 -1
  144. data/spec/runner/actions/taglist_spec.rb +1 -1
  145. data/spec/runner/context_spec.rb +27 -27
  146. data/spec/runner/example_spec.rb +1 -1
  147. data/spec/runner/exception_spec.rb +1 -1
  148. data/spec/runner/filters/tag_spec.rb +2 -2
  149. data/spec/runner/formatters/describe_spec.rb +1 -1
  150. data/spec/runner/formatters/dotted_spec.rb +2 -2
  151. data/spec/runner/formatters/html_spec.rb +2 -2
  152. data/spec/runner/formatters/junit_spec.rb +147 -0
  153. data/spec/runner/formatters/unit_spec.rb +2 -2
  154. data/spec/runner/formatters/yaml_spec.rb +3 -3
  155. data/spec/runner/mspec_spec.rb +22 -21
  156. data/spec/runner/shared_spec.rb +9 -1
  157. data/spec/runner/tag_spec.rb +1 -1
  158. data/spec/spec_helper.rb +1 -7
  159. data/spec/utils/name_map_spec.rb +1 -2
  160. data/spec/utils/options_spec.rb +58 -27
  161. data/spec/utils/script_spec.rb +5 -13
  162. data/spec/utils/version_spec.rb +1 -1
  163. metadata +254 -64
  164. data/lib/mspec/helpers/bignum.rb +0 -5
  165. data/lib/mspec/helpers/fmode.rb +0 -15
  166. data/lib/mspec/helpers/infinity.rb +0 -5
  167. data/lib/mspec/helpers/metaclass.rb +0 -7
  168. data/lib/mspec/helpers/nan.rb +0 -5
  169. data/lib/mspec/runner/actions/debug.rb +0 -17
  170. data/spec/helpers/bignum_spec.rb +0 -11
  171. data/spec/helpers/fmode_spec.rb +0 -14
  172. data/spec/helpers/infinity_spec.rb +0 -8
  173. data/spec/helpers/nan_spec.rb +0 -8
  174. data/spec/runner/actions/debug_spec.rb +0 -62
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/be_empty'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe BeEmptyMatcher do
6
6
  it "matches when actual is empty" do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/be_false'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe BeFalseMatcher do
6
6
  it "matches when actual is false" do
@@ -25,4 +25,4 @@ describe BeFalseMatcher do
25
25
  matcher.matches?(false)
26
26
  matcher.negative_failure_message.should == ["Expected false", "not to be false"]
27
27
  end
28
- end
28
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/be_kind_of'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe BeKindOfMatcher do
6
6
  it "matches when actual is a kind_of? expected" do
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/guards'
4
+ require 'mspec/helpers'
5
+ require 'mspec/matchers'
6
+
7
+ describe BeNaNMatcher do
8
+ it "matches when actual is NaN" do
9
+ BeNaNMatcher.new.matches?(nan_value).should == true
10
+ end
11
+
12
+ it "does not match when actual is not NaN" do
13
+ BeNaNMatcher.new.matches?(1.0).should == false
14
+ BeNaNMatcher.new.matches?(0).should == false
15
+ end
16
+
17
+ it "provides a useful failure message" do
18
+ matcher = BeNaNMatcher.new
19
+ matcher.matches?(0)
20
+ matcher.failure_message.should == ["Expected 0", "to be NaN"]
21
+ end
22
+
23
+ it "provides a useful negative failure message" do
24
+ matcher = BeNaNMatcher.new
25
+ matcher.matches?(nan_value)
26
+ matcher.negative_failure_message.should == ["Expected NaN", "not to be NaN"]
27
+ end
28
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/be_nil'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe BeNilMatcher do
6
6
  it "matches when actual is nil" do
@@ -24,4 +24,4 @@ describe BeNilMatcher do
24
24
  matcher.matches?(nil)
25
25
  matcher.negative_failure_message.should == ["Expected nil", "not to be nil"]
26
26
  end
27
- end
27
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/be_true'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe BeTrueMatcher do
6
6
  it "matches when actual is true" do
@@ -25,4 +25,4 @@ describe BeTrueMatcher do
25
25
  matcher.matches?(true)
26
26
  matcher.negative_failure_message.should == ["Expected true", "not to be true"]
27
27
  end
28
- end
28
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers'
4
+
5
+ describe BeValidDNSName do
6
+ it "matches when actual is 'localhost'" do
7
+ BeValidDNSName.new.matches?("localhost").should be_true
8
+ end
9
+
10
+ it "matches when actual is 'localhost.localdomain'" do
11
+ BeValidDNSName.new.matches?("localhost.localdomain").should be_true
12
+ end
13
+
14
+ it "matches when actual is hyphenated" do
15
+ BeValidDNSName.new.matches?("local-host").should be_true
16
+ end
17
+
18
+ it "matches when actual is 'a.b.c'" do
19
+ BeValidDNSName.new.matches?("a.b.c").should be_true
20
+ end
21
+
22
+ it "matches when actual has a trailing '.'" do
23
+ BeValidDNSName.new.matches?("a.com.").should be_true
24
+ end
25
+
26
+ it "does not match when actual is not a valid dns name" do
27
+ BeValidDNSName.new.matches?(".").should be_false
28
+ end
29
+
30
+ it "does not match when actual contains a hyphen at the beginning" do
31
+ BeValidDNSName.new.matches?("-localhost").should be_false
32
+ end
33
+
34
+ it "does not match when actual contains a hyphen at the end" do
35
+ BeValidDNSName.new.matches?("localhost-").should be_false
36
+ end
37
+
38
+ it "provides a failure message" do
39
+ matcher = BeValidDNSName.new
40
+ matcher.matches?(".")
41
+ matcher.failure_message.should == ["Expected '.'", "to be a valid DNS name"]
42
+ end
43
+
44
+ it "provides a negative failure message" do
45
+ matcher = BeValidDNSName.new
46
+ matcher.matches?("localhost")
47
+ matcher.negative_failure_message.should ==
48
+ ["Expected 'localhost'", "not to be a valid DNS name"]
49
+ end
50
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/complain'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe ComplainMatcher do
6
6
  it "matches when executing the proc results in output to $stderr" do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/eql'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe EqlMatcher do
6
6
  it "matches when actual is eql? to expected" do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/equal_element'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe EqualElementMatcher do
6
6
  it "matches if it finds an element with the passed name, no matter what attributes/content" do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/equal'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe EqualMatcher do
6
6
  it "matches when actual is equal? to expected" do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/equal_utf16'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe EqualUtf16Matcher do
6
6
  before :all do
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_class_variable'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class IVarModMock; end
6
6
 
@@ -72,4 +72,4 @@ describe HaveClassVariableMatcher, "on RUBY_VERSION >= 1.9" do
72
72
  end
73
73
 
74
74
  it_should_behave_like "have_class_variable, on all Ruby versions"
75
- end
75
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_constant'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HCMSpecs
6
6
  X = :x
@@ -1,8 +1,8 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_data'
4
- require 'mspec/helpers/tmp'
5
- require 'mspec/helpers/fs'
3
+ require 'mspec/guards'
4
+ require 'mspec/helpers'
5
+ require 'mspec/matchers'
6
6
 
7
7
  describe HaveDataMatcher do
8
8
  before :each do
@@ -26,13 +26,16 @@ describe HaveDataMatcher do
26
26
 
27
27
  it "does not match when the named file begins with fewer bytes than data" do
28
28
  HaveDataMatcher.new("123abcPQR").matches?(@name).should be_false
29
-
30
29
  end
31
30
 
32
31
  it "does not match when the named file begins with different bytes than data" do
33
32
  HaveDataMatcher.new("abc1").matches?(@name).should be_false
34
33
  end
35
34
 
35
+ it "accepts an optional mode argument to open the data file" do
36
+ HaveDataMatcher.new("123a", "r").matches?(@name).should be_true
37
+ end
38
+
36
39
  it "provides a useful failure message" do
37
40
  matcher = HaveDataMatcher.new("abc1")
38
41
  matcher.matches?(@name)
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_instance_method'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HIMMSpecs
6
6
  def instance_method
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_instance_variable'
3
+ require 'mspec/matchers'
4
4
 
5
5
  shared_examples_for "have_instance_variable, on all Ruby versions" do
6
6
  after :all do
@@ -72,4 +72,4 @@ describe HaveInstanceVariableMatcher, "on RUBY_VERSION >= 1.9" do
72
72
  end
73
73
 
74
74
  it_should_behave_like "have_instance_variable, on all Ruby versions"
75
- end
75
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_method'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HMMSpecs
6
6
  def instance_method
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_private_instance_method'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HPIMMSpecs
6
6
  private
@@ -46,7 +46,7 @@ describe HavePrivateInstanceMethodMatcher do
46
46
  ]
47
47
  end
48
48
 
49
- it "provides a failure messoge for #should_not" do
49
+ it "provides a failure message for #should_not" do
50
50
  matcher = HavePrivateInstanceMethodMatcher.new :some_method
51
51
  matcher.matches?(HPIMMSpecs)
52
52
  matcher.negative_failure_message.should == [
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers'
4
+
5
+ class HPMMSpecs
6
+ def self.private_method
7
+ end
8
+
9
+ private_class_method :private_method
10
+ end
11
+
12
+ describe HavePrivateMethodMatcher do
13
+ it "inherits from MethodMatcher" do
14
+ HavePrivateMethodMatcher.new(:m).should be_kind_of(MethodMatcher)
15
+ end
16
+
17
+ it "matches when mod has the private method" do
18
+ matcher = HavePrivateMethodMatcher.new :private_method
19
+ matcher.matches?(HPMMSpecs).should be_true
20
+ end
21
+
22
+ it "does not match when mod does not have the private method" do
23
+ matcher = HavePrivateMethodMatcher.new :another_method
24
+ matcher.matches?(HPMMSpecs).should be_false
25
+ end
26
+
27
+ it "provides a failure message for #should" do
28
+ matcher = HavePrivateMethodMatcher.new :some_method
29
+ matcher.matches?(HPMMSpecs)
30
+ matcher.failure_message.should == [
31
+ "Expected HPMMSpecs to have private method 'some_method'",
32
+ "but it does not"
33
+ ]
34
+ end
35
+
36
+ it "provides a failure message for #should_not" do
37
+ matcher = HavePrivateMethodMatcher.new :private_method
38
+ matcher.matches?(HPMMSpecs)
39
+ matcher.negative_failure_message.should == [
40
+ "Expected HPMMSpecs NOT to have private method 'private_method'",
41
+ "but it does"
42
+ ]
43
+ end
44
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_protected_instance_method'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HPIMMSpecs
6
6
  protected
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/have_public_instance_method'
3
+ require 'mspec/matchers'
4
4
 
5
5
  class HPIMMSpecs
6
6
  def public_method
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers'
4
+
5
+ class HSMMSpecs
6
+ def self.singleton_method
7
+ end
8
+ end
9
+
10
+ describe HaveSingletonMethodMatcher do
11
+ it "inherits from MethodMatcher" do
12
+ HaveSingletonMethodMatcher.new(:m).should be_kind_of(MethodMatcher)
13
+ end
14
+
15
+ it "matches when the class has a singleton method" do
16
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
17
+ matcher.matches?(HSMMSpecs).should be_true
18
+ end
19
+
20
+ it "matches when the object has a singleton method" do
21
+ obj = mock("HSMMSpecs")
22
+ def obj.singleton_method; end
23
+
24
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
25
+ matcher.matches?(obj).should be_true
26
+ end
27
+
28
+ it "provides a failure message for #should" do
29
+ matcher = HaveSingletonMethodMatcher.new :some_method
30
+ matcher.matches?(HSMMSpecs)
31
+ matcher.failure_message.should == [
32
+ "Expected HSMMSpecs to have singleton method 'some_method'",
33
+ "but it does not"
34
+ ]
35
+ end
36
+
37
+ it "provides a failure message for #should_not" do
38
+ matcher = HaveSingletonMethodMatcher.new :singleton_method
39
+ matcher.matches?(HSMMSpecs)
40
+ matcher.negative_failure_message.should == [
41
+ "Expected HSMMSpecs NOT to have singleton method 'singleton_method'",
42
+ "but it does"
43
+ ]
44
+ end
45
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ require 'spec_helper'
2
2
  require 'mspec/expectations/expectations'
3
- require 'mspec/matchers/include'
3
+ require 'mspec/matchers'
4
4
 
5
5
  describe IncludeMatcher do
6
6
  it "matches when actual includes expected" do
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/guards'
4
+ require 'mspec/helpers'
5
+ require 'mspec/matchers'
6
+
7
+ describe InfinityMatcher do
8
+ it "matches when actual is infinite and has the correct sign" do
9
+ InfinityMatcher.new(1).matches?(infinity_value).should == true
10
+ InfinityMatcher.new(-1).matches?(-infinity_value).should == true
11
+ end
12
+
13
+ it "does not match when actual is not infinite" do
14
+ InfinityMatcher.new(1).matches?(1.0).should == false
15
+ InfinityMatcher.new(-1).matches?(-1.0).should == false
16
+ end
17
+
18
+ it "does not match when actual is infinite but has the incorrect sign" do
19
+ InfinityMatcher.new(1).matches?(-infinity_value).should == false
20
+ InfinityMatcher.new(-1).matches?(infinity_value).should == false
21
+ end
22
+
23
+ it "provides a useful failure message" do
24
+ matcher = InfinityMatcher.new(-1)
25
+ matcher.matches?(0)
26
+ matcher.failure_message.should == ["Expected 0", "to be -Infinity"]
27
+ end
28
+
29
+ it "provides a useful negative failure message" do
30
+ matcher = InfinityMatcher.new(1)
31
+ matcher.matches?(infinity_value)
32
+ matcher.negative_failure_message.should == ["Expected Infinity", "not to be Infinity"]
33
+ end
34
+ end