rspec-expectations 2.8.0.rc2 → 2.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.
@@ -15,15 +15,15 @@ module RSpec
|
|
15
15
|
output = ""
|
16
16
|
diffs = Diff::LCS.diff(data_old, data_new)
|
17
17
|
return output if diffs.empty?
|
18
|
-
oldhunk = hunk = nil
|
18
|
+
oldhunk = hunk = nil
|
19
19
|
file_length_difference = 0
|
20
20
|
diffs.each do |piece|
|
21
21
|
begin
|
22
22
|
hunk = Diff::LCS::Hunk.new(
|
23
23
|
data_old, data_new, piece, context_lines, file_length_difference
|
24
24
|
)
|
25
|
-
file_length_difference = hunk.file_length_difference
|
26
|
-
next unless oldhunk
|
25
|
+
file_length_difference = hunk.file_length_difference
|
26
|
+
next unless oldhunk
|
27
27
|
# Hunks may overlap, which is why we need to be careful when our
|
28
28
|
# diff includes lines of context. Otherwise, we might print
|
29
29
|
# redundant lines.
|
@@ -36,14 +36,14 @@ module RSpec
|
|
36
36
|
oldhunk = hunk
|
37
37
|
output << "\n"
|
38
38
|
end
|
39
|
-
end
|
39
|
+
end
|
40
40
|
#Handle the last remaining hunk
|
41
41
|
output << oldhunk.diff(format) << "\n"
|
42
|
-
end
|
42
|
+
end
|
43
43
|
|
44
44
|
def diff_as_object(actual,expected)
|
45
|
-
actual =
|
46
|
-
expected =
|
45
|
+
actual = object_to_string(actual)
|
46
|
+
expected = object_to_string(expected)
|
47
47
|
diff_as_string(actual, expected)
|
48
48
|
end
|
49
49
|
|
@@ -56,7 +56,21 @@ module RSpec
|
|
56
56
|
def context_lines
|
57
57
|
3
|
58
58
|
end
|
59
|
+
|
60
|
+
def object_to_string(object)
|
61
|
+
case object
|
62
|
+
when Hash
|
63
|
+
object.keys.sort_by { |k| k.to_s }.map do |k|
|
64
|
+
%(#{PP.singleline_pp(k, "")} => #{PP.singleline_pp(object[k], "")})
|
65
|
+
end.join(",\n")
|
66
|
+
when String
|
67
|
+
object =~ /\n/ ? object : object.inspect
|
68
|
+
else
|
69
|
+
PP.pp(object,"")
|
70
|
+
end
|
71
|
+
end
|
59
72
|
end
|
60
73
|
|
61
74
|
end
|
62
75
|
end
|
76
|
+
|
data/lib/rspec/matchers/dsl.rb
CHANGED
@@ -56,7 +56,7 @@ EOD
|
|
56
56
|
expected = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'charlie', :width, 'quite wide' ]
|
57
57
|
actual = [ :foo, 'bar', :baz, 'quux', :metasyntactic, 'variable', :delta, 'tango' , :width, 'very wide' ]
|
58
58
|
|
59
|
-
expected_diff = <<
|
59
|
+
expected_diff = <<EOD
|
60
60
|
|
61
61
|
|
62
62
|
@@ -5,7 +5,7 @@
|
@@ -70,7 +70,6 @@ EOD
|
|
70
70
|
+ "quite wide"]
|
71
71
|
EOD
|
72
72
|
|
73
|
-
|
74
73
|
diff = @differ.diff_as_object(expected,actual)
|
75
74
|
diff.should == expected_diff
|
76
75
|
end
|
@@ -93,4 +92,53 @@ EOD
|
|
93
92
|
diff.should == expected_diff
|
94
93
|
end
|
95
94
|
|
95
|
+
it "outputs unified diff message of two hashes" do
|
96
|
+
expected = { :foo => 'bar', :baz => 'quux', :metasyntactic => 'variable', :delta => 'charlie', :width =>'quite wide' }
|
97
|
+
actual = { :foo => 'bar', :metasyntactic => 'variable', :delta => 'charlotte', :width =>'quite wide' }
|
98
|
+
|
99
|
+
expected_diff = <<'EOD'
|
100
|
+
|
101
|
+
@@ -1,4 +1,5 @@
|
102
|
+
-:delta => "charlotte",
|
103
|
+
+:baz => "quux",
|
104
|
+
+:delta => "charlie",
|
105
|
+
:foo => "bar",
|
106
|
+
:metasyntactic => "variable",
|
107
|
+
:width => "quite wide"
|
108
|
+
EOD
|
109
|
+
|
110
|
+
diff = @differ.diff_as_object(expected,actual)
|
111
|
+
diff.should == expected_diff
|
112
|
+
end
|
113
|
+
|
114
|
+
it "outputs unified diff of single line strings" do
|
115
|
+
expected = "this is one string"
|
116
|
+
actual = "this is another string"
|
117
|
+
|
118
|
+
expected_diff = <<EOD
|
119
|
+
|
120
|
+
@@ -1,2 +1,2 @@
|
121
|
+
-"this is another string"
|
122
|
+
+"this is one string"
|
123
|
+
EOD
|
124
|
+
|
125
|
+
diff = @differ.diff_as_object(expected,actual)
|
126
|
+
diff.should == expected_diff
|
127
|
+
end
|
128
|
+
|
129
|
+
it "outputs unified diff of multi line strings" do
|
130
|
+
expected = "this is:\n one string"
|
131
|
+
actual = "this is:\n another string"
|
132
|
+
|
133
|
+
expected_diff = <<EOD
|
134
|
+
|
135
|
+
@@ -1,3 +1,3 @@
|
136
|
+
this is:
|
137
|
+
- another string
|
138
|
+
+ one string
|
139
|
+
EOD
|
140
|
+
|
141
|
+
diff = @differ.diff_as_object(expected,actual)
|
142
|
+
diff.should == expected_diff
|
143
|
+
end
|
96
144
|
end
|
@@ -1,345 +1,351 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe "
|
4
|
-
|
5
|
-
|
6
|
-
"abc".should include("a")
|
7
|
-
end
|
8
|
-
|
9
|
-
it "fails if target does not include expected" do
|
10
|
-
lambda {
|
11
|
-
"abc".should include("d")
|
12
|
-
}.should fail_with("expected \"abc\" to include \"d\"")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context "for an array target" do
|
17
|
-
it "passes if target includes expected" do
|
18
|
-
[1,2,3].should include(3)
|
19
|
-
end
|
20
|
-
|
21
|
-
it "fails if target does not include expected" do
|
22
|
-
lambda {
|
23
|
-
[1,2,3].should include(4)
|
24
|
-
}.should fail_with("expected [1, 2, 3] to include 4")
|
25
|
-
end
|
3
|
+
describe "#include matcher" do
|
4
|
+
it "is diffable" do
|
5
|
+
include("a").should be_diffable
|
26
6
|
end
|
27
7
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
8
|
+
describe "should include(with_one_arg)" do
|
9
|
+
context "for a string target" do
|
10
|
+
it "passes if target includes expected" do
|
11
|
+
"abc".should include("a")
|
12
|
+
end
|
32
13
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
14
|
+
it "fails if target does not include expected" do
|
15
|
+
lambda {
|
16
|
+
"abc".should include("d")
|
17
|
+
}.should fail_matching("expected \"abc\" to include \"d\"")
|
18
|
+
end
|
37
19
|
end
|
38
|
-
end
|
39
|
-
end
|
40
20
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
end
|
46
|
-
context "for a string target" do
|
47
|
-
it "passes if target includes all items" do
|
48
|
-
"a string".should include("str", "a")
|
49
|
-
end
|
21
|
+
context "for an array target" do
|
22
|
+
it "passes if target includes expected" do
|
23
|
+
[1,2,3].should include(3)
|
24
|
+
end
|
50
25
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
26
|
+
it "fails if target does not include expected" do
|
27
|
+
lambda {
|
28
|
+
[1,2,3].should include(4)
|
29
|
+
}.should fail_matching("expected [1, 2, 3] to include 4")
|
30
|
+
end
|
55
31
|
end
|
56
|
-
end
|
57
32
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
33
|
+
context "for a hash target" do
|
34
|
+
it 'passes if target has the expected as a key' do
|
35
|
+
{:key => 'value'}.should include(:key)
|
36
|
+
end
|
62
37
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
38
|
+
it "fails if target does not include expected" do
|
39
|
+
lambda {
|
40
|
+
{:key => 'value'}.should include(:other)
|
41
|
+
}.should fail_matching(%Q|expected {:key=>"value"} to include :other|)
|
42
|
+
end
|
67
43
|
end
|
68
44
|
end
|
69
45
|
|
70
|
-
|
71
|
-
it
|
72
|
-
|
46
|
+
describe "should include(with, multiple, args)" do
|
47
|
+
it "has a description" do
|
48
|
+
matcher = include("a")
|
49
|
+
matcher.description.should eq("include \"a\"")
|
73
50
|
end
|
51
|
+
context "for a string target" do
|
52
|
+
it "passes if target includes all items" do
|
53
|
+
"a string".should include("str", "a")
|
54
|
+
end
|
74
55
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
56
|
+
it "fails if target does not include any one of the items" do
|
57
|
+
lambda {
|
58
|
+
"a string".should include("str", "a", "foo")
|
59
|
+
}.should fail_matching(%Q{expected "a string" to include "str", "a", and "foo"})
|
60
|
+
end
|
79
61
|
end
|
80
|
-
end
|
81
|
-
end
|
82
62
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
it "fails if target includes expected" do
|
90
|
-
lambda {
|
91
|
-
"abc".should_not include("c")
|
92
|
-
}.should fail_with("expected \"abc\" not to include \"c\"")
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
context "for an array target" do
|
97
|
-
it "passes if target does not include expected" do
|
98
|
-
[1,2,3].should_not include(4)
|
99
|
-
end
|
100
|
-
|
101
|
-
it "fails if target includes expected" do
|
102
|
-
lambda {
|
103
|
-
[1,2,3].should_not include(3)
|
104
|
-
}.should fail_with("expected [1, 2, 3] not to include 3")
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
context "for a hash target" do
|
109
|
-
it 'passes if target does not have the expected as a key' do
|
110
|
-
{:other => 'value'}.should_not include(:key)
|
111
|
-
end
|
112
|
-
|
113
|
-
it "fails if target includes expected key" do
|
114
|
-
lambda {
|
115
|
-
{:key => 'value'}.should_not include(:key)
|
116
|
-
}.should fail_matching(%Q|expected {:key=>"value"} not to include :key|)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
end
|
121
|
-
|
122
|
-
describe "should_not include(with, multiple, args)" do
|
123
|
-
context "for a string target" do
|
124
|
-
it "passes if the target does not include any of the expected" do
|
125
|
-
"abc".should_not include("d", "e", "f")
|
126
|
-
end
|
127
|
-
|
128
|
-
it "fails if the target includes all of the expected" do
|
129
|
-
expect {
|
130
|
-
"abc".should_not include("c", "a")
|
131
|
-
}.to fail_with(%q{expected "abc" not to include "c" and "a"})
|
132
|
-
end
|
133
|
-
|
134
|
-
it "fails if the target includes some (but not all) of the expected" do
|
135
|
-
expect {
|
136
|
-
"abc".should_not include("d", "a")
|
137
|
-
}.to fail_with(%q{expected "abc" not to include "d" and "a"})
|
138
|
-
end
|
139
|
-
end
|
63
|
+
context "for an array target" do
|
64
|
+
it "passes if target includes all items" do
|
65
|
+
[1,2,3].should include(1,2,3)
|
66
|
+
end
|
140
67
|
|
141
|
-
|
142
|
-
|
143
|
-
|
68
|
+
it "fails if target does not include any one of the items" do
|
69
|
+
lambda {
|
70
|
+
[1,2,3].should include(1,2,4)
|
71
|
+
}.should fail_matching("expected [1, 2, 3] to include 1, 2, and 4")
|
72
|
+
end
|
144
73
|
end
|
145
74
|
|
146
|
-
|
147
|
-
|
148
|
-
{
|
149
|
-
|
150
|
-
end
|
75
|
+
context "for a hash target" do
|
76
|
+
it 'passes if target includes all items as keys' do
|
77
|
+
{:key => 'value', :other => 'value'}.should include(:key, :other)
|
78
|
+
end
|
151
79
|
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
80
|
+
it 'fails if target is missing any item as a key' do
|
81
|
+
lambda {
|
82
|
+
{:key => 'value'}.should include(:key, :other)
|
83
|
+
}.should fail_matching(%Q|expected {:key=>"value"} to include :key and :other|)
|
84
|
+
end
|
156
85
|
end
|
157
86
|
end
|
158
87
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
88
|
+
describe "should_not include(expected)" do
|
89
|
+
context "for a string target" do
|
90
|
+
it "passes if target does not include expected" do
|
91
|
+
"abc".should_not include("d")
|
92
|
+
end
|
163
93
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
94
|
+
it "fails if target includes expected" do
|
95
|
+
lambda {
|
96
|
+
"abc".should_not include("c")
|
97
|
+
}.should fail_with("expected \"abc\" not to include \"c\"")
|
98
|
+
end
|
168
99
|
end
|
169
100
|
|
170
|
-
|
171
|
-
|
172
|
-
[1,
|
173
|
-
|
174
|
-
end
|
175
|
-
end
|
176
|
-
end
|
101
|
+
context "for an array target" do
|
102
|
+
it "passes if target does not include expected" do
|
103
|
+
[1,2,3].should_not include(4)
|
104
|
+
end
|
177
105
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
106
|
+
it "fails if target includes expected" do
|
107
|
+
lambda {
|
108
|
+
[1,2,3].should_not include(3)
|
109
|
+
}.should fail_with("expected [1, 2, 3] not to include 3")
|
110
|
+
end
|
182
111
|
end
|
183
112
|
|
184
|
-
|
185
|
-
|
186
|
-
|
113
|
+
context "for a hash target" do
|
114
|
+
it 'passes if target does not have the expected as a key' do
|
115
|
+
{:other => 'value'}.should_not include(:key)
|
116
|
+
end
|
187
117
|
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
118
|
+
it "fails if target includes expected key" do
|
119
|
+
lambda {
|
120
|
+
{:key => 'value'}.should_not include(:key)
|
121
|
+
}.should fail_matching(%Q|expected {:key=>"value"} not to include :key|)
|
122
|
+
end
|
192
123
|
end
|
193
124
|
|
194
|
-
it "fails if target has a different key" do
|
195
|
-
lambda {
|
196
|
-
{:other => 'value'}.should include(:key => 'value')
|
197
|
-
}.should fail_matching(%Q|expected {:other=>"value"} to include {:key=>"value"}|)
|
198
|
-
end
|
199
125
|
end
|
200
126
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
127
|
+
describe "should_not include(with, multiple, args)" do
|
128
|
+
context "for a string target" do
|
129
|
+
it "passes if the target does not include any of the expected" do
|
130
|
+
"abc".should_not include("d", "e", "f")
|
131
|
+
end
|
132
|
+
|
133
|
+
it "fails if the target includes all of the expected" do
|
134
|
+
expect {
|
135
|
+
"abc".should_not include("c", "a")
|
136
|
+
}.to fail_with(%q{expected "abc" not to include "c" and "a"})
|
137
|
+
end
|
138
|
+
|
139
|
+
it "fails if the target includes some (but not all) of the expected" do
|
140
|
+
expect {
|
141
|
+
"abc".should_not include("d", "a")
|
142
|
+
}.to fail_with(%q{expected "abc" not to include "d" and "a"})
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context "for a hash target" do
|
147
|
+
it "passes if it does not include any of the expected keys" do
|
148
|
+
{ :a => 1, :b => 2 }.should_not include(:c, :d)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "fails if the target includes all of the expected keys" do
|
152
|
+
expect {
|
153
|
+
{ :a => 1, :b => 2 }.should_not include(:a, :b)
|
154
|
+
}.to fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include :a and :b|)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "fails if the target includes some (but not all) of the expected keys" do
|
158
|
+
expect {
|
159
|
+
{ :a => 1, :b => 2 }.should_not include(:d, :b)
|
160
|
+
}.to fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include :d and :b|)
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
context "for an array target" do
|
165
|
+
it "passes if the target does not include any of the expected" do
|
166
|
+
[1, 2, 3].should_not include(4, 5, 6)
|
167
|
+
end
|
168
|
+
|
169
|
+
it "fails if the target includes all of the expected" do
|
170
|
+
expect {
|
171
|
+
[1, 2, 3].should_not include(3, 1)
|
172
|
+
}.to fail_with(%q{expected [1, 2, 3] not to include 3 and 1})
|
173
|
+
end
|
174
|
+
|
175
|
+
it "fails if the target includes some (but not all) of the expected" do
|
176
|
+
expect {
|
177
|
+
[1, 2, 3].should_not include(4, 1)
|
178
|
+
}.to fail_with(%q{expected [1, 2, 3] not to include 4 and 1})
|
179
|
+
end
|
210
180
|
end
|
211
181
|
end
|
212
|
-
end
|
213
182
|
|
214
|
-
describe "
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
}.should fail_matching(%Q|expected {:key=>"value"} not to include {:key=>"value"}|)
|
220
|
-
end
|
183
|
+
describe "should include(:key => value)" do
|
184
|
+
context 'for a hash target' do
|
185
|
+
it "passes if target includes the key/value pair" do
|
186
|
+
{:key => 'value'}.should include(:key => 'value')
|
187
|
+
end
|
221
188
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
}.should fail_matching(%Q|expected #{{:key=>"value", :other=>"different"}.inspect} not to include {:key=>"value"}|)
|
226
|
-
end
|
189
|
+
it "passes if target includes the key/value pair among others" do
|
190
|
+
{:key => 'value', :other => 'different'}.should include(:key => 'value')
|
191
|
+
end
|
227
192
|
|
228
|
-
|
229
|
-
|
230
|
-
|
193
|
+
it "fails if target has a different value for key" do
|
194
|
+
lambda {
|
195
|
+
{:key => 'different'}.should include(:key => 'value')
|
196
|
+
}.should fail_matching(%Q|expected {:key=>"different"} to include {:key=>"value"}|)
|
197
|
+
end
|
231
198
|
|
232
|
-
|
233
|
-
|
199
|
+
it "fails if target has a different key" do
|
200
|
+
lambda {
|
201
|
+
{:other => 'value'}.should include(:key => 'value')
|
202
|
+
}.should fail_matching(%Q|expected {:other=>"value"} to include {:key=>"value"}|)
|
203
|
+
end
|
234
204
|
end
|
235
|
-
end
|
236
205
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
206
|
+
context 'for a non-hash target' do
|
207
|
+
it "fails if the target does not contain the given hash" do
|
208
|
+
lambda {
|
209
|
+
['a', 'b'].should include(:key => 'value')
|
210
|
+
}.should fail_matching(%q|expected ["a", "b"] to include {:key=>"value"}|)
|
211
|
+
end
|
241
212
|
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
}.should fail_matching(%Q|expected ["a", {:key=>"value"}] not to include {:key=>"value"}|)
|
213
|
+
it "passes if the target contains the given hash" do
|
214
|
+
['a', { :key => 'value' } ].should include(:key => 'value')
|
215
|
+
end
|
246
216
|
end
|
247
217
|
end
|
248
|
-
end
|
249
218
|
|
250
|
-
describe "
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
219
|
+
describe "should_not include(:key => value)" do
|
220
|
+
context 'for a hash target' do
|
221
|
+
it "fails if target includes the key/value pair" do
|
222
|
+
lambda {
|
223
|
+
{:key => 'value'}.should_not include(:key => 'value')
|
224
|
+
}.should fail_matching(%Q|expected {:key=>"value"} not to include {:key=>"value"}|)
|
225
|
+
end
|
255
226
|
|
256
|
-
|
257
|
-
|
258
|
-
|
227
|
+
it "fails if target includes the key/value pair among others" do
|
228
|
+
lambda {
|
229
|
+
{:key => 'value', :other => 'different'}.should_not include(:key => 'value')
|
230
|
+
}.should fail_matching(%Q|expected #{{:key=>"value", :other=>"different"}.inspect} not to include {:key=>"value"}|)
|
231
|
+
end
|
259
232
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} to include #{{:a=>2, :b=>2}.inspect}|)
|
264
|
-
end
|
233
|
+
it "passes if target has a different value for key" do
|
234
|
+
{:key => 'different'}.should_not include(:key => 'value')
|
235
|
+
end
|
265
236
|
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} to include #{{:a=>2, :b=>2}.inspect}|)
|
237
|
+
it "passes if target has a different key" do
|
238
|
+
{:other => 'value'}.should_not include(:key => 'value')
|
239
|
+
end
|
270
240
|
end
|
271
241
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
end
|
242
|
+
context "for a non-hash target" do
|
243
|
+
it "passes if the target does not contain the given hash" do
|
244
|
+
['a', 'b'].should_not include(:key => 'value')
|
245
|
+
end
|
277
246
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
247
|
+
it "fails if the target contains the given hash" do
|
248
|
+
lambda {
|
249
|
+
['a', { :key => 'value' } ].should_not include(:key => 'value')
|
250
|
+
}.should fail_matching(%Q|expected ["a", {:key=>"value"}] not to include {:key=>"value"}|)
|
251
|
+
end
|
282
252
|
end
|
283
253
|
end
|
284
254
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
255
|
+
describe "should include(:key1 => value1, :key2 => value2)" do
|
256
|
+
context 'for a hash target' do
|
257
|
+
it "passes if target includes the key/value pairs" do
|
258
|
+
{:a => 1, :b => 2}.should include(:b => 2, :a => 1)
|
259
|
+
end
|
260
|
+
|
261
|
+
it "passes if target includes the key/value pairs among others" do
|
262
|
+
{:a => 1, :c => 3, :b => 2}.should include(:b => 2, :a => 1)
|
263
|
+
end
|
264
|
+
|
265
|
+
it "fails if target has a different value for one of the keys" do
|
266
|
+
lambda {
|
267
|
+
{:a => 1, :b => 2}.should include(:a => 2, :b => 2)
|
268
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} to include #{{:a=>2, :b=>2}.inspect}|)
|
269
|
+
end
|
270
|
+
|
271
|
+
it "fails if target has a different value for both of the keys" do
|
272
|
+
lambda {
|
273
|
+
{:a => 1, :b => 1}.should include(:a => 2, :b => 2)
|
274
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} to include #{{:a=>2, :b=>2}.inspect}|)
|
275
|
+
end
|
276
|
+
|
277
|
+
it "fails if target lacks one of the keys" do
|
278
|
+
lambda {
|
279
|
+
{:a => 1, :b => 1}.should include(:a => 1, :c => 1)
|
280
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} to include #{{:a=>1, :c=>1}.inspect}|)
|
281
|
+
end
|
282
|
+
|
283
|
+
it "fails if target lacks both of the keys" do
|
284
|
+
lambda {
|
285
|
+
{:a => 1, :b => 1}.should include(:c => 1, :d => 1)
|
286
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} to include #{{:c=>1, :d=>1}.inspect}|)
|
287
|
+
end
|
288
|
+
end
|
289
|
+
|
290
|
+
context 'for a non-hash target' do
|
291
|
+
it "fails if the target does not contain the given hash" do
|
292
|
+
lambda {
|
293
|
+
['a', 'b'].should include(:a => 1, :b => 1)
|
294
|
+
}.should fail_matching(%Q|expected ["a", "b"] to include #{{:a=>1, :b=>1}.inspect}|)
|
295
|
+
end
|
296
|
+
|
297
|
+
it "passes if the target contains the given hash" do
|
298
|
+
['a', { :a => 1, :b => 2 } ].should include(:a => 1, :b => 2)
|
299
|
+
end
|
294
300
|
end
|
295
301
|
end
|
296
|
-
end
|
297
|
-
|
298
|
-
describe "should_not include(:key1 => value1, :key2 => value2)" do
|
299
|
-
context 'for a hash target' do
|
300
|
-
it "fails if target includes the key/value pairs" do
|
301
|
-
lambda {
|
302
|
-
{:a => 1, :b => 2}.should_not include(:a => 1, :b => 2)
|
303
|
-
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include #{{:a=>1, :b=>2}.inspect}|)
|
304
|
-
end
|
305
|
-
|
306
|
-
it "fails if target includes the key/value pairs among others" do
|
307
|
-
hash = {:a => 1, :b => 2, :c => 3}
|
308
|
-
lambda {
|
309
|
-
hash.should_not include(:a => 1, :b => 2)
|
310
|
-
}.should fail_matching(%Q|expected #{hash.inspect} not to include #{{:a=>1, :b=>2}.inspect}|)
|
311
|
-
end
|
312
|
-
|
313
|
-
it "fails if target has a different value for one of the keys" do
|
314
|
-
lambda {
|
315
|
-
{:a => 1, :b => 2}.should_not include(:a => 2, :b => 2)
|
316
|
-
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include #{{:a=>2, :b=>2}.inspect}|)
|
317
|
-
end
|
318
|
-
|
319
|
-
it "passes if target has a different value for both of the keys" do
|
320
|
-
{:a => 1, :b => 1}.should_not include(:a => 2, :b => 2)
|
321
|
-
end
|
322
|
-
|
323
|
-
it "fails if target lacks one of the keys" do
|
324
|
-
lambda {
|
325
|
-
{:a => 1, :b => 1}.should_not include(:a => 1, :c => 1)
|
326
|
-
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} not to include #{{:a=>1, :c=>1}.inspect}|)
|
327
|
-
end
|
328
|
-
|
329
|
-
it "passes if target lacks both of the keys" do
|
330
|
-
{:a => 1, :b => 1}.should_not include(:c => 1, :d => 1)
|
331
|
-
end
|
332
|
-
end
|
333
|
-
|
334
|
-
context 'for a non-hash target' do
|
335
|
-
it "passes if the target does not contain the given hash" do
|
336
|
-
['a', 'b'].should_not include(:a => 1, :b => 1)
|
337
|
-
end
|
338
302
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
303
|
+
describe "should_not include(:key1 => value1, :key2 => value2)" do
|
304
|
+
context 'for a hash target' do
|
305
|
+
it "fails if target includes the key/value pairs" do
|
306
|
+
lambda {
|
307
|
+
{:a => 1, :b => 2}.should_not include(:a => 1, :b => 2)
|
308
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include #{{:a=>1, :b=>2}.inspect}|)
|
309
|
+
end
|
310
|
+
|
311
|
+
it "fails if target includes the key/value pairs among others" do
|
312
|
+
hash = {:a => 1, :b => 2, :c => 3}
|
313
|
+
lambda {
|
314
|
+
hash.should_not include(:a => 1, :b => 2)
|
315
|
+
}.should fail_matching(%Q|expected #{hash.inspect} not to include #{{:a=>1, :b=>2}.inspect}|)
|
316
|
+
end
|
317
|
+
|
318
|
+
it "fails if target has a different value for one of the keys" do
|
319
|
+
lambda {
|
320
|
+
{:a => 1, :b => 2}.should_not include(:a => 2, :b => 2)
|
321
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>2}.inspect} not to include #{{:a=>2, :b=>2}.inspect}|)
|
322
|
+
end
|
323
|
+
|
324
|
+
it "passes if target has a different value for both of the keys" do
|
325
|
+
{:a => 1, :b => 1}.should_not include(:a => 2, :b => 2)
|
326
|
+
end
|
327
|
+
|
328
|
+
it "fails if target lacks one of the keys" do
|
329
|
+
lambda {
|
330
|
+
{:a => 1, :b => 1}.should_not include(:a => 1, :c => 1)
|
331
|
+
}.should fail_matching(%Q|expected #{{:a=>1, :b=>1}.inspect} not to include #{{:a=>1, :c=>1}.inspect}|)
|
332
|
+
end
|
333
|
+
|
334
|
+
it "passes if target lacks both of the keys" do
|
335
|
+
{:a => 1, :b => 1}.should_not include(:c => 1, :d => 1)
|
336
|
+
end
|
337
|
+
end
|
338
|
+
|
339
|
+
context 'for a non-hash target' do
|
340
|
+
it "passes if the target does not contain the given hash" do
|
341
|
+
['a', 'b'].should_not include(:a => 1, :b => 1)
|
342
|
+
end
|
343
|
+
|
344
|
+
it "fails if the target contains the given hash" do
|
345
|
+
lambda {
|
346
|
+
['a', { :a => 1, :b => 2 } ].should_not include(:a => 1, :b => 2)
|
347
|
+
}.should fail_matching(%Q|expected #{["a", {:a=>1, :b=>2}].inspect} not to include #{{:a=>1, :b=>2}.inspect}|)
|
348
|
+
end
|
343
349
|
end
|
344
350
|
end
|
345
351
|
end
|
metadata
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-expectations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 47
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 8
|
9
9
|
- 0
|
10
|
-
|
11
|
-
- 2
|
12
|
-
version: 2.8.0.rc2
|
10
|
+
version: 2.8.0
|
13
11
|
platform: ruby
|
14
12
|
authors:
|
15
13
|
- Steven Baker
|
@@ -18,7 +16,7 @@ autorequire:
|
|
18
16
|
bindir: bin
|
19
17
|
cert_chain: []
|
20
18
|
|
21
|
-
date:
|
19
|
+
date: 2012-01-05 00:00:00 Z
|
22
20
|
dependencies:
|
23
21
|
- !ruby/object:Gem::Dependency
|
24
22
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
@@ -178,21 +176,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
178
176
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
177
|
none: false
|
180
178
|
requirements:
|
181
|
-
- - "
|
179
|
+
- - ">="
|
182
180
|
- !ruby/object:Gem::Version
|
183
|
-
hash:
|
181
|
+
hash: 3
|
184
182
|
segments:
|
185
|
-
-
|
186
|
-
|
187
|
-
- 1
|
188
|
-
version: 1.3.1
|
183
|
+
- 0
|
184
|
+
version: "0"
|
189
185
|
requirements: []
|
190
186
|
|
191
187
|
rubyforge_project: rspec
|
192
188
|
rubygems_version: 1.8.11
|
193
189
|
signing_key:
|
194
190
|
specification_version: 3
|
195
|
-
summary: rspec-expectations-2.8.0
|
191
|
+
summary: rspec-expectations-2.8.0
|
196
192
|
test_files:
|
197
193
|
- features/README.markdown
|
198
194
|
- features/Upgrade.md
|