awesome_print 1.2.0 → 1.6.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.
@@ -11,52 +11,52 @@ describe "Single method" do
11
11
 
12
12
  it "plain: should handle a method with no arguments" do
13
13
  method = ''.method(:upcase)
14
- method.ai(:plain => true).should == 'String#upcase()'
14
+ expect(method.ai(:plain => true)).to eq('String#upcase()')
15
15
  end
16
16
 
17
17
  it "color: should handle a method with no arguments" do
18
18
  method = ''.method(:upcase)
19
- method.ai.should == "\e[1;33mString\e[0m#\e[0;35mupcase\e[0m\e[0;37m()\e[0m"
19
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35mupcase\e[0m\e[0;37m()\e[0m")
20
20
  end
21
21
 
22
22
  it "plain: should handle a method with one argument" do
23
23
  method = ''.method(:include?)
24
- method.ai(:plain => true).should == 'String#include?(arg1)'
24
+ expect(method.ai(:plain => true)).to eq('String#include?(arg1)')
25
25
  end
26
26
 
27
27
  it "color: should handle a method with one argument" do
28
28
  method = ''.method(:include?)
29
- method.ai.should == "\e[1;33mString\e[0m#\e[0;35minclude?\e[0m\e[0;37m(arg1)\e[0m"
29
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35minclude?\e[0m\e[0;37m(arg1)\e[0m")
30
30
  end
31
31
 
32
32
  it "plain: should handle a method with two arguments" do
33
33
  method = ''.method(:tr)
34
- method.ai(:plain => true).should == 'String#tr(arg1, arg2)'
34
+ expect(method.ai(:plain => true)).to eq('String#tr(arg1, arg2)')
35
35
  end
36
36
 
37
37
  it "color: should handle a method with two arguments" do
38
38
  method = ''.method(:tr)
39
- method.ai.should == "\e[1;33mString\e[0m#\e[0;35mtr\e[0m\e[0;37m(arg1, arg2)\e[0m"
39
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35mtr\e[0m\e[0;37m(arg1, arg2)\e[0m")
40
40
  end
41
41
 
42
42
  it "plain: should handle a method with multiple arguments" do
43
43
  method = ''.method(:split)
44
- method.ai(:plain => true).should == 'String#split(*arg1)'
44
+ expect(method.ai(:plain => true)).to eq('String#split(*arg1)')
45
45
  end
46
46
 
47
47
  it "color: should handle a method with multiple arguments" do
48
48
  method = ''.method(:split)
49
- method.ai.should == "\e[1;33mString\e[0m#\e[0;35msplit\e[0m\e[0;37m(*arg1)\e[0m"
49
+ expect(method.ai).to eq("\e[1;33mString\e[0m#\e[0;35msplit\e[0m\e[0;37m(*arg1)\e[0m")
50
50
  end
51
51
 
52
52
  it "plain: should handle a method defined in mixin" do
53
53
  method = ''.method(:is_a?)
54
- method.ai(:plain => true).should == 'String (Kernel)#is_a?(arg1)'
54
+ expect(method.ai(:plain => true)).to eq('String (Kernel)#is_a?(arg1)')
55
55
  end
56
56
 
57
57
  it "color: should handle a method defined in mixin" do
58
58
  method = ''.method(:is_a?)
59
- method.ai.should == "\e[1;33mString (Kernel)\e[0m#\e[0;35mis_a?\e[0m\e[0;37m(arg1)\e[0m"
59
+ expect(method.ai).to eq("\e[1;33mString (Kernel)\e[0m#\e[0;35mis_a?\e[0m\e[0;37m(arg1)\e[0m")
60
60
  end
61
61
 
62
62
  it "plain: should handle an unbound method" do
@@ -64,7 +64,7 @@ describe "Single method" do
64
64
  def world; end
65
65
  end
66
66
  method = Hello.instance_method(:world)
67
- method.ai(:plain => true).should == 'Hello (unbound)#world()'
67
+ expect(method.ai(:plain => true)).to eq('Hello (unbound)#world()')
68
68
  end
69
69
 
70
70
  it "color: should handle an unbound method" do
@@ -73,9 +73,9 @@ describe "Single method" do
73
73
  end
74
74
  method = Hello.instance_method(:world)
75
75
  if RUBY_VERSION < '1.9.2'
76
- method.ai.should == "\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(arg1, arg2)\e[0m"
76
+ expect(method.ai).to eq("\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(arg1, arg2)\e[0m")
77
77
  else
78
- method.ai.should == "\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(a, b)\e[0m"
78
+ expect(method.ai).to eq("\e[1;33mHello (unbound)\e[0m#\e[0;35mworld\e[0m\e[0;37m(a, b)\e[0m")
79
79
  end
80
80
  end
81
81
  end
@@ -92,36 +92,36 @@ describe "Object methods" do
92
92
  describe "object.methods" do
93
93
  it "index: should handle object.methods" do
94
94
  out = nil.methods.ai(:plain => true).split("\n").grep(/is_a\?/).first
95
- out.should =~ /^\s+\[\s*\d+\]\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/
95
+ expect(out).to match(/^\s+\[\s*\d+\]\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/)
96
96
  end
97
97
 
98
98
  it "no index: should handle object.methods" do
99
99
  out = nil.methods.ai(:plain => true, :index => false).split("\n").grep(/is_a\?/).first
100
- out.should =~ /^\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/
100
+ expect(out).to match(/^\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/)
101
101
  end
102
102
  end
103
103
 
104
104
  describe "object.public_methods" do
105
105
  it "index: should handle object.public_methods" do
106
106
  out = nil.public_methods.ai(:plain => true).split("\n").grep(/is_a\?/).first
107
- out.should =~ /^\s+\[\s*\d+\]\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/
107
+ expect(out).to match(/^\s+\[\s*\d+\]\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/)
108
108
  end
109
109
 
110
110
  it "no index: should handle object.public_methods" do
111
111
  out = nil.public_methods.ai(:plain => true, :index => false).split("\n").grep(/is_a\?/).first
112
- out.should =~ /^\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/
112
+ expect(out).to match(/^\s+is_a\?\(arg1\)\s+NilClass \(Kernel\)$/)
113
113
  end
114
114
  end
115
115
 
116
116
  describe "object.private_methods" do
117
117
  it "index: should handle object.private_methods" do
118
118
  out = nil.private_methods.ai(:plain => true).split("\n").grep(/sleep/).first
119
- out.should =~ /^\s+\[\s*\d+\]\s+sleep\(\*arg1\)\s+NilClass \(Kernel\)$/
119
+ expect(out).to match(/^\s+\[\s*\d+\]\s+sleep\(\*arg1\)\s+NilClass \(Kernel\)$/)
120
120
  end
121
121
 
122
122
  it "no index: should handle object.private_methods" do
123
123
  out = nil.private_methods.ai(:plain => true, :index => false).split("\n").grep(/sleep/).first
124
- out.should =~ /^\s+sleep\(\*arg1\)\s+NilClass \(Kernel\)$/
124
+ expect(out).to match(/^\s+sleep\(\*arg1\)\s+NilClass \(Kernel\)$/)
125
125
  end
126
126
  end
127
127
 
@@ -132,7 +132,7 @@ describe "Object methods" do
132
132
  def m1; end
133
133
  def m2; end
134
134
  end
135
- Hello.new.protected_methods.ai(:plain => true).should == "[\n [0] m1() Hello\n [1] m2() Hello\n]"
135
+ expect(Hello.new.protected_methods.ai(:plain => true)).to eq("[\n [0] m1() Hello\n [1] m2() Hello\n]")
136
136
  end
137
137
 
138
138
  it "no index: should handle object.protected_methods" do
@@ -141,9 +141,9 @@ describe "Object methods" do
141
141
  def m3(a,b); end
142
142
  end
143
143
  if RUBY_VERSION < '1.9.2'
144
- Hello.new.protected_methods.ai(:plain => true, :index => false).should == "[\n m3(arg1, arg2) Hello\n]"
144
+ expect(Hello.new.protected_methods.ai(:plain => true, :index => false)).to eq("[\n m3(arg1, arg2) Hello\n]")
145
145
  else
146
- Hello.new.protected_methods.ai(:plain => true, :index => false).should == "[\n m3(a, b) Hello\n]"
146
+ expect(Hello.new.protected_methods.ai(:plain => true, :index => false)).to eq("[\n m3(a, b) Hello\n]")
147
147
  end
148
148
  end
149
149
  end
@@ -157,8 +157,8 @@ describe "Object methods" do
157
157
  end
158
158
 
159
159
  out = Hello.new.private_methods.ai(:plain => true).split("\n").grep(/m\d/)
160
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/
161
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/
160
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/)
161
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/)
162
162
  end
163
163
 
164
164
  it "no index: should handle object.private_methods" do
@@ -168,9 +168,9 @@ describe "Object methods" do
168
168
  end
169
169
  out = Hello.new.private_methods.ai(:plain => true).split("\n").grep(/m\d/)
170
170
  if RUBY_VERSION < '1.9.2'
171
- out.first.should =~ /^\s+\[\s*\d+\]\s+m3\(arg1, arg2\)\s+Hello$/
171
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m3\(arg1, arg2\)\s+Hello$/)
172
172
  else
173
- out.first.should =~ /^\s+\[\s*\d+\]\s+m3\(a, b\)\s+Hello$/
173
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m3\(a, b\)\s+Hello$/)
174
174
  end
175
175
  end
176
176
  end
@@ -184,8 +184,8 @@ describe "Object methods" do
184
184
  end
185
185
  end
186
186
  out = Hello.singleton_methods.ai(:plain => true).split("\n").grep(/m\d/)
187
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/
188
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/
187
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/)
188
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello$/)
189
189
  end
190
190
 
191
191
  it "no index: should handle object.singleton_methods" do
@@ -194,9 +194,9 @@ describe "Object methods" do
194
194
  end
195
195
  out = Hello.singleton_methods.ai(:plain => true, :index => false).split("\n").grep(/m\d/)
196
196
  if RUBY_VERSION < '1.9.2'
197
- out.first.should =~ /^\s+m3\(arg1, arg2\)\s+Hello$/
197
+ expect(out.first).to match(/^\s+m3\(arg1, arg2\)\s+Hello$/)
198
198
  else
199
- out.first.should =~ /^\s+m3\(a, b\)\s+Hello$/
199
+ expect(out.first).to match(/^\s+m3\(a, b\)\s+Hello$/)
200
200
  end
201
201
  end
202
202
  end
@@ -218,8 +218,8 @@ describe "Class methods" do
218
218
  def m2; end
219
219
  end
220
220
  out = Hello.instance_methods.ai(:plain => true).split("\n").grep(/m\d/)
221
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
222
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
221
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/)
222
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/)
223
223
  end
224
224
 
225
225
  it "no index: should handle unbound class.instance_methods" do
@@ -228,9 +228,9 @@ describe "Class methods" do
228
228
  end
229
229
  out = Hello.instance_methods.ai(:plain => true, :index => false).split("\n").grep(/m\d/)
230
230
  if RUBY_VERSION < '1.9.2'
231
- out.first.should =~ /^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/
231
+ expect(out.first).to match(/^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/)
232
232
  else
233
- out.first.should =~ /^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/
233
+ expect(out.first).to match(/^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/)
234
234
  end
235
235
  end
236
236
  end
@@ -242,8 +242,8 @@ describe "Class methods" do
242
242
  def m2; end
243
243
  end
244
244
  out = Hello.public_instance_methods.ai(:plain => true).split("\n").grep(/m\d/)
245
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
246
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
245
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/)
246
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/)
247
247
  end
