tbpgr_utils 0.0.75 → 0.0.76
Sign up to get free protection for your applications and to get access to all the features.
- 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
|