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 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: