testdo 0.0.1 → 0.0.2
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.
- data/features/testdo.feature +38 -3
- data/lib/testdo/capture.rb +11 -8
- data/lib/testdo/version.rb +1 -1
- data/lib/testdo.rb +4 -6
- metadata +2 -2
data/features/testdo.feature
CHANGED
@@ -10,13 +10,14 @@ Feature: TestDO
|
|
10
10
|
/\d/ === '9'
|
11
11
|
end
|
12
12
|
"""
|
13
|
-
When I successfully run `ruby
|
13
|
+
When I successfully run `ruby file.rb`
|
14
14
|
Then the output should contain exactly:
|
15
15
|
"""
|
16
16
|
OK: 3
|
17
17
|
|
18
18
|
"""
|
19
19
|
|
20
|
+
|
20
21
|
Scenario:
|
21
22
|
Given a file named "file.rb" with:
|
22
23
|
"""
|
@@ -27,7 +28,7 @@ Feature: TestDO
|
|
27
28
|
%w[a b].include? 'c'
|
28
29
|
end
|
29
30
|
"""
|
30
|
-
When I successfully run `ruby
|
31
|
+
When I successfully run `ruby file.rb`
|
31
32
|
Then the output should contain exactly:
|
32
33
|
"""
|
33
34
|
Failed examples:
|
@@ -36,4 +37,38 @@ Feature: TestDO
|
|
36
37
|
["a", "b"] include? "c"
|
37
38
|
OK: 0, failed: 3
|
38
39
|
|
39
|
-
"""
|
40
|
+
"""
|
41
|
+
|
42
|
+
|
43
|
+
Scenario:
|
44
|
+
Given a file named "file.rb" with:
|
45
|
+
"""
|
46
|
+
require 'testdo'
|
47
|
+
test do
|
48
|
+
%w[a b].all? { |x|x.is_a? String }
|
49
|
+
end
|
50
|
+
"""
|
51
|
+
When I successfully run `ruby file.rb`
|
52
|
+
Then the output should contain exactly:
|
53
|
+
"""
|
54
|
+
OK: 1
|
55
|
+
|
56
|
+
"""
|
57
|
+
|
58
|
+
|
59
|
+
Scenario:
|
60
|
+
Given a file named "file.rb" with:
|
61
|
+
"""
|
62
|
+
require 'testdo'
|
63
|
+
test do
|
64
|
+
%w[a b].all? { false }
|
65
|
+
end
|
66
|
+
"""
|
67
|
+
When I successfully run `ruby file.rb`
|
68
|
+
Then the output should contain exactly:
|
69
|
+
"""
|
70
|
+
Failed examples:
|
71
|
+
["a", "b"] all?
|
72
|
+
OK: 0, failed: 1
|
73
|
+
|
74
|
+
"""
|
data/lib/testdo/capture.rb
CHANGED
@@ -3,8 +3,8 @@ module Testdo
|
|
3
3
|
# used to outflank refinement
|
4
4
|
class Unwrap
|
5
5
|
def initialize obj; @obj = obj end
|
6
|
-
def send *a
|
7
|
-
obj.send *a
|
6
|
+
def send *a,&b
|
7
|
+
obj.send *a,&b
|
8
8
|
end
|
9
9
|
private; attr_reader :obj
|
10
10
|
def self.[] *a; new *a end
|
@@ -20,8 +20,8 @@ module Testdo
|
|
20
20
|
[*classes].each do |klass|
|
21
21
|
refine klass do
|
22
22
|
[*method_names].each do |name|
|
23
|
-
define_method name do |
|
24
|
-
Unwrap[self].send(__method__
|
23
|
+
define_method name do |*arguments,&block|
|
24
|
+
Unwrap[self].send(__method__,*arguments,&block).tap { |result| callback.call self,__method__,arguments,block,result }
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
@@ -50,7 +50,7 @@ if __FILE__== $0 # kind of usage
|
|
50
50
|
|
51
51
|
# CaptureModule
|
52
52
|
class Any
|
53
|
-
using CaptureModule(String =>
|
53
|
+
using CaptureModule(String => :+, Array => :all?) { |receiver,msg,args,block,result| @got = result } # don't try do-end block here
|
54
54
|
|
55
55
|
def self.eval &block
|
56
56
|
class_eval &block
|
@@ -61,13 +61,14 @@ if __FILE__== $0 # kind of usage
|
|
61
61
|
|
62
62
|
raise unless Any.eval { '1'+'1';nil }.got == '11'
|
63
63
|
raise unless Any.eval { '2'+'2';nil }.got == '22'
|
64
|
-
|
64
|
+
raise unless Any.eval { [1,2].all?{true} }.got == true
|
65
|
+
raise unless Any.eval { [1,2].all?{false} }.got == false
|
65
66
|
|
66
67
|
# Capture
|
67
68
|
got = nil
|
68
|
-
Capture([String,Fixnum] => [:+, :-]) { |
|
69
|
+
Capture([String,Fixnum] => [:+, :-]) { |receiver,msg,args,block,result| got = result }.eval { '3'+'3';nil }
|
69
70
|
raise unless got == '33'
|
70
|
-
Capture([String,Fixnum] => [:+, :-]) { |
|
71
|
+
Capture([String,Fixnum] => [:+, :-]) { |receiver,msg,args,block,result| got = result }.eval { 3+3;nil }
|
71
72
|
raise unless got == 6
|
72
73
|
|
73
74
|
|
@@ -76,4 +77,6 @@ if __FILE__== $0 # kind of usage
|
|
76
77
|
Object.class_eval{ 'any'+'any'; 0 + 0 }
|
77
78
|
instance_eval{ 'any'+'any'; 0 + 0 }
|
78
79
|
raise unless got == nil
|
80
|
+
|
81
|
+
puts 'OK'
|
79
82
|
end
|
data/lib/testdo/version.rb
CHANGED
data/lib/testdo.rb
CHANGED
@@ -12,7 +12,7 @@ module Testdo
|
|
12
12
|
|
13
13
|
CAPTURE = {
|
14
14
|
[Fixnum, Range, String, NilClass, Regexp, TrueClass, FalseClass] => %i[== === > < =~],
|
15
|
-
[Array] => %i[include?] }
|
15
|
+
[Array] => %i[include? all? any? empty? one? none? member?] }
|
16
16
|
|
17
17
|
def initialize(capture: CAPTURE)
|
18
18
|
@capture = capture
|
@@ -20,13 +20,11 @@ module Testdo
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def feed &block
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
results << {text: text, result: result}
|
23
|
+
Capture(@capture) { |receiver,msg,arguments,block,result|
|
24
|
+
text = "#{receiver.inspect} #{msg.to_s} #{arguments.map(&:inspect).join(', ')}"
|
25
|
+
@result << {text: text, result: result}
|
27
26
|
}.eval(&block)
|
28
27
|
|
29
|
-
@result.push *results
|
30
28
|
self
|
31
29
|
end
|
32
30
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testdo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: cucumber
|