248
248
 
249
249
  it "no index: should handle class.public_instance_methods" do
@@ -252,9 +252,9 @@ describe "Class methods" do
252
252
  end
253
253
  out = Hello.public_instance_methods.ai(:plain => true, :index => false).split("\n").grep(/m\d/)
254
254
  if RUBY_VERSION < '1.9.2'
255
- out.first.should =~ /^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/
255
+ expect(out.first).to match(/^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/)
256
256
  else
257
- out.first.should =~ /^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/
257
+ expect(out.first).to match(/^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/)
258
258
  end
259
259
  end
260
260
  end
@@ -267,8 +267,8 @@ describe "Class methods" do
267
267
  def m2; end
268
268
  end
269
269
  out = Hello.protected_instance_methods.ai(:plain => true).split("\n").grep(/m\d/)
270
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
271
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
270
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/)
271
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/)
272
272
  end
273
273
 
274
274
  it "no index: should handle class.protected_instance_methods" do
@@ -278,9 +278,9 @@ describe "Class methods" do
278
278
  end
279
279
  out = Hello.protected_instance_methods.ai(:plain => true, :index => false).split("\n").grep(/m\d/)
280
280
  if RUBY_VERSION < '1.9.2'
281
- out.first.should =~ /^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/
281
+ expect(out.first).to match(/^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/)
282
282
  else
283
- out.first.should =~ /^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/
283
+ expect(out.first).to match(/^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/)
284
284
  end
285
285
  end
286
286
  end
@@ -293,8 +293,8 @@ describe "Class methods" do
293
293
  def m2; end
294
294
  end
295
295
  out = Hello.private_instance_methods.ai(:plain => true).split("\n").grep(/m\d/)
296
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/
297
- out.last.should =~ /^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/
296
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello\s\(unbound\)$/)
297
+ expect(out.last).to match(/^\s+\[\s*\d+\]\s+m2\(\)\s+Hello\s\(unbound\)$/)
298
298
  end
299
299
 
300
300
  it "no index: should handle class.private_instance_methods" do
@@ -304,9 +304,9 @@ describe "Class methods" do
304
304
  end
305
305
  out = Hello.private_instance_methods.ai(:plain => true, :index => false).split("\n").grep(/m\d/)
306
306
  if RUBY_VERSION < '1.9.2'
307
- out.first.should =~ /^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/
307
+ expect(out.first).to match(/^\s+m3\(arg1, arg2\)\s+Hello\s\(unbound\)$/)
308
308
  else
309
- out.first.should =~ /^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/
309
+ expect(out.first).to match(/^\s+m3\(a, b\)\s+Hello\s\(unbound\)$/)
310
310
  end
311
311
  end
312
312
  end
@@ -327,7 +327,7 @@ if RUBY_VERSION >= '1.9.2'
327
327
  def m1; end
328
328
  end
329
329
  out = Hello.new.methods.ai(:plain => true).split("\n").grep(/m1/)
330
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/
330
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\)\s+Hello$/)
331
331
  end
332
332
 
333
333
  it ":req" do
@@ -335,7 +335,7 @@ if RUBY_VERSION >= '1.9.2'
335
335
  def m1(a, b, c); end
336
336
  end
337
337
  out = Hello.new.methods.ai(:plain => true).split("\n").grep(/m1/)
338
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(a, b, c\)\s+Hello$/
338
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(a, b, c\)\s+Hello$/)
339
339
  end
340
340
 
341
341
  it ":opt" do
@@ -343,7 +343,7 @@ if RUBY_VERSION >= '1.9.2'
343
343
  def m1(a, b = 1, c = 2); end # m1(a, *b, *c)
344
344
  end
345
345
  out = Hello.new.methods.ai(:plain => true).split("\n").grep(/m1/)
346
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(a, \*b, \*c\)\s+Hello$/
346
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(a, \*b, \*c\)\s+Hello$/)
347
347
  end
348
348
 
349
349
  it ":rest" do
@@ -351,7 +351,7 @@ if RUBY_VERSION >= '1.9.2'
351
351
  def m1(*a); end # m1(*a)
352
352
  end
353
353
  out = Hello.new.methods.ai(:plain => true).split("\n").grep(/m1/)
354
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(\*a\)\s+Hello$/
354
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(\*a\)\s+Hello$/)
355
355
  end
356
356
 
357
357
  it ":block" do
@@ -359,7 +359,7 @@ if RUBY_VERSION >= '1.9.2'
359
359
  def m1(a, b = nil, &blk); end # m1(a, *b, &blk)
360
360
  end
361
361
  out = Hello.new.methods.ai(:plain => true).split("\n").grep(/m1/)
