mspec 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. data/LICENSE +22 -0
  2. data/README +101 -0
  3. data/Rakefile +44 -0
  4. data/bin/mkspec +7 -0
  5. data/bin/mspec +7 -0
  6. data/bin/mspec-ci +8 -0
  7. data/bin/mspec-run +8 -0
  8. data/bin/mspec-tag +8 -0
  9. data/lib/mspec.rb +6 -0
  10. data/lib/mspec/commands/mkspec.rb +147 -0
  11. data/lib/mspec/commands/mspec-ci.rb +71 -0
  12. data/lib/mspec/commands/mspec-run.rb +80 -0
  13. data/lib/mspec/commands/mspec-tag.rb +87 -0
  14. data/lib/mspec/commands/mspec.rb +143 -0
  15. data/lib/mspec/expectations.rb +2 -0
  16. data/lib/mspec/expectations/expectations.rb +12 -0
  17. data/lib/mspec/expectations/should.rb +23 -0
  18. data/lib/mspec/guards.rb +13 -0
  19. data/lib/mspec/guards/bug.rb +27 -0
  20. data/lib/mspec/guards/compliance.rb +18 -0
  21. data/lib/mspec/guards/conflict.rb +16 -0
  22. data/lib/mspec/guards/endian.rb +40 -0
  23. data/lib/mspec/guards/extensions.rb +12 -0
  24. data/lib/mspec/guards/guard.rb +120 -0
  25. data/lib/mspec/guards/noncompliance.rb +12 -0
  26. data/lib/mspec/guards/platform.rb +38 -0
  27. data/lib/mspec/guards/quarantine.rb +15 -0
  28. data/lib/mspec/guards/runner.rb +30 -0
  29. data/lib/mspec/guards/superuser.rb +15 -0
  30. data/lib/mspec/guards/support.rb +12 -0
  31. data/lib/mspec/guards/version.rb +40 -0
  32. data/lib/mspec/helpers.rb +6 -0
  33. data/lib/mspec/helpers/bignum.rb +5 -0
  34. data/lib/mspec/helpers/const_lookup.rb +5 -0
  35. data/lib/mspec/helpers/flunk.rb +5 -0
  36. data/lib/mspec/helpers/io.rb +13 -0
  37. data/lib/mspec/helpers/scratch.rb +17 -0
  38. data/lib/mspec/helpers/tmp.rb +32 -0
  39. data/lib/mspec/matchers.rb +16 -0
  40. data/lib/mspec/matchers/base.rb +95 -0
  41. data/lib/mspec/matchers/be_ancestor_of.rb +24 -0
  42. data/lib/mspec/matchers/be_close.rb +27 -0
  43. data/lib/mspec/matchers/be_empty.rb +20 -0
  44. data/lib/mspec/matchers/be_false.rb +20 -0
  45. data/lib/mspec/matchers/be_kind_of.rb +24 -0
  46. data/lib/mspec/matchers/be_nil.rb +20 -0
  47. data/lib/mspec/matchers/be_true.rb +20 -0
  48. data/lib/mspec/matchers/complain.rb +56 -0
  49. data/lib/mspec/matchers/eql.rb +26 -0
  50. data/lib/mspec/matchers/equal.rb +26 -0
  51. data/lib/mspec/matchers/equal_utf16.rb +34 -0
  52. data/lib/mspec/matchers/include.rb +32 -0
  53. data/lib/mspec/matchers/output.rb +67 -0
  54. data/lib/mspec/matchers/output_to_fd.rb +71 -0
  55. data/lib/mspec/matchers/raise_error.rb +48 -0
  56. data/lib/mspec/mocks.rb +3 -0
  57. data/lib/mspec/mocks/mock.rb +123 -0
  58. data/lib/mspec/mocks/object.rb +28 -0
  59. data/lib/mspec/mocks/proxy.rb +112 -0
  60. data/lib/mspec/runner.rb +13 -0
  61. data/lib/mspec/runner/actions.rb +6 -0
  62. data/lib/mspec/runner/actions/debug.rb +17 -0
  63. data/lib/mspec/runner/actions/filter.rb +40 -0
  64. data/lib/mspec/runner/actions/gdb.rb +17 -0
  65. data/lib/mspec/runner/actions/tag.rb +97 -0
  66. data/lib/mspec/runner/actions/tally.rb +80 -0
  67. data/lib/mspec/runner/actions/timer.rb +22 -0
  68. data/lib/mspec/runner/filters.rb +4 -0
  69. data/lib/mspec/runner/filters/match.rb +22 -0
  70. data/lib/mspec/runner/filters/profile.rb +54 -0
  71. data/lib/mspec/runner/filters/regexp.rb +7 -0
  72. data/lib/mspec/runner/filters/tag.rb +29 -0
  73. data/lib/mspec/runner/formatters.rb +7 -0
  74. data/lib/mspec/runner/formatters/dotted.rb +81 -0
  75. data/lib/mspec/runner/formatters/html.rb +87 -0
  76. data/lib/mspec/runner/formatters/specdoc.rb +27 -0
  77. data/lib/mspec/runner/formatters/spinner.rb +89 -0
  78. data/lib/mspec/runner/formatters/summary.rb +8 -0
  79. data/lib/mspec/runner/formatters/unit.rb +25 -0
  80. data/lib/mspec/runner/formatters/yaml.rb +43 -0
  81. data/lib/mspec/runner/mspec.rb +232 -0
  82. data/lib/mspec/runner/object.rb +20 -0
  83. data/lib/mspec/runner/shared.rb +12 -0
  84. data/lib/mspec/runner/state.rb +116 -0
  85. data/lib/mspec/runner/tag.rb +20 -0
  86. data/lib/mspec/utils/name_map.rb +130 -0
  87. data/lib/mspec/utils/options.rb +344 -0
  88. data/lib/mspec/utils/script.rb +77 -0
  89. data/lib/mspec/version.rb +3 -0
  90. data/spec/commands/mkspec_spec.rb +321 -0
  91. data/spec/commands/mspec_ci_spec.rb +139 -0
  92. data/spec/commands/mspec_run_spec.rb +146 -0
  93. data/spec/commands/mspec_spec.rb +359 -0
  94. data/spec/commands/mspec_tag_spec.rb +131 -0
  95. data/spec/expectations/expectations_spec.rb +16 -0
  96. data/spec/expectations/should_spec.rb +99 -0
  97. data/spec/guards/bug_spec.rb +137 -0
  98. data/spec/guards/compliance_spec.rb +70 -0
  99. data/spec/guards/conflict_spec.rb +20 -0
  100. data/spec/guards/endian_spec.rb +42 -0
  101. data/spec/guards/extensions_spec.rb +36 -0
  102. data/spec/guards/guard_spec.rb +355 -0
  103. data/spec/guards/noncompliance_spec.rb +36 -0
  104. data/spec/guards/platform_spec.rb +84 -0
  105. data/spec/guards/quarantine_spec.rb +19 -0
  106. data/spec/guards/runner_spec.rb +75 -0
  107. data/spec/guards/superuser_spec.rb +22 -0
  108. data/spec/guards/support_spec.rb +22 -0
  109. data/spec/guards/version_spec.rb +133 -0
  110. data/spec/helpers/bignum_spec.rb +11 -0
  111. data/spec/helpers/const_lookup_spec.rb +19 -0
  112. data/spec/helpers/flunk_spec.rb +15 -0
  113. data/spec/helpers/io_spec.rb +34 -0
  114. data/spec/helpers/scratch_spec.rb +22 -0
  115. data/spec/helpers/tmp_spec.rb +72 -0
  116. data/spec/matchers/base_spec.rb +180 -0
  117. data/spec/matchers/be_ancestor_of_spec.rb +28 -0
  118. data/spec/matchers/be_close_spec.rb +46 -0
  119. data/spec/matchers/be_empty_spec.rb +26 -0
  120. data/spec/matchers/be_false_spec.rb +28 -0
  121. data/spec/matchers/be_kind_of_spec.rb +29 -0
  122. data/spec/matchers/be_nil_spec.rb +27 -0
  123. data/spec/matchers/be_true_spec.rb +28 -0
  124. data/spec/matchers/complain_spec.rb +52 -0
  125. data/spec/matchers/eql_spec.rb +33 -0
  126. data/spec/matchers/equal_spec.rb +33 -0
  127. data/spec/matchers/equal_utf16_spec.rb +47 -0
  128. data/spec/matchers/include_spec.rb +37 -0
  129. data/spec/matchers/output_spec.rb +74 -0
  130. data/spec/matchers/output_to_fd_spec.rb +33 -0
  131. data/spec/matchers/raise_error_spec.rb +56 -0
  132. data/spec/mocks/mock_spec.rb +272 -0
  133. data/spec/mocks/proxy_spec.rb +259 -0
  134. data/spec/runner/actions/debug_spec.rb +61 -0
  135. data/spec/runner/actions/filter_spec.rb +84 -0
  136. data/spec/runner/actions/gdb_spec.rb +61 -0
  137. data/spec/runner/actions/tag_spec.rb +253 -0
  138. data/spec/runner/actions/tally_spec.rb +107 -0
  139. data/spec/runner/actions/timer_spec.rb +42 -0
  140. data/spec/runner/filters/a.yaml +4 -0
  141. data/spec/runner/filters/b.yaml +11 -0
  142. data/spec/runner/filters/match_spec.rb +44 -0
  143. data/spec/runner/filters/profile_spec.rb +117 -0
  144. data/spec/runner/filters/regexp_spec.rb +13 -0
  145. data/spec/runner/filters/tag_spec.rb +77 -0
  146. data/spec/runner/formatters/dotted_spec.rb +184 -0
  147. data/spec/runner/formatters/html_spec.rb +191 -0
  148. data/spec/runner/formatters/specdoc_spec.rb +57 -0
  149. data/spec/runner/formatters/spinner_spec.rb +78 -0
  150. data/spec/runner/formatters/summary_spec.rb +29 -0
  151. data/spec/runner/formatters/unit_spec.rb +71 -0
  152. data/spec/runner/formatters/yaml_spec.rb +123 -0
  153. data/spec/runner/mspec_spec.rb +393 -0
  154. data/spec/runner/shared_spec.rb +41 -0
  155. data/spec/runner/state_spec.rb +535 -0
  156. data/spec/runner/tag_spec.rb +93 -0
  157. data/spec/runner/tags.txt +3 -0
  158. data/spec/spec_helper.rb +46 -0
  159. data/spec/utils/name_map_spec.rb +178 -0
  160. data/spec/utils/options_spec.rb +862 -0
  161. data/spec/utils/script_spec.rb +240 -0
  162. metadata +217 -0
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe IOStub do
4
+ before :each do
5
+ @out = IOStub.new
6
+ @sep = $\
7
+ end
8
+
9
+ after :each do
10
+ $\ = @sep
11
+ end
12
+
13
+ it "provides a write method" do
14
+ @out.write "this"
15
+ @out.should == "this"
16
+ end
17
+
18
+ it "concatenates the arguments sent to write" do
19
+ @out.write "flim ", "flam"
20
+ @out.should == "flim flam"
21
+ end
22
+
23
+ it "provides a print method that appends the default separator" do
24
+ $\ = " [newline] "
25
+ @out.print "hello"
26
+ @out.print "world"
27
+ @out.should == "hello [newline] world [newline] "
28
+ end
29
+
30
+ it "provides a puts method that appends the default separator" do
31
+ @out.puts "hello", 1, 2, 3
32
+ @out.should == "hello\n1\n2\n3\n"
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe ScratchPad do
4
+ it "records an object and returns a previously recorded object" do
5
+ ScratchPad.record :this
6
+ ScratchPad.recorded.should == :this
7
+ end
8
+
9
+ it "clears the recorded object" do
10
+ ScratchPad.record :that
11
+ ScratchPad.recorded.should == :that
12
+ ScratchPad.clear
13
+ ScratchPad.recorded.should == nil
14
+ end
15
+
16
+ it "provides a convenience shortcut to append to a previously recorded object" do
17
+ ScratchPad.record []
18
+ ScratchPad << :new
19
+ ScratchPad << :another
20
+ ScratchPad.recorded.should == [:new, :another]
21
+ end
22
+ end
@@ -0,0 +1,72 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/helpers/tmp'
3
+
4
+ describe Object, "#tmp" do
5
+ before :each do
6
+ File.stub!(:directory?).and_return(false)
7
+ File.stub!(:symlink?).and_return(false)
8
+ ENV.stub!(:[]).and_return(nil)
9
+ end
10
+
11
+ it "returns /tmp/<name> if /tmp is a writable directory" do
12
+ dir = "/tmp"
13
+ File.should_receive(:directory?).with(dir).and_return(true)
14
+ File.should_receive(:writable?).with(dir).and_return(true)
15
+ File.should_receive(:expand_path).with(dir).and_return(dir)
16
+ tmp("test.txt").should == dir + "/test.txt"
17
+ end
18
+
19
+ it "returns /var/tmp/<name> if /var/tmp is a writable directory" do
20
+ dir = "/var/tmp"
21
+ File.should_receive(:directory?).with(dir).and_return(true)
22
+ File.should_receive(:writable?).with(dir).and_return(true)
23
+ File.should_receive(:expand_path).with(dir).and_return(dir)
24
+ tmp("test.txt").should == dir + "/test.txt"
25
+ end
26
+
27
+ it "returns ENV['TMPDIR']/<name> if ENV['TMPDIR'] is a writable directory" do
28
+ dir = "/tmpdir"
29
+ ENV.should_receive(:[]).with("TMPDIR").and_return(dir)
30
+ File.should_receive(:directory?).with(dir).and_return(true)
31
+ File.should_receive(:writable?).with(dir).and_return(true)
32
+ File.should_receive(:expand_path).with(dir).and_return(dir)
33
+ tmp("test.txt").should == dir + "/test.txt"
34
+ end
35
+
36
+ it "returns ENV['TMP']/<name> if ENV['TMP'] is a writable directory" do
37
+ dir = "/tmp/tmp"
38
+ ENV.should_receive(:[]).with("TMP").and_return(dir)
39
+ File.should_receive(:directory?).with(dir).and_return(true)
40
+ File.should_receive(:writable?).with(dir).and_return(true)
41
+ File.should_receive(:expand_path).with(dir).and_return(dir)
42
+ tmp("test.txt").should == dir + "/test.txt"
43
+ end
44
+
45
+ it "returns ENV['TEMP']/<name> if ENV['TEMP'] is a writable directory" do
46
+ dir = "/tmp/temp"
47
+ ENV.should_receive(:[]).with("TEMP").and_return(dir)
48
+ File.should_receive(:directory?).with(dir).and_return(true)
49
+ File.should_receive(:writable?).with(dir).and_return(true)
50
+ File.should_receive(:expand_path).with(dir).and_return(dir)
51
+ tmp("test.txt").should == dir + "/test.txt"
52
+ end
53
+
54
+ it "returns ENV['USERPROFILE']/<name> if ENV['USERPROFILE'] is a writable directory" do
55
+ dir = "/tmp/temp"
56
+ ENV.should_receive(:[]).with("TEMP").and_return(dir)
57
+ File.should_receive(:directory?).with(dir).and_return(true)
58
+ File.should_receive(:writable?).with(dir).and_return(true)
59
+ File.should_receive(:expand_path).with(dir).and_return(dir)
60
+ tmp("test.txt").should == dir + "/test.txt"
61
+ end
62
+
63
+ it "returns the actual file name if the file is a symlink" do
64
+ dir = "/tmp"
65
+ File.should_receive(:directory?).with(dir).and_return(true)
66
+ File.should_receive(:writable?).with(dir).and_return(true)
67
+ File.should_receive(:expand_path).with(dir).and_return(dir)
68
+ File.should_receive(:symlink?).with(dir).and_return(true)
69
+ File.should_receive(:readlink).with(dir).and_return("/ponies"+dir)
70
+ tmp("test.txt").should == "/ponies" + dir + "/test.txt"
71
+ end
72
+ end
@@ -0,0 +1,180 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers/base'
4
+ require 'time'
5
+
6
+ describe PositiveOperatorMatcher, "== operator" do
7
+ it "raises an ExpectationNotMetError when expected == actual returns false" do
8
+ lambda {
9
+ PositiveOperatorMatcher.new(1) == 2
10
+ }.should raise_error(ExpectationNotMetError, "Expected 1 to equal 2")
11
+ end
12
+
13
+ it "does not raise an exception when expected == actual returns true" do
14
+ lambda {
15
+ PositiveOperatorMatcher.new(1) == 1
16
+ }.should_not raise_error
17
+ end
18
+ end
19
+
20
+ describe PositiveOperatorMatcher, "=~ operator" do
21
+ it "raises an ExpectationNotMetError when expected =~ actual returns false" do
22
+ lambda {
23
+ PositiveOperatorMatcher.new('real') =~ /fake/
24
+ }.should raise_error(ExpectationNotMetError, %(Expected "real" to match /fake/))
25
+ end
26
+
27
+ it "does not raise an exception when expected =~ actual returns true" do
28
+ lambda {
29
+ PositiveOperatorMatcher.new('real') =~ /real/
30
+ }.should_not raise_error
31
+ end
32
+ end
33
+
34
+ describe PositiveOperatorMatcher, "> operator" do
35
+ it "raises an ExpectationNotMetError when expected > actual returns false" do
36
+ lambda {
37
+ PositiveOperatorMatcher.new(4) > 5
38
+ }.should raise_error(ExpectationNotMetError, "Expected 4 to be greater than 5")
39
+ end
40
+
41
+ it "does not raise an exception when expected > actual returns true" do
42
+ lambda {
43
+ PositiveOperatorMatcher.new(5) > 4
44
+ }.should_not raise_error
45
+ end
46
+ end
47
+
48
+ describe PositiveOperatorMatcher, ">= operator" do
49
+ it "raises an ExpectationNotMetError when expected >= actual returns false" do
50
+ lambda {
51
+ PositiveOperatorMatcher.new(4) >= 5
52
+ }.should raise_error(ExpectationNotMetError, "Expected 4 to be greater than or equal to 5")
53
+ end
54
+
55
+ it "does not raise an exception when expected > actual returns true" do
56
+ lambda {
57
+ PositiveOperatorMatcher.new(5) >= 4
58
+ PositiveOperatorMatcher.new(5) >= 5
59
+ }.should_not raise_error
60
+ end
61
+ end
62
+
63
+ describe PositiveOperatorMatcher, "< operater" do
64
+ it "raises an ExpectationNotMetError when expected < actual returns false" do
65
+ lambda {
66
+ PositiveOperatorMatcher.new(5) < 4
67
+ }.should raise_error(ExpectationNotMetError, "Expected 5 to be less than 4")
68
+ end
69
+
70
+ it "does not raise an exception when expected < actual returns true" do
71
+ lambda {
72
+ PositiveOperatorMatcher.new(4) < 5
73
+ }.should_not raise_error
74
+ end
75
+ end
76
+
77
+ describe PositiveOperatorMatcher, "<= operater" do
78
+ it "raises an ExpectationNotMetError when expected < actual returns false" do
79
+ lambda {
80
+ PositiveOperatorMatcher.new(5) <= 4
81
+ }.should raise_error(ExpectationNotMetError, "Expected 5 to be less than or equal to 4")
82
+ end
83
+
84
+ it "does not raise an exception when expected < actual returns true" do
85
+ lambda {
86
+ PositiveOperatorMatcher.new(4) <= 5
87
+ PositiveOperatorMatcher.new(4) <= 4
88
+ }.should_not raise_error
89
+ end
90
+ end
91
+
92
+ describe NegativeOperatorMatcher, "== operator" do
93
+ it "raises an ExpectationNotMetError when expected == actual returns true" do
94
+ lambda {
95
+ NegativeOperatorMatcher.new(1) == 1
96
+ }.should raise_error(ExpectationNotMetError, "Expected 1 not to equal 1")
97
+ end
98
+
99
+ it "does not raise an exception when expected == actual returns false" do
100
+ lambda {
101
+ NegativeOperatorMatcher.new(1) == 2
102
+ }.should_not raise_error
103
+ end
104
+ end
105
+
106
+ describe NegativeOperatorMatcher, "=~ operator" do
107
+ it "raises an ExpectationNotMetError when expected =~ actual returns true" do
108
+ lambda {
109
+ NegativeOperatorMatcher.new('real') =~ /real/
110
+ }.should raise_error(ExpectationNotMetError, %(Expected "real" not to match /real/))
111
+ end
112
+
113
+ it "does not raise an exception when expected =~ actual returns false" do
114
+ lambda {
115
+ NegativeOperatorMatcher.new('real') =~ /fake/
116
+ }.should_not raise_error
117
+ end
118
+ end
119
+
120
+ describe NegativeOperatorMatcher, "< operator" do
121
+ it "raises an ExpectationNotMetError when expected < actual returns true" do
122
+ lambda {
123
+ NegativeOperatorMatcher.new(4) < 5
124
+ }.should raise_error(ExpectationNotMetError, "Expected 4 not to be less than 5")
125
+ end
126
+
127
+ it "does not raise an exception when expected < actual returns false" do
128
+ lambda {
129
+ NegativeOperatorMatcher.new(5) < 4
130
+ }.should_not raise_error
131
+ end
132
+ end
133
+
134
+ describe NegativeOperatorMatcher, "<= operator" do
135
+ it "raises an ExpectationNotMetError when expected <= actual returns true" do
136
+ lambda {
137
+ NegativeOperatorMatcher.new(4) <= 5
138
+ }.should raise_error(ExpectationNotMetError, "Expected 4 not to be less than or equal to 5")
139
+ lambda {
140
+ NegativeOperatorMatcher.new(5) <= 5
141
+ }.should raise_error(ExpectationNotMetError, "Expected 5 not to be less than or equal to 5")
142
+ end
143
+
144
+ it "does not raise an exception when expected <= actual returns false" do
145
+ lambda {
146
+ NegativeOperatorMatcher.new(5) <= 4
147
+ }.should_not raise_error
148
+ end
149
+ end
150
+
151
+ describe NegativeOperatorMatcher, "> operator" do
152
+ it "raises an ExpectationNotMetError when expected > actual returns true" do
153
+ lambda {
154
+ NegativeOperatorMatcher.new(5) > 4
155
+ }.should raise_error(ExpectationNotMetError, "Expected 5 not to be greater than 4")
156
+ end
157
+
158
+ it "does not raise an exception when expected > actual returns false" do
159
+ lambda {
160
+ NegativeOperatorMatcher.new(4) > 5
161
+ }.should_not raise_error
162
+ end
163
+ end
164
+
165
+ describe NegativeOperatorMatcher, ">= operator" do
166
+ it "raises an ExpectationNotMetError when expected >= actual returns true" do
167
+ lambda {
168
+ NegativeOperatorMatcher.new(5) >= 4
169
+ }.should raise_error(ExpectationNotMetError, "Expected 5 not to be greater than or equal to 4")
170
+ lambda {
171
+ NegativeOperatorMatcher.new(5) >= 5
172
+ }.should raise_error(ExpectationNotMetError, "Expected 5 not to be greater than or equal to 5")
173
+ end
174
+
175
+ it "does not raise an exception when expected >= actual returns false" do
176
+ lambda {
177
+ NegativeOperatorMatcher.new(4) >= 5
178
+ }.should_not raise_error
179
+ end
180
+ end
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers/be_ancestor_of'
4
+
5
+ class Parent; end
6
+ class Child < Parent; end
7
+
8
+ describe BeAncestorOfMatcher do
9
+ it "matches when actual is an ancestor of expected" do
10
+ BeAncestorOfMatcher.new(Child).matches?(Parent).should == true
11
+ end
12
+
13
+ it "does not match when actual is not an ancestor of expected" do
14
+ BeAncestorOfMatcher.new(Parent).matches?(Child).should == false
15
+ end
16
+
17
+ it "provides a useful failure message" do
18
+ matcher = BeAncestorOfMatcher.new(Parent)
19
+ matcher.matches?(Child)
20
+ matcher.failure_message.should == ["Expected Child", "to be an ancestor of Parent"]
21
+ end
22
+
23
+ it "provides a useful negative failure message" do
24
+ matcher = BeAncestorOfMatcher.new(Child)
25
+ matcher.matches?(Parent)
26
+ matcher.negative_failure_message.should == ["Expected Parent", "not to be an ancestor of Child"]
27
+ end
28
+ end
@@ -0,0 +1,46 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers/be_close'
4
+
5
+ # Adapted from RSpec 1.0.8
6
+ describe BeCloseMatcher do
7
+ it "matches when actual == expected" do
8
+ BeCloseMatcher.new(5.0, 0.5).matches?(5.0).should == true
9
+ end
10
+
11
+ it "matches when actual < (expected + tolerance)" do
12
+ BeCloseMatcher.new(5.0, 0.5).matches?(5.49).should == true
13
+ end
14
+
15
+ it "matches when actual > (expected - tolerance)" do
16
+ BeCloseMatcher.new(5.0, 0.5).matches?(4.51).should == true
17
+ end
18
+
19
+ it "does not match when actual == (expected + tolerance)" do
20
+ BeCloseMatcher.new(5.0, 0.5).matches?(5.5).should == false
21
+ end
22
+
23
+ it "does not match when actual == (expected - tolerance)" do
24
+ BeCloseMatcher.new(5.0, 0.5).matches?(4.5).should == false
25
+ end
26
+
27
+ it "does not match when actual < (expected - tolerance)" do
28
+ BeCloseMatcher.new(5.0, 0.5).matches?(4.49).should == false
29
+ end
30
+
31
+ it "does not match when actual > (expected + tolerance)" do
32
+ BeCloseMatcher.new(5.0, 0.5).matches?(5.51).should == false
33
+ end
34
+
35
+ it "provides a useful failure message" do
36
+ matcher = BeCloseMatcher.new(5.0, 0.5)
37
+ matcher.matches?(5.51)
38
+ matcher.failure_message.should == ["Expected 5.0", "to be within +/- 0.5 of 5.51"]
39
+ end
40
+
41
+ it "provides a useful negative failure message" do
42
+ matcher = BeCloseMatcher.new(5.0, 0.5)
43
+ matcher.matches?(5.0)
44
+ matcher.negative_failure_message.should == ["Expected 5.0", "not to be within +/- 0.5 of 5.0"]
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers/be_empty'
4
+
5
+ describe BeEmptyMatcher do
6
+ it "matches when actual is empty" do
7
+ BeEmptyMatcher.new.matches?("").should == true
8
+ end
9
+
10
+ it "does not match when actual is not empty" do
11
+ BeEmptyMatcher.new.matches?([10]).should == false
12
+ end
13
+
14
+ it "provides a useful failure message" do
15
+ matcher = BeEmptyMatcher.new
16
+ matcher.matches?("not empty string")
17
+ matcher.failure_message.should == ["Expected \"not empty string\"", "to be empty"]
18
+ end
19
+
20
+ it "provides a useful negative failure message" do
21
+ matcher = BeEmptyMatcher.new
22
+ matcher.matches?("")
23
+ matcher.negative_failure_message.should == ["Expected \"\"", "not to be empty"]
24
+ end
25
+ end
26
+
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'mspec/expectations/expectations'
3
+ require 'mspec/matchers/be_false'
4
+
5
+ describe BeFalseMatcher do
6
+ it "matches when actual is false" do
7
+ BeFalseMatcher.new.matches?(false).should == true
8
+ end
9
+
10
+ it "does not match when actual is not false" do
11
+ BeFalseMatcher.new.matches?("").should == false
12
+ BeFalseMatcher.new.matches?(true).should == false
13
+ BeFalseMatcher.new.matches?(nil).should == false
14
+ BeFalseMatcher.new.matches?(0).should == false
15
+ end
16
+
17
+ it "provides a useful failure message" do
18
+ matcher = BeFalseMatcher.new
19
+ matcher.matches?("some string")
20
+ matcher.failure_message.should == ["Expected \"some string\"", "to be false"]
21
+ end
22
+
23
+ it "provides a useful negative failure message" do
24
+ matcher = BeFalseMatcher.new
25
+ matcher.matches?(false)
26
+ matcher.negative_failure_message.should == ["Expected false", "not to be false"]
27
+ end
28
+ end