tbpgr_utils 0.0.75 → 0.0.76
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 +29 -0
- data/lib/eval_helper/attr_init_class_code.rb +42 -0
- data/lib/eval_helper.rb +1 -0
- data/lib/open_classes/numeric/is_ascii.rb +18 -0
- data/lib/open_classes/numeric.rb +1 -0
- data/lib/open_classes/string/ascii1_other2_size.rb +21 -0
- data/lib/open_classes/string/justify_table.rb +4 -2
- data/lib/open_classes/string.rb +1 -0
- data/lib/simple_tournament.rb +57 -57
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/eval_helper/attr_init_class_code_spec.rb +58 -0
- data/spec/open_classes/numeric/is_ascii_spec.rb +55 -0
- data/spec/open_classes/string/ascii1_other2_size_spec.rb +61 -0
- data/spec/open_classes/string/justify_table_spec.rb +20 -0
- data/spec/simple_tournament_spec.rb +159 -159
- metadata +21 -12
data/README.md
CHANGED
@@ -90,6 +90,7 @@ Or install it yourself as:
|
|
90
90
|
|[TbpgrUtils Module.alias_methods](#modulealias_methods) |create alias methods |
|
91
91
|
|[TbpgrUtils Numeric#dice_back](#numericdice_back) |return dice back number |
|
92
92
|
|[TbpgrUtils Numeric#dozen](#numericdozen) |get dozen number |
|
93
|
+
|[TbpgrUtils Numeric#is_ascii?](#numericis_ascii) |get is_ascii number |
|
93
94
|
|[TbpgrUtils Object#any_of?](#objectany_of) |if self match any one of items, return true |
|
94
95
|
|[TbpgrUtils Object#boolean?](#objectboolean) |data type check for boolean |
|
95
96
|
|[TbpgrUtils Object#guard](#objectguard) |data type check for guard |
|
@@ -99,6 +100,7 @@ Or install it yourself as:
|
|
99
100
|
|[TbpgrUtils Object#to_bool](#objectto_bool) |syntax sugar of !!. convert [false, nil] => fasel, other => true. |
|
100
101
|
|[TbpgrUtils Object#unless_guard](#objectunless_guard) |data type check for unless_guard |
|
101
102
|
|[SimpleTournament](#simpletournament) |simple tournament |
|
103
|
+
|[TbpgrUtils String#ascii1_other2_size](#stringascii1_other2_size) |count string size. ascii => count1, not ascii => count2 |
|
102
104
|
|[TbpgrUtils String#comma_to_a](#stringcomma_to_a) |comma-format string to array |
|
103
105
|
|[TbpgrUtils String#hyphen_to_a](#stringhyphen_to_a) |hyphen-format string to array |
|
104
106
|
|[TbpgrUtils String#justify_table](#stringjustify_table) |justify pipe format table string |
|
@@ -2140,6 +2142,19 @@ require 'tbpgr_utils'
|
|
2140
2142
|
|
2141
2143
|
[back to list](#list)
|
2142
2144
|
|
2145
|
+
[back to list](#list)
|
2146
|
+
|
2147
|
+
### Numeric#is_ascii?
|
2148
|
+
|
2149
|
+
1,127,128 case
|
2150
|
+
~~~ruby
|
2151
|
+
require 'tbpgr_utils'
|
2152
|
+
|
2153
|
+
1.is_ascii? # => return true
|
2154
|
+
127.is_ascii? # => return true
|
2155
|
+
128.is_ascii? # => return false
|
2156
|
+
~~~
|
2157
|
+
|
2143
2158
|
### Object#any_of?
|
2144
2159
|
~~~ruby
|
2145
2160
|
require 'tbpgr_utils'
|
@@ -2314,6 +2329,19 @@ st.start_match Proc.new { |one, other|
|
|
2314
2329
|
print st.tournament # => [[3], [1, 3], [3, 2]]
|
2315
2330
|
~~~
|
2316
2331
|
|
2332
|
+
[back to list](#list)
|
2333
|
+
|
2334
|
+
### String#ascii1_other2_size
|
2335
|
+
~~~ruby
|
2336
|
+
require 'tbpgr_utils'
|
2337
|
+
|
2338
|
+
'abc'.ord.ascii1_other2_size # => 3
|
2339
|
+
'abc'.ord.ascii1_other2_size # => 6
|
2340
|
+
'aabbcc'.ord.ascii1_other2_size # => 9
|
2341
|
+
~~~
|
2342
|
+
|
2343
|
+
[back to list](#list)
|
2344
|
+
|
2317
2345
|
### String#comma_to_a
|
2318
2346
|
space commma case
|
2319
2347
|
|
@@ -2686,6 +2714,7 @@ if you are Sublime Text2 user, you can use snippet for TbpgrUtils.
|
|
2686
2714
|
https://github.com/tbpgr/tbpgr_utils_snippets
|
2687
2715
|
|
2688
2716
|
## History
|
2717
|
+
* version 0.0.76 : add EvalHelper#attr_init_class_code, Numeric#is_ascii?, String#ascii1_other2_size
|
2689
2718
|
* version 0.0.75 : add Object#method_nameable?
|
2690
2719
|
* version 0.0.74 : add Hash#table
|
2691
2720
|
* version 0.0.73 : add Kernel#evalb
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module EvalHelper
|
4
|
+
# create attr_accessor + initialize code, for eval
|
5
|
+
#
|
6
|
+
# ==== Examples
|
7
|
+
#
|
8
|
+
# class EvalHelperAttrInitTest
|
9
|
+
# include EvalHelper
|
10
|
+
#
|
11
|
+
# def hoge(hash)
|
12
|
+
# attr_init_class_code(hash[:class_name], hash[:fields])
|
13
|
+
# end
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# hash = {
|
17
|
+
# class_name: "Hoge",
|
18
|
+
# fields: [:hoge1, :hoge2, :hoge3],
|
19
|
+
# }
|
20
|
+
# EvalHelperAttrInitTest.new.hoge(hash)
|
21
|
+
#
|
22
|
+
# result
|
23
|
+
#
|
24
|
+
# require 'attributes_initializable'
|
25
|
+
#
|
26
|
+
# class Hoge
|
27
|
+
# include AttributesInitializable
|
28
|
+
# attr_accessor_init :hoge1, :hoge2, :hoge3
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
def attr_init_class_code(class_name, fields)
|
32
|
+
tmp_fields = fields.map { |v|":#{v.to_s}" }.join(', ')
|
33
|
+
<<-EOS
|
34
|
+
require 'attributes_initializable'
|
35
|
+
|
36
|
+
class #{class_name}
|
37
|
+
include AttributesInitializable
|
38
|
+
attr_accessor_init #{tmp_fields}
|
39
|
+
end
|
40
|
+
EOS
|
41
|
+
end
|
42
|
+
end
|
data/lib/eval_helper.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# Numeric
|
4
|
+
class Numeric
|
5
|
+
# return is ascii or not
|
6
|
+
#
|
7
|
+
# ==== Examples
|
8
|
+
#
|
9
|
+
# 1,127,128 case
|
10
|
+
#
|
11
|
+
# 1.is_ascii? # => return true
|
12
|
+
# 127.is_ascii? # => return true
|
13
|
+
# 128.is_ascii? # => return false
|
14
|
+
#
|
15
|
+
def is_ascii?
|
16
|
+
self < 128
|
17
|
+
end
|
18
|
+
end
|
data/lib/open_classes/numeric.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'open_classes/numeric/is_ascii'
|
3
|
+
|
4
|
+
# String
|
5
|
+
class String
|
6
|
+
# count string size. ascii => count1, not ascii => count2
|
7
|
+
#
|
8
|
+
def ascii1_other2_size
|
9
|
+
chars.to_a.reduce(0) do |sum, v|
|
10
|
+
case v.ord
|
11
|
+
when 65_393..65_437
|
12
|
+
sum += 1
|
13
|
+
when 1..127
|
14
|
+
sum += 1
|
15
|
+
else
|
16
|
+
sum += 2
|
17
|
+
end
|
18
|
+
sum
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -42,7 +42,8 @@ class String
|
|
42
42
|
columns = get_columuns(line)
|
43
43
|
line_ret = []
|
44
44
|
columns.each_with_index do |column, cnt|
|
45
|
-
|
45
|
+
diff = column.ascii1_other2_size - column.size
|
46
|
+
line_ret << column.ljust(max_sizes[cnt] - diff)
|
46
47
|
end
|
47
48
|
ret << "|#{line_ret.join('|')}|"
|
48
49
|
end
|
@@ -55,7 +56,8 @@ class String
|
|
55
56
|
|
56
57
|
def get_column_max(columns, max_sizes)
|
57
58
|
columns.each_with_index do |column, index|
|
58
|
-
current_size = column.
|
59
|
+
current_size = column.ascii1_other2_size
|
60
|
+
# current_size = column.size
|
59
61
|
if max_sizes[index].nil?
|
60
62
|
max_sizes << current_size
|
61
63
|
next
|
data/lib/open_classes/string.rb
CHANGED
data/lib/simple_tournament.rb
CHANGED
@@ -1,57 +1,57 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
# SimpleTournament
|
4
|
-
class SimpleTournament
|
5
|
-
attr_reader :tournament, :number, :
|
6
|
-
|
7
|
-
# initialize tournament by number
|
8
|
-
def initialize(number)
|
9
|
-
@number = number
|
10
|
-
@
|
11
|
-
cnt = 0
|
12
|
-
@tournament = []
|
13
|
-
while number >= (2**cnt)
|
14
|
-
tournament << Array.new(2**cnt)
|
15
|
-
cnt += 1
|
16
|
-
end
|
17
|
-
diff = number - (2**(cnt - 1))
|
18
|
-
@tournament << Array.new(diff * 2) unless (diff == 0)
|
19
|
-
end
|
20
|
-
|
21
|
-
# apply challengers to tournament
|
22
|
-
def apply_challengers(challengers)
|
23
|
-
fail 'incorrect challengers size. challengers must equals tournament.size' unless challengers.size == @number
|
24
|
-
@tournament.reverse_each do |outer|
|
25
|
-
outer.each_with_index do |v, i|
|
26
|
-
poped = challengers.pop
|
27
|
-
return @tournament if poped.nil?
|
28
|
-
outer[i] = poped
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# start tournament match. set result to tournament,
|
34
|
-
def start_match(proc)
|
35
|
-
@tournament.reverse_each.with_index do |outer, outer_index|
|
36
|
-
outer.reverse_each.with_index do |inner, inner_index|
|
37
|
-
next if inner_index.odd?
|
38
|
-
next if inner_index == outer.size - 1
|
39
|
-
rets = proc.call outer[-(inner_index + 1)], outer[-(inner_index + 2)]
|
40
|
-
winner = rets.first
|
41
|
-
@
|
42
|
-
set_winner(winner, outer_index)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
private
|
48
|
-
|
49
|
-
def set_winner(winner, outer_index)
|
50
|
-
@tournament[0..-(outer_index + 1)].reverse_each do |replace_outer|
|
51
|
-
replace_outer.reverse_each.with_index do |reverse_inner, reverse_inner_index|
|
52
|
-
next unless reverse_inner.nil?
|
53
|
-
return replace_outer[-(reverse_inner_index + 1)] = winner
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
# SimpleTournament
|
4
|
+
class SimpleTournament
|
5
|
+
attr_reader :tournament, :number, :matches
|
6
|
+
|
7
|
+
# initialize tournament by number
|
8
|
+
def initialize(number)
|
9
|
+
@number = number
|
10
|
+
@matches = []
|
11
|
+
cnt = 0
|
12
|
+
@tournament = []
|
13
|
+
while number >= (2**cnt)
|
14
|
+
tournament << Array.new(2**cnt)
|
15
|
+
cnt += 1
|
16
|
+
end
|
17
|
+
diff = number - (2**(cnt - 1))
|
18
|
+
@tournament << Array.new(diff * 2) unless (diff == 0)
|
19
|
+
end
|
20
|
+
|
21
|
+
# apply challengers to tournament
|
22
|
+
def apply_challengers(challengers)
|
23
|
+
fail 'incorrect challengers size. challengers must equals tournament.size' unless challengers.size == @number
|
24
|
+
@tournament.reverse_each do |outer|
|
25
|
+
outer.each_with_index do |v, i|
|
26
|
+
poped = challengers.pop
|
27
|
+
return @tournament if poped.nil?
|
28
|
+
outer[i] = poped
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# start tournament match. set result to tournament, matches
|
34
|
+
def start_match(proc)
|
35
|
+
@tournament.reverse_each.with_index do |outer, outer_index|
|
36
|
+
outer.reverse_each.with_index do |inner, inner_index|
|
37
|
+
next if inner_index.odd?
|
38
|
+
next if inner_index == outer.size - 1
|
39
|
+
rets = proc.call outer[-(inner_index + 1)], outer[-(inner_index + 2)], outer_index
|
40
|
+
winner = rets.first
|
41
|
+
@matches << rets.last
|
42
|
+
set_winner(winner, outer_index)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def set_winner(winner, outer_index)
|
50
|
+
@tournament[0..-(outer_index + 1)].reverse_each do |replace_outer|
|
51
|
+
replace_outer.reverse_each.with_index do |reverse_inner, reverse_inner_index|
|
52
|
+
next unless reverse_inner.nil?
|
53
|
+
return replace_outer[-(reverse_inner_index + 1)] = winner
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/tbpgr_utils/version.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'eval_helper'
|
4
|
+
|
5
|
+
describe 'EvalHelper' do
|
6
|
+
context :attr_init_class_code do
|
7
|
+
class EvalHelperAttrInitTest
|
8
|
+
include EvalHelper
|
9
|
+
|
10
|
+
def hoge(hash)
|
11
|
+
attr_init_class_code(hash[:class_name], hash[:fields])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
cases = [
|
15
|
+
{
|
16
|
+
case_no: 1,
|
17
|
+
case_title: 'unless case',
|
18
|
+
class_name: 'Hoge',
|
19
|
+
fields: [:hoge1, :hoge2, :hoge3],
|
20
|
+
expected: <<-EOS
|
21
|
+
require 'attributes_initializable'
|
22
|
+
|
23
|
+
class Hoge
|
24
|
+
include AttributesInitializable
|
25
|
+
attr_accessor_init :hoge1, :hoge2, :hoge3
|
26
|
+
end
|
27
|
+
EOS
|
28
|
+
},
|
29
|
+
]
|
30
|
+
|
31
|
+
cases.each do |c|
|
32
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
33
|
+
begin
|
34
|
+
case_before c
|
35
|
+
|
36
|
+
# -- given --
|
37
|
+
eval_helper = EvalHelperAttrInitTest.new
|
38
|
+
|
39
|
+
# -- when --
|
40
|
+
actual = eval_helper.hoge(c)
|
41
|
+
|
42
|
+
# -- then --
|
43
|
+
expect(actual).to eq(c[:expected])
|
44
|
+
ensure
|
45
|
+
case_after c
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def case_before(c)
|
50
|
+
# implement each case before
|
51
|
+
end
|
52
|
+
|
53
|
+
def case_after(c)
|
54
|
+
# implement each case after
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Numeric do
|
6
|
+
context :is_ascii? do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: '1 case',
|
11
|
+
input: 1,
|
12
|
+
expected: true,
|
13
|
+
},
|
14
|
+
{
|
15
|
+
case_no: 2,
|
16
|
+
case_title: '127 case',
|
17
|
+
input: 127,
|
18
|
+
expected: true,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
case_no: 3,
|
22
|
+
case_title: '128 case',
|
23
|
+
input: 128,
|
24
|
+
expected: false,
|
25
|
+
},
|
26
|
+
]
|
27
|
+
|
28
|
+
cases.each do |c|
|
29
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
30
|
+
begin
|
31
|
+
case_before c
|
32
|
+
|
33
|
+
# -- given --
|
34
|
+
# nothing
|
35
|
+
|
36
|
+
# -- when --
|
37
|
+
actual = c[:input].is_ascii?
|
38
|
+
|
39
|
+
# -- then --
|
40
|
+
expect(actual).to eq(c[:expected])
|
41
|
+
ensure
|
42
|
+
case_after c
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def case_before(c)
|
47
|
+
# implement each case before
|
48
|
+
end
|
49
|
+
|
50
|
+
def case_after(c)
|
51
|
+
# implement each case after
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'open_classes/string/ascii1_other2_size'
|
4
|
+
|
5
|
+
describe String do
|
6
|
+
context :ascii1_other2_size do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'only ascii case',
|
11
|
+
input: 'abc',
|
12
|
+
expected: 3,
|
13
|
+
},
|
14
|
+
{
|
15
|
+
case_no: 2,
|
16
|
+
case_title: 'only other case',
|
17
|
+
input: 'abc',
|
18
|
+
expected: 6,
|
19
|
+
},
|
20
|
+
{
|
21
|
+
case_no: 3,
|
22
|
+
case_title: 'mix case',
|
23
|
+
input: 'aabbcc',
|
24
|
+
expected: 9,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
case_no: 4,
|
28
|
+
case_title: 'han-kana case',
|
29
|
+
input: 'アン',
|
30
|
+
expected: 2,
|
31
|
+
},
|
32
|
+
]
|
33
|
+
|
34
|
+
cases.each do |c|
|
35
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
36
|
+
begin
|
37
|
+
case_before c
|
38
|
+
|
39
|
+
# -- given --
|
40
|
+
# nothing
|
41
|
+
|
42
|
+
# -- when --
|
43
|
+
actual = c[:input].ascii1_other2_size
|
44
|
+
|
45
|
+
# -- then --
|
46
|
+
expect(actual).to eq(c[:expected])
|
47
|
+
ensure
|
48
|
+
case_after c
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def case_before(c)
|
53
|
+
# implement each case before
|
54
|
+
end
|
55
|
+
|
56
|
+
def case_after(c)
|
57
|
+
# implement each case after
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -24,6 +24,20 @@ csv_column2_1, csv_column2_2
|
|
24
24
|
|yusei |matsui |
|
25
25
|
EOS
|
26
26
|
|
27
|
+
SAMPLE_TABLE4 = <<-EOS
|
28
|
+
|* firstあ name|* family いいname|
|
29
|
+
|eiichiro|oda|
|
30
|
+
|akira|toriyama|
|
31
|
+
|yusei|matsui|
|
32
|
+
EOS
|
33
|
+
|
34
|
+
SAMPLE_JUSTIFIED_TABLE4 = <<-EOS
|
35
|
+
|* firstあ name|* family いいname|
|
36
|
+
|eiichiro |oda |
|
37
|
+
|akira |toriyama |
|
38
|
+
|yusei |matsui |
|
39
|
+
EOS
|
40
|
+
|
27
41
|
cases = [
|
28
42
|
{
|
29
43
|
case_no: 1,
|
@@ -43,6 +57,12 @@ csv_column2_1, csv_column2_2
|
|
43
57
|
input: '',
|
44
58
|
expected: '',
|
45
59
|
},
|
60
|
+
{
|
61
|
+
case_no: 4,
|
62
|
+
case_title: 'ascii/other code mix valid justify case',
|
63
|
+
input: SAMPLE_TABLE4,
|
64
|
+
expected: SAMPLE_JUSTIFIED_TABLE4,
|
65
|
+
},
|
46
66
|
]
|
47
67
|
|
48
68
|
cases.each do |c|
|
@@ -1,159 +1,159 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
require 'simple_tournament'
|
4
|
-
|
5
|
-
describe SimpleTournament do
|
6
|
-
context :new do
|
7
|
-
cases = [
|
8
|
-
{
|
9
|
-
case_no: 1,
|
10
|
-
case_title: '3 case',
|
11
|
-
number: 3,
|
12
|
-
expected: [[nil], [nil, nil], [nil, nil]],
|
13
|
-
},
|
14
|
-
{
|
15
|
-
case_no: 2,
|
16
|
-
case_title: '4 case',
|
17
|
-
number: 4,
|
18
|
-
expected: [[nil], [nil, nil], [nil, nil, nil, nil]],
|
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
|
-
simple_tournament = SimpleTournament.new c[:number]
|
32
|
-
|
33
|
-
# -- then --
|
34
|
-
actual = simple_tournament.tournament
|
35
|
-
expect(actual).to eq(c[:expected])
|
36
|
-
ensure
|
37
|
-
case_after c
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
def case_before(c)
|
42
|
-
# implement each case before
|
43
|
-
end
|
44
|
-
|
45
|
-
def case_after(c)
|
46
|
-
# implement each case after
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context :apply_challengers do
|
52
|
-
cases = [
|
53
|
-
{
|
54
|
-
case_no: 1,
|
55
|
-
case_title: '3 case',
|
56
|
-
number: 3,
|
57
|
-
challengers: [*1..3],
|
58
|
-
expected: [[nil], [1, nil], [3, 2]],
|
59
|
-
},
|
60
|
-
{
|
61
|
-
case_no: 2,
|
62
|
-
case_title: '4 case',
|
63
|
-
number: 4,
|
64
|
-
challengers: [*1..4],
|
65
|
-
expected: [[nil], [nil, nil], [4, 3, 2, 1]],
|
66
|
-
},
|
67
|
-
]
|
68
|
-
|
69
|
-
cases.each do |c|
|
70
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
71
|
-
begin
|
72
|
-
case_before c
|
73
|
-
|
74
|
-
# -- given --
|
75
|
-
simple_tournament = SimpleTournament.new c[:number]
|
76
|
-
|
77
|
-
# -- when --
|
78
|
-
actual = simple_tournament.apply_challengers c[:challengers]
|
79
|
-
|
80
|
-
# -- then --
|
81
|
-
actual = simple_tournament.tournament
|
82
|
-
expect(actual).to eq(c[:expected])
|
83
|
-
ensure
|
84
|
-
case_after c
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def case_before(c)
|
89
|
-
# implement each case before
|
90
|
-
end
|
91
|
-
|
92
|
-
def case_after(c)
|
93
|
-
# implement each case after
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
|
98
|
-
context :start_match do
|
99
|
-
cases = [
|
100
|
-
{
|
101
|
-
case_no: 1,
|
102
|
-
case_title: '3 case',
|
103
|
-
number: 3,
|
104
|
-
challengers: [*1..3],
|
105
|
-
proc: proc do |one, other|
|
106
|
-
rets = []
|
107
|
-
winner = (one > other ? one : other)
|
108
|
-
rets << winner
|
109
|
-
rets << "#{one} : #{other} 's winner is #{winner}"
|
110
|
-
rets
|
111
|
-
end,
|
112
|
-
expected: [[3], [1, 3], [3, 2]],
|
113
|
-
},
|
114
|
-
{
|
115
|
-
case_no: 2,
|
116
|
-
case_title: '4 case',
|
117
|
-
number: 4,
|
118
|
-
challengers: [*1..4],
|
119
|
-
proc: proc do |one, other|
|
120
|
-
rets = []
|
121
|
-
winner = (one > other ? one : other)
|
122
|
-
rets << winner
|
123
|
-
rets << "#{one} : #{other} 's winner is #{winner}"
|
124
|
-
rets
|
125
|
-
end,
|
126
|
-
expected: [[4], [4, 2], [4, 3, 2, 1]],
|
127
|
-
},
|
128
|
-
]
|
129
|
-
|
130
|
-
cases.each do |c|
|
131
|
-
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
132
|
-
begin
|
133
|
-
case_before c
|
134
|
-
|
135
|
-
# -- given --
|
136
|
-
simple_tournament = SimpleTournament.new c[:number]
|
137
|
-
simple_tournament.apply_challengers c[:challengers]
|
138
|
-
|
139
|
-
# -- when --
|
140
|
-
simple_tournament.start_match c[:proc]
|
141
|
-
|
142
|
-
# -- then --
|
143
|
-
actual = simple_tournament.tournament
|
144
|
-
expect(actual).to eq(c[:expected])
|
145
|
-
ensure
|
146
|
-
case_after c
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def case_before(c)
|
151
|
-
# implement each case before
|
152
|
-
end
|
153
|
-
|
154
|
-
def case_after(c)
|
155
|
-
# implement each case after
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'simple_tournament'
|
4
|
+
|
5
|
+
describe SimpleTournament do
|
6
|
+
context :new do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: '3 case',
|
11
|
+
number: 3,
|
12
|
+
expected: [[nil], [nil, nil], [nil, nil]],
|
13
|
+
},
|
14
|
+
{
|
15
|
+
case_no: 2,
|
16
|
+
case_title: '4 case',
|
17
|
+
number: 4,
|
18
|
+
expected: [[nil], [nil, nil], [nil, nil, nil, nil]],
|
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
|
+
simple_tournament = SimpleTournament.new c[:number]
|
32
|
+
|
33
|
+
# -- then --
|
34
|
+
actual = simple_tournament.tournament
|
35
|
+
expect(actual).to eq(c[:expected])
|
36
|
+
ensure
|
37
|
+
case_after c
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def case_before(c)
|
42
|
+
# implement each case before
|
43
|
+
end
|
44
|
+
|
45
|
+
def case_after(c)
|
46
|
+
# implement each case after
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context :apply_challengers do
|
52
|
+
cases = [
|
53
|
+
{
|
54
|
+
case_no: 1,
|
55
|
+
case_title: '3 case',
|
56
|
+
number: 3,
|
57
|
+
challengers: [*1..3],
|
58
|
+
expected: [[nil], [1, nil], [3, 2]],
|
59
|
+
},
|
60
|
+
{
|
61
|
+
case_no: 2,
|
62
|
+
case_title: '4 case',
|
63
|
+
number: 4,
|
64
|
+
challengers: [*1..4],
|
65
|
+
expected: [[nil], [nil, nil], [4, 3, 2, 1]],
|
66
|
+
},
|
67
|
+
]
|
68
|
+
|
69
|
+
cases.each do |c|
|
70
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
71
|
+
begin
|
72
|
+
case_before c
|
73
|
+
|
74
|
+
# -- given --
|
75
|
+
simple_tournament = SimpleTournament.new c[:number]
|
76
|
+
|
77
|
+
# -- when --
|
78
|
+
actual = simple_tournament.apply_challengers c[:challengers]
|
79
|
+
|
80
|
+
# -- then --
|
81
|
+
actual = simple_tournament.tournament
|
82
|
+
expect(actual).to eq(c[:expected])
|
83
|
+
ensure
|
84
|
+
case_after c
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def case_before(c)
|
89
|
+
# implement each case before
|
90
|
+
end
|
91
|
+
|
92
|
+
def case_after(c)
|
93
|
+
# implement each case after
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
context :start_match do
|
99
|
+
cases = [
|
100
|
+
{
|
101
|
+
case_no: 1,
|
102
|
+
case_title: '3 case',
|
103
|
+
number: 3,
|
104
|
+
challengers: [*1..3],
|
105
|
+
proc: proc do |one, other, level|
|
106
|
+
rets = []
|
107
|
+
winner = (one > other ? one : other)
|
108
|
+
rets << winner
|
109
|
+
rets << level = "level=#{level} #{one} : #{other} 's winner is #{winner}"
|
110
|
+
rets
|
111
|
+
end,
|
112
|
+
expected: [[3], [1, 3], [3, 2]],
|
113
|
+
},
|
114
|
+
{
|
115
|
+
case_no: 2,
|
116
|
+
case_title: '4 case',
|
117
|
+
number: 4,
|
118
|
+
challengers: [*1..4],
|
119
|
+
proc: proc do |one, other, level|
|
120
|
+
rets = []
|
121
|
+
winner = (one > other ? one : other)
|
122
|
+
rets << winner
|
123
|
+
rets << "level=#{level} #{one} : #{other} 's winner is #{winner}"
|
124
|
+
rets
|
125
|
+
end,
|
126
|
+
expected: [[4], [4, 2], [4, 3, 2, 1]],
|
127
|
+
},
|
128
|
+
]
|
129
|
+
|
130
|
+
cases.each do |c|
|
131
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
132
|
+
begin
|
133
|
+
case_before c
|
134
|
+
|
135
|
+
# -- given --
|
136
|
+
simple_tournament = SimpleTournament.new c[:number]
|
137
|
+
simple_tournament.apply_challengers c[:challengers]
|
138
|
+
|
139
|
+
# -- when --
|
140
|
+
simple_tournament.start_match c[:proc]
|
141
|
+
|
142
|
+
# -- then --
|
143
|
+
actual = simple_tournament.tournament
|
144
|
+
expect(actual).to eq(c[:expected])
|
145
|
+
ensure
|
146
|
+
case_after c
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def case_before(c)
|
151
|
+
# implement each case before
|
152
|
+
end
|
153
|
+
|
154
|
+
def case_after(c)
|
155
|
+
# implement each case after
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
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.76
|
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-03-
|
12
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &26728164 !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: *26728164
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bundler
|
27
|
-
requirement: &
|
27
|
+
requirement: &26727876 !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: *26727876
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &26727648 !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: *26727648
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &26727324 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.14.1
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *26727324
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: simplecov
|
60
|
-
requirement: &
|
60
|
+
requirement: &26727024 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 0.8.2
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *26727024
|
69
69
|
description: Utilities
|
70
70
|
email:
|
71
71
|
- tbpgr@tbpgr.jp
|
@@ -87,6 +87,7 @@ files:
|
|
87
87
|
- lib/end_erb.rb
|
88
88
|
- lib/eval_helper.rb
|
89
89
|
- lib/eval_helper/attr_accessor_init_code.rb
|
90
|
+
- lib/eval_helper/attr_init_class_code.rb
|
90
91
|
- lib/eval_helper/each_brace_code.rb
|
91
92
|
- lib/eval_helper/each_do_code.rb
|
92
93
|
- lib/eval_helper/each_with_index_brace_code.rb
|
@@ -145,6 +146,7 @@ files:
|
|
145
146
|
- lib/open_classes/numeric.rb
|
146
147
|
- lib/open_classes/numeric/dice_back.rb
|
147
148
|
- lib/open_classes/numeric/dozen.rb
|
149
|
+
- lib/open_classes/numeric/is_ascii.rb
|
148
150
|
- lib/open_classes/object.rb
|
149
151
|
- lib/open_classes/object/any_of.rb
|
150
152
|
- lib/open_classes/object/boolean.rb
|
@@ -154,6 +156,7 @@ files:
|
|
154
156
|
- lib/open_classes/object/null.rb
|
155
157
|
- lib/open_classes/object/to_bool.rb
|
156
158
|
- lib/open_classes/string.rb
|
159
|
+
- lib/open_classes/string/ascii1_other2_size.rb
|
157
160
|
- lib/open_classes/string/comma_to_a.rb
|
158
161
|
- lib/open_classes/string/heading_helper.rb
|
159
162
|
- lib/open_classes/string/hyphen_to_a.rb
|
@@ -177,6 +180,7 @@ files:
|
|
177
180
|
- spec/attributes_hashable_spec.rb
|
178
181
|
- spec/attributes_initializable_spec.rb
|
179
182
|
- spec/eval_helper/attr_accessor_init_code_spec.rb
|
183
|
+
- spec/eval_helper/attr_init_class_code_spec.rb
|
180
184
|
- spec/eval_helper/each_brace_code_spec.rb
|
181
185
|
- spec/eval_helper/each_do_code_spec.rb
|
182
186
|
- spec/eval_helper/each_with_index_brace_code_spec.rb
|
@@ -230,6 +234,7 @@ files:
|
|
230
234
|
- spec/open_classes/module_spec.rb
|
231
235
|
- spec/open_classes/numeric/dice_back_spec.rb
|
232
236
|
- spec/open_classes/numeric/dozen_spec.rb
|
237
|
+
- spec/open_classes/numeric/is_ascii_spec.rb
|
233
238
|
- spec/open_classes/object/any_of_spec.rb
|
234
239
|
- spec/open_classes/object/boolean_spec.rb
|
235
240
|
- spec/open_classes/object/guard_spec.rb
|
@@ -237,6 +242,7 @@ files:
|
|
237
242
|
- spec/open_classes/object/my_methods_spec.rb
|
238
243
|
- spec/open_classes/object/null_spec.rb
|
239
244
|
- spec/open_classes/object/to_bool_spec.rb
|
245
|
+
- spec/open_classes/string/ascii1_other2_size_spec.rb
|
240
246
|
- spec/open_classes/string/comma_to_a_spec.rb
|
241
247
|
- spec/open_classes/string/hyphen_to_a_spec.rb
|
242
248
|
- spec/open_classes/string/justify_table_spec.rb
|
@@ -284,6 +290,7 @@ test_files:
|
|
284
290
|
- spec/attributes_hashable_spec.rb
|
285
291
|
- spec/attributes_initializable_spec.rb
|
286
292
|
- spec/eval_helper/attr_accessor_init_code_spec.rb
|
293
|
+
- spec/eval_helper/attr_init_class_code_spec.rb
|
287
294
|
- spec/eval_helper/each_brace_code_spec.rb
|
288
295
|
- spec/eval_helper/each_do_code_spec.rb
|
289
296
|
- spec/eval_helper/each_with_index_brace_code_spec.rb
|
@@ -337,6 +344,7 @@ test_files:
|
|
337
344
|
- spec/open_classes/module_spec.rb
|
338
345
|
- spec/open_classes/numeric/dice_back_spec.rb
|
339
346
|
- spec/open_classes/numeric/dozen_spec.rb
|
347
|
+
- spec/open_classes/numeric/is_ascii_spec.rb
|
340
348
|
- spec/open_classes/object/any_of_spec.rb
|
341
349
|
- spec/open_classes/object/boolean_spec.rb
|
342
350
|
- spec/open_classes/object/guard_spec.rb
|
@@ -344,6 +352,7 @@ test_files:
|
|
344
352
|
- spec/open_classes/object/my_methods_spec.rb
|
345
353
|
- spec/open_classes/object/null_spec.rb
|
346
354
|
- spec/open_classes/object/to_bool_spec.rb
|
355
|
+
- spec/open_classes/string/ascii1_other2_size_spec.rb
|
347
356
|
- spec/open_classes/string/comma_to_a_spec.rb
|
348
357
|
- spec/open_classes/string/hyphen_to_a_spec.rb
|
349
358
|
- spec/open_classes/string/justify_table_spec.rb
|