362
- out.first.should =~ /^\s+\[\s*\d+\]\s+m1\(a, \*b, &blk\)\s+Hello$/
362
+ expect(out.first).to match(/^\s+\[\s*\d+\]\s+m1\(a, \*b, &blk\)\s+Hello$/)
363
363
  end
364
364
  end
365
365
  end
@@ -376,7 +376,7 @@ describe "Methods arrays" do
376
376
  def self.m1; end
377
377
  end
378
378
  out = (Hello.methods - Class.methods).ai(:plain => true)
379
- out.should == "[\n [0] m1() Hello\n]"
379
+ expect(out).to eq("[\n [0] m1() Hello\n]")
380
380
  end
381
381
 
382
382
  it "obj1.methods & obj2.methods should be awesome printed" do
@@ -389,7 +389,7 @@ describe "Methods arrays" do
389
389
  def self.m1; end
390
390
  end
391
391
  out = (Hello.methods & World.methods - Class.methods).ai(:plain => true)
392
- out.should == "[\n [0] m1() Hello\n]"
392
+ expect(out).to eq("[\n [0] m1() Hello\n]")
393
393
  end
394
394
 
395
395
  it "obj1.methods.grep(pattern) should be awesome printed" do
@@ -400,9 +400,9 @@ describe "Methods arrays" do
400
400
  def self.m3; end
401
401
  end
402
402
  out = Hello.methods.grep(/^m1$/).ai(:plain => true)
403
- out.should == "[\n [0] m1() Hello\n]"
403
+ expect(out).to eq("[\n [0] m1() Hello\n]")
404
404
  out = Hello.methods.grep(/^m\d$/).ai(:plain => true)
405
- out.should == "[\n [0] m1() Hello\n [1] m2() Hello\n [2] m3() Hello\n]"
405
+ expect(out).to eq("[\n [0] m1() Hello\n [1] m2() Hello\n [2] m3() Hello\n]")
406
406
  end
407
407
 
408
408
  it "obj1.methods.grep(pattern, &block) should pass the matching string within the block" do
@@ -412,7 +412,7 @@ describe "Methods arrays" do
412
412
  end
413
413
 
414
414
  out = Hello.methods.sort.grep(/^m_(.+)$/) { $1.to_sym }
415
- out.should == [:one, :two]
415
+ expect(out).to eq([:one, :two])
416
416
  end
417
417
 
418
418
  it "obj1.methods.grep(pattern, &block) should be awesome printed" do
@@ -425,7 +425,7 @@ describe "Methods arrays" do
425
425
  end
426
426
 
427
427
  out = Hello.methods.grep(/^m(\d)$/) { %w(none one)[$1.to_i] }.ai(:plain => true)
428
- out.should == "[\n [0] none() Hello\n [1] one() Hello\n]"
428
+ expect(out).to eq("[\n [0] none() Hello\n [1] one() Hello\n]")
429
429
  end
430
430
 
431
431
  # See https://github.com/michaeldv/awesome_print/issues/30 for details.
@@ -444,16 +444,16 @@ describe "Methods arrays" do
444
444
  end
445
445
 
446
446
  hello = Hello.new
447
- (hello.send(:his) - hello.send(:her)).sort_by { |x| x.to_s }.should == [ :him, :his ]
447
+ expect((hello.send(:his) - hello.send(:her)).sort_by { |x| x.to_s }).to eq([ :him, :his ])
448
448
  end
449
449
 
450
450
  it "appending garbage to methods array should not raise error" do
451
451
  arr = 42.methods << [ :wtf ]
452
- arr.ai(:plain => true).should_not raise_error(TypeError)
452
+ expect { arr.ai(:plain => true) }.not_to raise_error
453
453
  if RUBY_VERSION < '1.9.2'
454
- arr.ai(:plain => true).should =~ /\s+wtf\(\?\)\s+\?/ # [ :wtf ].to_s => "wtf"
454
+ expect(arr.ai(:plain => true)).to match(/\s+wtf\(\?\)\s+\?/) # [ :wtf ].to_s => "wtf"
455
455
  else
