tbpgr_utils 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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#print_eval|Print code + eval result|
28
- |Kernel#puts_eval|Puts code + eval result|
29
- |Object#any_of?|if self match any one of items, return true|
30
- |Object#boolean?|data type check for boolean|
31
- |Object#my_methods|return public/protected/private self define methods|
32
- |String#justify_table|justify pipe format table string|
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
@@ -2,5 +2,5 @@
2
2
 
3
3
  # Tbpgr Utilities
4
4
  module TbpgrUtils
5
- VERSION = '0.0.8'
5
+ VERSION = '0.0.9'
6
6
  end
data/lib/tbpgr_utils.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  require 'tbpgr_utils/version'
3
3
 
4
- # =Tbpgr Utilities
4
+ # Tbpgr Utilities
5
5
  module TbpgrUtils
6
6
  require 'open_classes/array'
7
7
  require 'open_classes/kernel'
@@ -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
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ # TestToolbox
4
+ module TestToolbox
5
+ require 'test_toolbox/kernel'
6
+ end
@@ -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 = get_stdout { print_eval c[:code], binding }
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 = get_stdout { puts_eval c[:code], binding }
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.8
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-15 00:00:00.000000000 Z
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: &29737188 !ruby/object:Gem::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: *29737188
24
+ version_requirements: *27471564
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &29736900 !ruby/object:Gem::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: *29736900
35
+ version_requirements: *27471276
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &29736672 !ruby/object:Gem::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: *29736672
46
+ version_requirements: *27471048
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &29736348 !ruby/object:Gem::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: *29736348
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
- - spec/array_spec.rb
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/kernel_spec.rb
84
- - spec/object_spec.rb
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/kernel_spec.rb
119
- - spec/object_spec.rb
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: