tbpgr_utils 0.0.8 → 0.0.9
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/README.md +52 -8
- data/lib/tbpgr_utils/version.rb +1 -1
- data/lib/tbpgr_utils.rb +1 -1
- data/lib/test_toolbox/kernel.rb +46 -0
- data/lib/test_toolbox.rb +6 -0
- data/spec/{array_spec.rb → open_classes/array_spec.rb} +52 -52
- data/spec/{kernel_spec.rb → open_classes/kernel_spec.rb} +3 -13
- data/spec/{object_spec.rb → open_classes/object_spec.rb} +191 -191
- data/spec/{string_spec.rb → open_classes/string_spec.rb} +75 -75
- data/spec/test_toolbox/kernel_spec.rb +114 -0
- metadata +22 -18
data/README.md
CHANGED
@@ -20,16 +20,18 @@ Or install it yourself as:
|
|
20
20
|
### List
|
21
21
|
| class/module/method| mean|
|
22
22
|
|:-----------|:------------|
|
23
|
-
|Array#together|loop all arrays by block|
|
23
|
+
|TbpgrUtils Array#together|loop all arrays by block|
|
24
24
|
|AttributesInitializable::ClassMethods.attr_accessor_init|generate attr_accessors + initializer|
|
25
25
|
|Ghostable module|help to create ghost method(dynamic method define by ussing method_missing + pattern-method-name)|
|
26
|
-
|Kernel#bulk_define_methods|define methods to classes. methods have simple return value.|
|
27
|
-
|Kernel#
|
28
|
-
|Kernel#
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|Object#
|
32
|
-
|
|
26
|
+
|TbpgrUtils Kernel#bulk_define_methods|define methods to classes. methods have simple return value.|
|
27
|
+
|TestToolbox Kernel#capture_stdout|capture STDOUT|
|
28
|
+
|TestToolbox Kernel#dp_line|debug print line for print-debugging|
|
29
|
+
|TbpgrUtils Kernel#print_eval|Print code + eval result|
|
30
|
+
|TbpgrUtils Kernel#puts_eval|Puts code + eval result|
|
31
|
+
|TbpgrUtils Object#any_of?|if self match any one of items, return true|
|
32
|
+
|TbpgrUtils Object#boolean?|data type check for boolean|
|
33
|
+
|TbpgrUtils Object#my_methods|return public/protected/private self define methods|
|
34
|
+
|TbpgrUtils String#justify_table|justify pipe format table string|
|
33
35
|
|Templatable module|get result from template + placeholder|
|
34
36
|
|
35
37
|
### Array#together
|
@@ -97,6 +99,7 @@ p atr_sample2.atr2 # => atr2
|
|
97
99
|
|
98
100
|
sample ghost method define module.
|
99
101
|
~~~ruby
|
102
|
+
require 'ghostable'
|
100
103
|
module Checkable
|
101
104
|
include Ghostable
|
102
105
|
ghost_method /check_range_.*\?$/, :check_range do |method_name, *args, &block|
|
@@ -134,10 +137,45 @@ sample.contain_hoge? "test_hige_test" # => return false
|
|
134
137
|
sample.contain_hige? "test_hige_test" # => return true
|
135
138
|
~~~
|
136
139
|
|
140
|
+
### Kernel#capture_stdout
|
141
|
+
capture STDOUT to String. This method can use in STDOUT contents test.
|
142
|
+
|
143
|
+
~~~ruby
|
144
|
+
require 'test_toolbox'
|
145
|
+
|
146
|
+
result = capture_stdout {puts "test"} # => "test"
|
147
|
+
|
148
|
+
# no stdout case. return empty.
|
149
|
+
result = capture_stdout {sleep 0.1} # => ""(empty)
|
150
|
+
~~~
|
151
|
+
|
152
|
+
### Kernel#dp_line
|
153
|
+
debug print line for print-debugging.
|
154
|
+
|
155
|
+
~~~ruby
|
156
|
+
require 'test_toolbox'
|
157
|
+
|
158
|
+
# default usage
|
159
|
+
dp_line __LINE__
|
160
|
+
# output is following. yy = line no.
|
161
|
+
# => --------------------|filename=|line=yy|--------------------\n
|
162
|
+
|
163
|
+
# output with filename
|
164
|
+
dp_line __LINE__, filename: __FILE__
|
165
|
+
# output is following. xx=filenamem, yy = line no.
|
166
|
+
# => --------------------|filename=xx|line=yy|--------------------\n
|
167
|
+
|
168
|
+
# output with specific line charactor.
|
169
|
+
dp_line __LINE__, filename: __FILE__, char: '@'
|
170
|
+
# output is following. xx=filenamem, yy = line no.
|
171
|
+
# => @@@@@@@@@@@@@@@@@@@@|filename=xx|line=yy$|@@@@@@@@@@@@@@@@@@@@\n
|
172
|
+
~~~
|
173
|
+
|
137
174
|
### Kernel#bulk_define_methods
|
138
175
|
Define methods to classes. Methods have simple return value.
|
139
176
|
|
140
177
|
~~~ruby
|
178
|
+
require 'tbpgr_utils'
|
141
179
|
bulk_define_methods [NilClass, FalseClass], :blank?, true
|
142
180
|
bulk_define_methods [TrueClass, Numeric], "blank?", false
|
143
181
|
|
@@ -312,7 +350,13 @@ line1:hoge-sample
|
|
312
350
|
line2:hige-sample
|
313
351
|
~~~
|
314
352
|
|
353
|
+
## Relation
|
354
|
+
if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
355
|
+
|
356
|
+
https://github.com/tbpgr/tbpgr_utils_snippets
|
357
|
+
|
315
358
|
## History
|
359
|
+
* version 0.0.9 : add TestToolbox module. add Kernel#capture_stdout, Kernel#dp_line
|
316
360
|
* version 0.0.8 : add Kernel#bulk_define_methods
|
317
361
|
* version 0.0.7 : add Kernel#print_eval, Kernel#puts_eval
|
318
362
|
* version 0.0.6 : add Ghostable
|
data/lib/tbpgr_utils/version.rb
CHANGED
data/lib/tbpgr_utils.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
require "stringio"
|
2
|
+
|
3
|
+
# Kernel
|
4
|
+
module Kernel
|
5
|
+
# capture STDOUT
|
6
|
+
#
|
7
|
+
#
|
8
|
+
# capture print
|
9
|
+
# print capture_stdout { print "hoge" } # => hoge
|
10
|
+
#
|
11
|
+
# if block have no STDOUT, capture_stdout returns empty.
|
12
|
+
# print capture_stdout { }.empty? # => true
|
13
|
+
def capture_stdout
|
14
|
+
begin
|
15
|
+
$stdout = StringIO.new
|
16
|
+
yield
|
17
|
+
result = $stdout.string
|
18
|
+
ensure
|
19
|
+
$stdout = STDOUT
|
20
|
+
end
|
21
|
+
result
|
22
|
+
end
|
23
|
+
|
24
|
+
# debug print line for print-debugging
|
25
|
+
#
|
26
|
+
#
|
27
|
+
# debug print default
|
28
|
+
# dp_line __LINE__
|
29
|
+
# # yy = call line no
|
30
|
+
# # => --------------------|filename=|line=yy|--------------------
|
31
|
+
#
|
32
|
+
# debug print with filename
|
33
|
+
# dp_line __LINE__, filename: __FILE__
|
34
|
+
# # xx = filename, yy = call line no
|
35
|
+
# # => --------------------|filename=xx|line=yy|--------------------
|
36
|
+
#
|
37
|
+
# debug print with no filename, specific char
|
38
|
+
# dp_line __LINE__, char: '@'
|
39
|
+
# # xx = filename, yy = call line no
|
40
|
+
# # => @@@@@@@@@@@@@@@@@@@@|filename=|line=yy|@@@@@@@@@@@@@@@@@@@@
|
41
|
+
def dp_line(line, options = {filename: "", char: '-'})
|
42
|
+
filename = options[:filename].nil? ? "" : options[:filename]
|
43
|
+
char = options[:char].nil? ? "-" : options[:char]
|
44
|
+
puts "#{char*20}|filename=#{filename}|line=#{line}|#{char*20}"
|
45
|
+
end
|
46
|
+
end
|
data/lib/test_toolbox.rb
ADDED
@@ -1,52 +1,52 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'tbpgr_utils'
|
4
|
-
|
5
|
-
describe Array do
|
6
|
-
|
7
|
-
context :together do
|
8
|
-
cases = [
|
9
|
-
{
|
10
|
-
case_no: 1,
|
11
|
-
case_title: 'valid case',
|
12
|
-
inputs: [[1, 2, 3], %w{one two three}],
|
13
|
-
expected: ['1:one', '2:two', '3:three'],
|
14
|
-
},
|
15
|
-
{
|
16
|
-
case_no: 2,
|
17
|
-
case_title: 'contain nil case',
|
18
|
-
inputs: [[1, 2, 3], %w{one two}],
|
19
|
-
expected: ['1:one', '2:two', '3:'],
|
20
|
-
},
|
21
|
-
]
|
22
|
-
|
23
|
-
cases.each do |c|
|
24
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
25
|
-
begin
|
26
|
-
case_before c
|
27
|
-
|
28
|
-
# -- given --
|
29
|
-
# nothing
|
30
|
-
|
31
|
-
# -- when/then --
|
32
|
-
actual = []
|
33
|
-
c[:inputs].together do |first, second|
|
34
|
-
actual << "#{first}:#{second}"
|
35
|
-
end
|
36
|
-
|
37
|
-
expect(actual).to eq(c[:expected])
|
38
|
-
ensure
|
39
|
-
case_after c
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def case_before(c)
|
44
|
-
# implement each case before
|
45
|
-
end
|
46
|
-
|
47
|
-
def case_after(c)
|
48
|
-
# implement each case after
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
|
7
|
+
context :together do
|
8
|
+
cases = [
|
9
|
+
{
|
10
|
+
case_no: 1,
|
11
|
+
case_title: 'valid case',
|
12
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
13
|
+
expected: ['1:one', '2:two', '3:three'],
|
14
|
+
},
|
15
|
+
{
|
16
|
+
case_no: 2,
|
17
|
+
case_title: 'contain nil case',
|
18
|
+
inputs: [[1, 2, 3], %w{one two}],
|
19
|
+
expected: ['1:one', '2:two', '3:'],
|
20
|
+
},
|
21
|
+
]
|
22
|
+
|
23
|
+
cases.each do |c|
|
24
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
25
|
+
begin
|
26
|
+
case_before c
|
27
|
+
|
28
|
+
# -- given --
|
29
|
+
# nothing
|
30
|
+
|
31
|
+
# -- when/then --
|
32
|
+
actual = []
|
33
|
+
c[:inputs].together do |first, second|
|
34
|
+
actual << "#{first}:#{second}"
|
35
|
+
end
|
36
|
+
|
37
|
+
expect(actual).to eq(c[:expected])
|
38
|
+
ensure
|
39
|
+
case_after c
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def case_before(c)
|
44
|
+
# implement each case before
|
45
|
+
end
|
46
|
+
|
47
|
+
def case_after(c)
|
48
|
+
# implement each case after
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,19 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require "spec_helper"
|
3
3
|
require "open_classes/kernel"
|
4
|
+
require "test_toolbox"
|
4
5
|
|
5
6
|
describe Kernel do
|
6
|
-
def get_stdout
|
7
|
-
begin
|
8
|
-
eval "$stdout = StringIO.new"
|
9
|
-
yield
|
10
|
-
result = eval("$stdout").string
|
11
|
-
ensure
|
12
|
-
eval "$stdout = STDOUT"
|
13
|
-
end
|
14
|
-
result
|
15
|
-
end
|
16
|
-
|
17
7
|
context :print_eval do
|
18
8
|
cases = [
|
19
9
|
{
|
@@ -40,7 +30,7 @@ describe Kernel do
|
|
40
30
|
message = c[:bind] if c[:bind]
|
41
31
|
|
42
32
|
# -- when --
|
43
|
-
actual =
|
33
|
+
actual = capture_stdout { print_eval c[:code], binding }
|
44
34
|
|
45
35
|
# -- then --
|
46
36
|
expect(actual).to eq(c[:expected])
|
@@ -85,7 +75,7 @@ describe Kernel do
|
|
85
75
|
message = c[:bind] if c[:bind]
|
86
76
|
|
87
77
|
# -- when --
|
88
|
-
actual =
|
78
|
+
actual = capture_stdout { puts_eval c[:code], binding }
|
89
79
|
|
90
80
|
# -- then --
|
91
81
|
expect(actual).to eq(c[:expected])
|
@@ -1,191 +1,191 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'tbpgr_utils'
|
4
|
-
|
5
|
-
describe Object do
|
6
|
-
context :boolean? do
|
7
|
-
cases = [
|
8
|
-
{
|
9
|
-
case_no: 1,
|
10
|
-
case_title: 'true case',
|
11
|
-
input: true,
|
12
|
-
expected: true,
|
13
|
-
},
|
14
|
-
{
|
15
|
-
case_no: 2,
|
16
|
-
case_title: 'false case',
|
17
|
-
input: false,
|
18
|
-
expected: true,
|
19
|
-
},
|
20
|
-
{
|
21
|
-
case_no: 3,
|
22
|
-
case_title: "string 'true' case",
|
23
|
-
input: 'true',
|
24
|
-
expected: false,
|
25
|
-
},
|
26
|
-
{
|
27
|
-
case_no: 4,
|
28
|
-
case_title: 'empty case',
|
29
|
-
input: '',
|
30
|
-
expected: false,
|
31
|
-
},
|
32
|
-
{
|
33
|
-
case_no: 5,
|
34
|
-
case_title: 'nil case',
|
35
|
-
input: nil,
|
36
|
-
expected: false,
|
37
|
-
},
|
38
|
-
]
|
39
|
-
|
40
|
-
cases.each do |c|
|
41
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
42
|
-
begin
|
43
|
-
case_before c
|
44
|
-
|
45
|
-
# -- given --
|
46
|
-
# nothing
|
47
|
-
|
48
|
-
# -- when --
|
49
|
-
actual = c[:input].boolean?
|
50
|
-
|
51
|
-
# -- then --
|
52
|
-
expect(actual).to eq(c[:expected])
|
53
|
-
ensure
|
54
|
-
case_after c
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def case_before(c)
|
59
|
-
# implement each case before
|
60
|
-
end
|
61
|
-
|
62
|
-
def case_after(c)
|
63
|
-
# implement each case after
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context :my_methods do
|
69
|
-
SampleClass = Class.new(String) do
|
70
|
-
def public_hello
|
71
|
-
"#{self} public hello"
|
72
|
-
end
|
73
|
-
|
74
|
-
protected
|
75
|
-
|
76
|
-
def protected_hello
|
77
|
-
"#{self} protected hello"
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def private_hello
|
83
|
-
"#{self} private hello"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
cases = [
|
88
|
-
{
|
89
|
-
case_no: 1,
|
90
|
-
case_title: 'true case',
|
91
|
-
input: SampleClass.new,
|
92
|
-
expected: [:public_hello, :protected_hello, :private_hello],
|
93
|
-
},
|
94
|
-
]
|
95
|
-
|
96
|
-
cases.each do |c|
|
97
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
98
|
-
begin
|
99
|
-
case_before c
|
100
|
-
|
101
|
-
# -- given --
|
102
|
-
# nothing
|
103
|
-
|
104
|
-
# -- when --
|
105
|
-
actual = c[:input].my_methods
|
106
|
-
|
107
|
-
# -- then --
|
108
|
-
expect(actual).to eq(c[:expected])
|
109
|
-
ensure
|
110
|
-
case_after c
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
def case_before(c)
|
115
|
-
# implement each case before
|
116
|
-
end
|
117
|
-
|
118
|
-
def case_after(c)
|
119
|
-
# implement each case after
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
|
125
|
-
context :any_of? do
|
126
|
-
cases = [
|
127
|
-
{
|
128
|
-
case_no: 1,
|
129
|
-
case_title: 'true case',
|
130
|
-
input: 'hoge',
|
131
|
-
check: %w{hoge hige},
|
132
|
-
expected: true,
|
133
|
-
},
|
134
|
-
{
|
135
|
-
case_no: 2,
|
136
|
-
case_title: 'true case',
|
137
|
-
input: 'hige',
|
138
|
-
check: %w{hoge hige},
|
139
|
-
expected: true,
|
140
|
-
},
|
141
|
-
{
|
142
|
-
case_no: 3,
|
143
|
-
case_title: 'false case',
|
144
|
-
input: 'hege',
|
145
|
-
check: %w{hoge hige},
|
146
|
-
expected: false,
|
147
|
-
},
|
148
|
-
{
|
149
|
-
case_no: 4,
|
150
|
-
case_title: 'number true case',
|
151
|
-
input: 1,
|
152
|
-
check: [1, 2, 3, 4, 5],
|
153
|
-
expected: true,
|
154
|
-
},
|
155
|
-
{
|
156
|
-
case_no: 5,
|
157
|
-
case_title: 'number true case',
|
158
|
-
input: 6,
|
159
|
-
check: [1, 2, 3, 4, 5],
|
160
|
-
expected: false,
|
161
|
-
},
|
162
|
-
]
|
163
|
-
|
164
|
-
cases.each do |c|
|
165
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
166
|
-
begin
|
167
|
-
case_before c
|
168
|
-
|
169
|
-
# -- given --
|
170
|
-
# nothing
|
171
|
-
|
172
|
-
# -- when --
|
173
|
-
actual = c[:input].any_of?(*c[:check])
|
174
|
-
|
175
|
-
# -- then --
|
176
|
-
expect(actual).to eq(c[:expected])
|
177
|
-
ensure
|
178
|
-
case_after c
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
def case_before(c)
|
183
|
-
# implement each case before
|
184
|
-
end
|
185
|
-
|
186
|
-
def case_after(c)
|
187
|
-
# implement each case after
|
188
|
-
end
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Object do
|
6
|
+
context :boolean? do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'true case',
|
11
|
+
input: true,
|
12
|
+
expected: true,
|
13
|
+
},
|
14
|
+
{
|
15
|
+
case_no: 2,
|
16
|
+
case_title: 'false case',
|
17
|
+
input: false,
|
18
|
+
expected: true,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
case_no: 3,
|
22
|
+
case_title: "string 'true' case",
|
23
|
+
input: 'true',
|
24
|
+
expected: false,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
case_no: 4,
|
28
|
+
case_title: 'empty case',
|
29
|
+
input: '',
|
30
|
+
expected: false,
|
31
|
+
},
|
32
|
+
{
|
33
|
+
case_no: 5,
|
34
|
+
case_title: 'nil case',
|
35
|
+
input: nil,
|
36
|
+
expected: false,
|
37
|
+
},
|
38
|
+
]
|
39
|
+
|
40
|
+
cases.each do |c|
|
41
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
42
|
+
begin
|
43
|
+
case_before c
|
44
|
+
|
45
|
+
# -- given --
|
46
|
+
# nothing
|
47
|
+
|
48
|
+
# -- when --
|
49
|
+
actual = c[:input].boolean?
|
50
|
+
|
51
|
+
# -- then --
|
52
|
+
expect(actual).to eq(c[:expected])
|
53
|
+
ensure
|
54
|
+
case_after c
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def case_before(c)
|
59
|
+
# implement each case before
|
60
|
+
end
|
61
|
+
|
62
|
+
def case_after(c)
|
63
|
+
# implement each case after
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
context :my_methods do
|
69
|
+
SampleClass = Class.new(String) do
|
70
|
+
def public_hello
|
71
|
+
"#{self} public hello"
|
72
|
+
end
|
73
|
+
|
74
|
+
protected
|
75
|
+
|
76
|
+
def protected_hello
|
77
|
+
"#{self} protected hello"
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def private_hello
|
83
|
+
"#{self} private hello"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
cases = [
|
88
|
+
{
|
89
|
+
case_no: 1,
|
90
|
+
case_title: 'true case',
|
91
|
+
input: SampleClass.new,
|
92
|
+
expected: [:public_hello, :protected_hello, :private_hello],
|
93
|
+
},
|
94
|
+
]
|
95
|
+
|
96
|
+
cases.each do |c|
|
97
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
98
|
+
begin
|
99
|
+
case_before c
|
100
|
+
|
101
|
+
# -- given --
|
102
|
+
# nothing
|
103
|
+
|
104
|
+
# -- when --
|
105
|
+
actual = c[:input].my_methods
|
106
|
+
|
107
|
+
# -- then --
|
108
|
+
expect(actual).to eq(c[:expected])
|
109
|
+
ensure
|
110
|
+
case_after c
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def case_before(c)
|
115
|
+
# implement each case before
|
116
|
+
end
|
117
|
+
|
118
|
+
def case_after(c)
|
119
|
+
# implement each case after
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
context :any_of? do
|
126
|
+
cases = [
|
127
|
+
{
|
128
|
+
case_no: 1,
|
129
|
+
case_title: 'true case',
|
130
|
+
input: 'hoge',
|
131
|
+
check: %w{hoge hige},
|
132
|
+
expected: true,
|
133
|
+
},
|
134
|
+
{
|
135
|
+
case_no: 2,
|
136
|
+
case_title: 'true case',
|
137
|
+
input: 'hige',
|
138
|
+
check: %w{hoge hige},
|
139
|
+
expected: true,
|
140
|
+
},
|
141
|
+
{
|
142
|
+
case_no: 3,
|
143
|
+
case_title: 'false case',
|
144
|
+
input: 'hege',
|
145
|
+
check: %w{hoge hige},
|
146
|
+
expected: false,
|
147
|
+
},
|
148
|
+
{
|
149
|
+
case_no: 4,
|
150
|
+
case_title: 'number true case',
|
151
|
+
input: 1,
|
152
|
+
check: [1, 2, 3, 4, 5],
|
153
|
+
expected: true,
|
154
|
+
},
|
155
|
+
{
|
156
|
+
case_no: 5,
|
157
|
+
case_title: 'number true case',
|
158
|
+
input: 6,
|
159
|
+
check: [1, 2, 3, 4, 5],
|
160
|
+
expected: false,
|
161
|
+
},
|
162
|
+
]
|
163
|
+
|
164
|
+
cases.each do |c|
|
165
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
166
|
+
begin
|
167
|
+
case_before c
|
168
|
+
|
169
|
+
# -- given --
|
170
|
+
# nothing
|
171
|
+
|
172
|
+
# -- when --
|
173
|
+
actual = c[:input].any_of?(*c[:check])
|
174
|
+
|
175
|
+
# -- then --
|
176
|
+
expect(actual).to eq(c[:expected])
|
177
|
+
ensure
|
178
|
+
case_after c
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def case_before(c)
|
183
|
+
# implement each case before
|
184
|
+
end
|
185
|
+
|
186
|
+
def case_after(c)
|
187
|
+
# implement each case after
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
@@ -1,75 +1,75 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'tbpgr_utils'
|
4
|
-
|
5
|
-
describe String do
|
6
|
-
|
7
|
-
context :justify_table do
|
8
|
-
SAMPLE_TABLE = <<-EOS
|
9
|
-
|* first name|* family name|
|
10
|
-
|eiichiro|oda|
|
11
|
-
|akira|toriyama|
|
12
|
-
|yusei|matsui|
|
13
|
-
EOS
|
14
|
-
|
15
|
-
SAMPLE_NOT_TABLE = <<-EOS
|
16
|
-
csv_column1_1, csv_column1_2
|
17
|
-
csv_column2_1, csv_column2_2
|
18
|
-
EOS
|
19
|
-
|
20
|
-
SAMPLE_JUSTIFIED_TABLE = <<-EOS
|
21
|
-
|* first name|* family name|
|
22
|
-
|eiichiro |oda |
|
23
|
-
|akira |toriyama |
|
24
|
-
|yusei |matsui |
|
25
|
-
EOS
|
26
|
-
|
27
|
-
cases = [
|
28
|
-
{
|
29
|
-
case_no: 1,
|
30
|
-
case_title: 'valid justify case',
|
31
|
-
input: SAMPLE_TABLE,
|
32
|
-
expected: SAMPLE_JUSTIFIED_TABLE,
|
33
|
-
},
|
34
|
-
{
|
35
|
-
case_no: 2,
|
36
|
-
case_title: 'not table case',
|
37
|
-
input: SAMPLE_NOT_TABLE,
|
38
|
-
expected: SAMPLE_NOT_TABLE,
|
39
|
-
},
|
40
|
-
{
|
41
|
-
case_no: 3,
|
42
|
-
case_title: 'empty case',
|
43
|
-
input: '',
|
44
|
-
expected: '',
|
45
|
-
},
|
46
|
-
]
|
47
|
-
|
48
|
-
cases.each do |c|
|
49
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
50
|
-
begin
|
51
|
-
case_before c
|
52
|
-
|
53
|
-
# -- given --
|
54
|
-
# nothing
|
55
|
-
|
56
|
-
# -- when --
|
57
|
-
actual = c[:input].justify_table
|
58
|
-
|
59
|
-
# -- then --
|
60
|
-
expect(actual).to eq(c[:expected])
|
61
|
-
ensure
|
62
|
-
case_after c
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
def case_before(c)
|
67
|
-
# implement each case before
|
68
|
-
end
|
69
|
-
|
70
|
-
def case_after(c)
|
71
|
-
# implement each case after
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe String do
|
6
|
+
|
7
|
+
context :justify_table do
|
8
|
+
SAMPLE_TABLE = <<-EOS
|
9
|
+
|* first name|* family name|
|
10
|
+
|eiichiro|oda|
|
11
|
+
|akira|toriyama|
|
12
|
+
|yusei|matsui|
|
13
|
+
EOS
|
14
|
+
|
15
|
+
SAMPLE_NOT_TABLE = <<-EOS
|
16
|
+
csv_column1_1, csv_column1_2
|
17
|
+
csv_column2_1, csv_column2_2
|
18
|
+
EOS
|
19
|
+
|
20
|
+
SAMPLE_JUSTIFIED_TABLE = <<-EOS
|
21
|
+
|* first name|* family name|
|
22
|
+
|eiichiro |oda |
|
23
|
+
|akira |toriyama |
|
24
|
+
|yusei |matsui |
|
25
|
+
EOS
|
26
|
+
|
27
|
+
cases = [
|
28
|
+
{
|
29
|
+
case_no: 1,
|
30
|
+
case_title: 'valid justify case',
|
31
|
+
input: SAMPLE_TABLE,
|
32
|
+
expected: SAMPLE_JUSTIFIED_TABLE,
|
33
|
+
},
|
34
|
+
{
|
35
|
+
case_no: 2,
|
36
|
+
case_title: 'not table case',
|
37
|
+
input: SAMPLE_NOT_TABLE,
|
38
|
+
expected: SAMPLE_NOT_TABLE,
|
39
|
+
},
|
40
|
+
{
|
41
|
+
case_no: 3,
|
42
|
+
case_title: 'empty case',
|
43
|
+
input: '',
|
44
|
+
expected: '',
|
45
|
+
},
|
46
|
+
]
|
47
|
+
|
48
|
+
cases.each do |c|
|
49
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
50
|
+
begin
|
51
|
+
case_before c
|
52
|
+
|
53
|
+
# -- given --
|
54
|
+
# nothing
|
55
|
+
|
56
|
+
# -- when --
|
57
|
+
actual = c[:input].justify_table
|
58
|
+
|
59
|
+
# -- then --
|
60
|
+
expect(actual).to eq(c[:expected])
|
61
|
+
ensure
|
62
|
+
case_after c
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def case_before(c)
|
67
|
+
# implement each case before
|
68
|
+
end
|
69
|
+
|
70
|
+
def case_after(c)
|
71
|
+
# implement each case after
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
require "test_toolbox/kernel"
|
4
|
+
|
5
|
+
describe Kernel do
|
6
|
+
context :capture_stdout do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: "have STDOUT case",
|
11
|
+
code: "print 'hoge'",
|
12
|
+
expected: "hoge",
|
13
|
+
},
|
14
|
+
{
|
15
|
+
case_no: 2,
|
16
|
+
case_title: "don't have STDOUT case",
|
17
|
+
code: "",
|
18
|
+
expected: "",
|
19
|
+
},
|
20
|
+
]
|
21
|
+
|
22
|
+
cases.each do |c|
|
23
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
24
|
+
begin
|
25
|
+
case_before c
|
26
|
+
|
27
|
+
# -- given --
|
28
|
+
# nothing
|
29
|
+
|
30
|
+
# -- when --
|
31
|
+
actual = capture_stdout {eval c[:code]}
|
32
|
+
|
33
|
+
# -- then --
|
34
|
+
expect(actual).to eq(c[:expected])
|
35
|
+
ensure
|
36
|
+
case_after c
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def case_before(c)
|
41
|
+
# implement each case before
|
42
|
+
end
|
43
|
+
|
44
|
+
def case_after(c)
|
45
|
+
# implement each case after
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context :dp_line do
|
51
|
+
cases = [
|
52
|
+
{
|
53
|
+
case_no: 1,
|
54
|
+
case_title: "default case",
|
55
|
+
have_filename: true,
|
56
|
+
have_char: false,
|
57
|
+
expected: "--------------------|filename=$filename$|line=$line$|--------------------\n",
|
58
|
+
},
|
59
|
+
{
|
60
|
+
case_no: 2,
|
61
|
+
case_title: "specific har case",
|
62
|
+
have_filename: false,
|
63
|
+
have_char: true,
|
64
|
+
char: '@',
|
65
|
+
expected: "@@@@@@@@@@@@@@@@@@@@|filename=$filename$|line=$line$|@@@@@@@@@@@@@@@@@@@@\n",
|
66
|
+
},
|
67
|
+
{
|
68
|
+
case_no: 3,
|
69
|
+
case_title: "no options case",
|
70
|
+
have_filename: false,
|
71
|
+
have_char: false,
|
72
|
+
expected: "--------------------|filename=$filename$|line=$line$|--------------------\n",
|
73
|
+
},
|
74
|
+
]
|
75
|
+
|
76
|
+
cases.each do |c|
|
77
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
78
|
+
begin
|
79
|
+
case_before c
|
80
|
+
|
81
|
+
# -- given --
|
82
|
+
options = {}
|
83
|
+
options[:filename] = __FILE__ if c[:have_filename]
|
84
|
+
options[:char] = c[:char] if c[:have_char]
|
85
|
+
|
86
|
+
# -- when --
|
87
|
+
line = nil
|
88
|
+
if !c[:have_filename] && !c[:have_char]
|
89
|
+
actual = capture_stdout{ line = __LINE__ if c[:have_line];dp_line line }
|
90
|
+
else
|
91
|
+
actual = capture_stdout{ line = __LINE__ if c[:have_line];dp_line line, options }
|
92
|
+
end
|
93
|
+
|
94
|
+
# -- then --
|
95
|
+
expected = c[:expected]
|
96
|
+
file_gsub = c[:have_filename] ? __FILE__.to_s : ""
|
97
|
+
expected = expected.gsub("$filename$", file_gsub)
|
98
|
+
expected = expected.gsub("$line$", line.to_s)
|
99
|
+
expect(actual).to eq(expected)
|
100
|
+
ensure
|
101
|
+
case_after c
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def case_before(c)
|
106
|
+
# implement each case before
|
107
|
+
end
|
108
|
+
|
109
|
+
def case_after(c)
|
110
|
+
# implement each case after
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tbpgr_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &27471564 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 4.0.1
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *27471564
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &27471276 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '1.3'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *27471276
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &27471048 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *27471048
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &27470724 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: 2.14.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *27470724
|
58
58
|
description: Utilities
|
59
59
|
email:
|
60
60
|
- tbpgr@tbpgr.jp
|
@@ -77,14 +77,17 @@ files:
|
|
77
77
|
- lib/tbpgr_utils.rb
|
78
78
|
- lib/tbpgr_utils/version.rb
|
79
79
|
- lib/templatable.rb
|
80
|
-
-
|
80
|
+
- lib/test_toolbox.rb
|
81
|
+
- lib/test_toolbox/kernel.rb
|
81
82
|
- spec/attributes_initializable_spec.rb
|
82
83
|
- spec/ghostable_spec.rb
|
83
|
-
- spec/
|
84
|
-
- spec/
|
84
|
+
- spec/open_classes/array_spec.rb
|
85
|
+
- spec/open_classes/kernel_spec.rb
|
86
|
+
- spec/open_classes/object_spec.rb
|
87
|
+
- spec/open_classes/string_spec.rb
|
85
88
|
- spec/spec_helper.rb
|
86
|
-
- spec/string_spec.rb
|
87
89
|
- spec/templatable_spec.rb
|
90
|
+
- spec/test_toolbox/kernel_spec.rb
|
88
91
|
- tbpgr_utils.gemspec
|
89
92
|
homepage: https://github.com/tbpgr/tbpgr_utils
|
90
93
|
licenses:
|
@@ -112,12 +115,13 @@ signing_key:
|
|
112
115
|
specification_version: 3
|
113
116
|
summary: Utilities
|
114
117
|
test_files:
|
115
|
-
- spec/array_spec.rb
|
116
118
|
- spec/attributes_initializable_spec.rb
|
117
119
|
- spec/ghostable_spec.rb
|
118
|
-
- spec/
|
119
|
-
- spec/
|
120
|
+
- spec/open_classes/array_spec.rb
|
121
|
+
- spec/open_classes/kernel_spec.rb
|
122
|
+
- spec/open_classes/object_spec.rb
|
123
|
+
- spec/open_classes/string_spec.rb
|
120
124
|
- spec/spec_helper.rb
|
121
|
-
- spec/string_spec.rb
|
122
125
|
- spec/templatable_spec.rb
|
126
|
+
- spec/test_toolbox/kernel_spec.rb
|
123
127
|
has_rdoc:
|