456
- arr.ai(:plain => true).should =~ /\s+\[:wtf\]\(\?\)\s+\?/ # [ :wtf ].to_s => [:wtf]
456
+ expect(arr.ai(:plain => true)).to match(/\s+\[:wtf\]\(\?\)\s+\?/) # [ :wtf ].to_s => [:wtf]
457
457
  end
458
458
  end
459
459
  end
@@ -13,7 +13,7 @@ describe "AwesomePrint" do
13
13
  nil
14
14
  end
15
15
  end
16
- weird.new.ai(:plain => true).should == ''
16
+ expect(weird.new.ai(:plain => true)).to eq('')
17
17
  end
18
18
 
19
19
  it "handle frozen object.inspect" do
@@ -22,14 +22,14 @@ describe "AwesomePrint" do
22
22
  "ice".freeze
23
23
  end
24
24
  end
25
- weird.new.ai(:plain => false).should == "ice"
25
+ expect(weird.new.ai(:plain => false)).to eq("ice")
26
26
  end
27
27
 
28
28
  # See https://github.com/michaeldv/awesome_print/issues/35
29
29
  it "handle array grep when pattern contains / chapacter" do
30
30
  hash = { "1/x" => 1, "2//x" => :"2" }
31
31
  grepped = hash.keys.sort.grep(/^(\d+)\//) { $1 }
32
- grepped.ai(:plain => true, :multiline => false).should == '[ "1", "2" ]'
32
+ expect(grepped.ai(:plain => true, :multiline => false)).to eq('[ "1", "2" ]')
33
33
  end
34
34
 
35
35
  # See https://github.com/michaeldv/awesome_print/issues/85
@@ -37,25 +37,44 @@ describe "AwesomePrint" do
37
37
  it "handle array grep when a method is defined in C and thus doesn't have a binding" do
38
38
  arr = (0..6).to_a
39
39
  grepped = arr.grep(1..4, &:succ)
40
- grepped.ai(:plain => true, :multiline => false).should == '[ 2, 3, 4, 5 ]'
40
+ expect(grepped.ai(:plain => true, :multiline => false)).to eq('[ 2, 3, 4, 5 ]')
41
41
  end
42
42
  end
43
43
 
44
44
  it "returns value passed as a parameter" do
45
45
  object = rand
46
- self.stub!(:puts)
47
- (ap object).should == object
46
+ allow(self).to receive(:puts)
47
+ expect(ap object).to eq(object)
48
48
  end
49
49
 
50
50
  # Require different file name this time (lib/ap.rb vs. lib/awesome_print).
51
51
  it "several require 'awesome_print' should do no harm" do
52
52
  require File.expand_path(File.dirname(__FILE__) + '/../lib/ap')
53
- lambda { rand.ai }.should_not raise_error
53
+ expect { rand.ai }.not_to raise_error
54
54
  end
55
55
 
56
56
  it "format ENV as hash" do
57
- ENV.ai(:plain => true).should == ENV.to_hash.ai(:plain => true)
58
- ENV.ai.should == ENV.to_hash.ai
57
+ expect(ENV.ai(:plain => true)).to eq(ENV.to_hash.ai(:plain => true))
58
+ expect(ENV.ai).to eq(ENV.to_hash.ai)
59
+ end
60
+
61
+ # See https://github.com/michaeldv/awesome_print/issues/134
62
+ it "IPAddr workaround" do
63
+ require "ipaddr"
64
+ ipaddr = IPAddr.new("3ffe:505:2::1")
65
+ expect(ipaddr.ai).to eq("#<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>")
66
+ end
67
+
68
+ # See https://github.com/michaeldv/awesome_print/issues/139
69
+ it "Object that overrides == and expects the :id method" do
70
+ weird = Class.new do
71
+ # Raises NoMethodError: undefined method `id' when "other" is nil or ENV.
72
+ def ==(other)
73
+ self.id == other.id
74
+ end
75
+ alias :eql? :==
76
+ end
77
+ expect { weird.new.ai }.not_to raise_error
59
78
  end
60
79
  end
61
80
 
@@ -67,17 +86,17 @@ describe "AwesomePrint" do
67
86
 
68
87
  it "wraps ap output with plain <pre> tag" do
69
88
  markup = rand
70
- markup.ai(:html => true, :plain => true).should == "<pre>#{markup}</pre>"
89
+ expect(markup.ai(:html => true, :plain => true)).to eq("<pre>#{markup}</pre>")
71
90
  end
72
91
 
73
92
  it "wraps ap output with <pre> tag with colorized <kbd>" do
74
93
  markup = rand
75
- markup.ai(:html => true).should == %Q|<pre><kbd style="color:blue">#{markup}</kbd></pre>|
94
+ expect(markup.ai(:html => true)).to eq(%Q|<pre><kbd style="color:blue">#{markup}</kbd></pre>|)
76
95
  end
77
96
 
78
97
  it "wraps multiline ap output with <pre> tag with colorized <kbd>" do
79
98
  markup = [ 1, :two, "three" ]
80
- markup.ai(:html => true).should == <<-EOS.strip
99
+ expect(markup.ai(:html => true)).to eq <<-EOS.strip
81
100
  <pre>[
82
101
  <kbd style="color:white">[0] </kbd><kbd style="color:blue">1</kbd>,
83
102
  <kbd style="color:white">[1] </kbd><kbd style="color:darkcyan">:two</kbd>,
@@ -88,7 +107,7 @@ EOS
88
107
 
89
108
  it "wraps hash ap output with only an outer <pre> tag" do
90
109
  markup = [ { "hello" => "world" } ]
91
- markup.ai(:html => true).should == <<-EOS.strip
110
+ expect(markup.ai(:html => true)).to eq <<-EOS.strip
92
111
  <pre>[
93
112
  <kbd style="color:white">[0] </kbd>{
94
113
  &quot;hello&quot;<kbd style="color:slategray"> =&gt; </kbd><kbd style="color:brown">&quot;world&quot;</kbd>
@@ -99,12 +118,12 @@ EOS
99
118
 
100
119
  it "encodes HTML entities (plain)" do
101
120
  markup = ' &<hello>'
102
- markup.ai(:html => true, :plain => true).should == '<pre>&quot; &amp;&lt;hello&gt;&quot;</pre>'
121
+ expect(markup.ai(:html => true, :plain => true)).to eq('<pre>&quot; &amp;&lt;hello&gt;&quot;</pre>')
103
122
  end
104
123
 
105
124
  it "encodes HTML entities (color)" do
106
125
  markup = ' &<hello>'
107
- markup.ai(:html => true).should == '<pre><kbd style="color:brown">&quot; &amp;&lt;hello&gt;&quot;</kbd></pre>'
126
+ expect(markup.ai(:html => true)).to eq('<pre><kbd style="color:brown">&quot; &amp;&lt;hello&gt;&quot;</kbd></pre>')
108
127
  end
109
128
  end
110
129
 
@@ -123,7 +142,7 @@ EOS
123
142
  AwesomePrint.defaults = { :indent => -2, :sort_keys => true }
124
143
  hash = { [0, 0, 255] => :yellow, :red => "rgb(255, 0, 0)", "magenta" => "rgb(255, 0, 255)" }
125
144
  out = hash.ai(:plain => true)
126
- out.should == <<-EOS.strip
145
+ expect(out).to eq <<-EOS.strip
127
146
  {
128
147
  [ 0, 0, 255 ] => :yellow,
129
148
  "magenta" => "rgb(255, 0, 255)",
@@ -159,25 +178,25 @@ EOS
159
178
  it "shoud not raise ArgumentError when formatting HTML" do
160
179
  out = "hello".ai(:color => { :string => :red }, :html => true)
161
180
  if RUBY_VERSION >= "1.9"
162
- out.should == %Q|<pre>[red]<kbd style="color:red">&quot;hello&quot;</kbd>[/red]</pre>|
181
+ expect(out).to eq(%Q|<pre>[red]<kbd style="color:red">&quot;hello&quot;</kbd>[/red]</pre>|)
163
182
  else
164
- out.should == %Q|<pre>[red]&quot;hello&quot;[/red]</pre>|
183
+ expect(out).to eq(%Q|<pre>[red]&quot;hello&quot;[/red]</pre>|)
165
184
  end
166
185
  end
167
186
 
168
187
  it "shoud not raise ArgumentError when formatting HTML (shade color)" do
169
188
  out = "hello".ai(:color => { :string => :redish }, :html => true)
170
- out.should == %Q|<pre><kbd style="color:darkred">&quot;hello&quot;</kbd></pre>|
189
+ expect(out).to eq(%Q|<pre><kbd style="color:darkred">&quot;hello&quot;</kbd></pre>|)
171
190
  end
172
191
 
173
192
  it "shoud not raise ArgumentError when formatting non-HTML" do
174
193
  out = "hello".ai(:color => { :string => :red }, :html => false)
175
- out.should == %Q|[red]"hello"[/red]|
194
+ expect(out).to eq(%Q|[red]"hello"[/red]|)
176
195
  end
177
196
 
178
197
  it "shoud not raise ArgumentError when formatting non-HTML (shade color)" do
179
198
  out = "hello".ai(:color => { :string => :redish }, :html => false)
180
- out.should == %Q|\e[0;31m"hello"\e[0m|
199
+ expect(out).to eq(%Q|\e[0;31m"hello"\e[0m|)
181
200
  end
182
201
  end
183
202
 
@@ -185,23 +204,23 @@ EOS
185
204
  describe "Console" do
186
205
  it "should detect IRB" do
187
206
  class IRB; end
188
- AwesomePrint.console?.should == true
189
- AwesomePrint.rails_console?.should == false
207
+ expect(AwesomePrint.console?).to eq(true)
208
+ expect(AwesomePrint.rails_console?).to eq(false)
190
209
  Object.instance_eval{ remove_const :IRB }
191
210
  end
192
211
 
193
212
  it "should detect Pry" do
194
213
  class Pry; end
195
- AwesomePrint.console?.should == true
196
- AwesomePrint.rails_console?.should == false
214
+ expect(AwesomePrint.console?).to eq(true)
215
+ expect(AwesomePrint.rails_console?).to eq(false)
197
216
  Object.instance_eval{ remove_const :Pry }
198
217
  end
199
218
 
200
219
  it "should detect Rails::Console" do
201
220
  class IRB; end
202
- class Rails; class Console; end; end
203
- AwesomePrint.console?.should == true
204
- AwesomePrint.rails_console?.should == true
221
+ module Rails; class Console; end; end
222
+ expect(AwesomePrint.console?).to eq(true)
223
+ expect(AwesomePrint.rails_console?).to eq(true)
205
224
  Object.instance_eval{ remove_const :IRB }
206
225
  Object.instance_eval{ remove_const :Rails }
207
226
  end
@@ -209,20 +228,20 @@ EOS
209
228
  it "should detect ENV['RAILS_ENV']" do
210
229
  class Pry; end
211
230
  ENV["RAILS_ENV"] = "development"
212
- AwesomePrint.console?.should == true
213
- AwesomePrint.rails_console?.should == true
231
+ expect(AwesomePrint.console?).to eq(true)
232
+ expect(AwesomePrint.rails_console?).to eq(true)
214
233
  Object.instance_eval{ remove_const :Pry }
215
234
  end
216
235
 
217
236
  it "should return the actual object when *not* running under console" do
218
- capture! { ap([ 1, 2, 3 ]) }.should == [ 1, 2, 3 ]
219
- capture! { ap({ :a => 1 }) }.should == { :a => 1 }
237
+ expect(capture! { ap([ 1, 2, 3 ]) }).to eq([ 1, 2, 3 ])
238
+ expect(capture! { ap({ :a => 1 }) }).to eq({ :a => 1 })
220
239
  end
221
240
 
222
241
  it "should return nil when running under console" do
223
242
  class IRB; end
224
- capture! { ap([ 1, 2, 3 ]) }.should == nil
225
- capture! { ap({ :a => 1 }) }.should == nil
243
+ expect(capture! { ap([ 1, 2, 3 ]) }).to eq(nil)
244
+ expect(capture! { ap({ :a => 1 }) }).to eq(nil)
226
245
  Object.instance_eval{ remove_const :IRB }
227
246
  end
228
247
  end