tbpgr_utils 0.0.36 → 0.0.37
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 +40 -1
- data/lib/open_classes/array/together.rb +23 -0
- data/lib/open_classes/array/together_at.rb +29 -0
- data/lib/open_classes/array/together_clear.rb +24 -0
- data/lib/open_classes/array/together_compact.rb +44 -0
- data/lib/open_classes/array/together_concat.rb +25 -0
- data/lib/open_classes/array/together_delete.rb +46 -0
- data/lib/open_classes/array/together_delete_at.rb +43 -0
- data/lib/open_classes/array/together_delete_if.rb +38 -0
- data/lib/open_classes/array/together_empty.rb +31 -0
- data/lib/open_classes/array/together_fill.rb +43 -0
- data/lib/open_classes/array/together_first.rb +40 -0
- data/lib/open_classes/array/together_helper.rb +25 -0
- data/lib/open_classes/array/together_include.rb +50 -0
- data/lib/open_classes/array/together_index.rb +34 -0
- data/lib/open_classes/array/together_insert.rb +34 -0
- data/lib/open_classes/array/together_last.rb +40 -0
- data/lib/open_classes/array/together_map.rb +87 -0
- data/lib/open_classes/array/together_pop.rb +47 -0
- data/lib/open_classes/array/together_reduce.rb +59 -0
- data/lib/open_classes/array/together_reverse.rb +53 -0
- data/lib/open_classes/array/together_sample.rb +49 -0
- data/lib/open_classes/array/together_select.rb +50 -0
- data/lib/open_classes/array/together_shift.rb +47 -0
- data/lib/open_classes/array/together_with_index.rb +24 -0
- data/lib/open_classes/array.rb +23 -718
- data/lib/tbpgr_utils/version.rb +1 -1
- data/spec/open_classes/array/together_at_spec.rb +61 -0
- data/spec/open_classes/array/together_clear_spec.rb +51 -0
- data/spec/open_classes/array/together_compact_spec.rb +103 -0
- data/spec/open_classes/array/together_concat_spec.rb +53 -0
- data/spec/open_classes/array/together_delete_at_spec.rb +78 -0
- data/spec/open_classes/array/together_delete_if_spec.rb +61 -0
- data/spec/open_classes/array/together_delete_spec.rb +80 -0
- data/spec/open_classes/array/together_empty_spec.rb +58 -0
- data/spec/open_classes/array/together_fill_spec.rb +79 -0
- data/spec/open_classes/array/together_first_spec.rb +84 -0
- data/spec/open_classes/array/together_include_spec.rb +100 -0
- data/spec/open_classes/array/together_index_spec.rb +69 -0
- data/spec/open_classes/array/together_insert_spec.rb +65 -0
- data/spec/open_classes/array/together_last_spec.rb +84 -0
- data/spec/open_classes/array/together_map_spec.rb +171 -0
- data/spec/open_classes/array/together_pop_spec.rb +105 -0
- data/spec/open_classes/array/together_reduce_spec.rb +100 -0
- data/spec/open_classes/array/together_reverse_spec.rb +119 -0
- data/spec/open_classes/array/together_select_spec.rb +76 -0
- data/spec/open_classes/array/together_shift_spec.rb +105 -0
- data/spec/open_classes/array/together_spec.rb +51 -0
- data/spec/open_classes/array/together_with_index_spec.rb +51 -0
- data/spec/open_classes/together_sample_spec.rb +122 -0
- data/spec/spec_helper.rb +1 -1
- metadata +82 -14
- data/spec/open_classes/array_spec.rb +0 -1699
@@ -0,0 +1,84 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_first do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'not args case',
|
11
|
+
inputs: [[*1..5], [*6..10]],
|
12
|
+
method_name: :together_first,
|
13
|
+
expected: [1, 6],
|
14
|
+
has_args: false,
|
15
|
+
},
|
16
|
+
{
|
17
|
+
case_no: 2,
|
18
|
+
case_title: 'has args 2 case',
|
19
|
+
inputs: [[*1..5], [*6..10]],
|
20
|
+
args: 2,
|
21
|
+
method_name: :together_first,
|
22
|
+
expected: [[1, 2], [6, 7]],
|
23
|
+
has_args: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
case_no: 3,
|
27
|
+
case_title: 'has args 0 case',
|
28
|
+
inputs: [[*1..5], [*6..10]],
|
29
|
+
args: 0,
|
30
|
+
method_name: :together_first,
|
31
|
+
expected: [[], []],
|
32
|
+
has_args: true,
|
33
|
+
},
|
34
|
+
{
|
35
|
+
case_no: 4,
|
36
|
+
case_title: 'has args over size case',
|
37
|
+
inputs: [[*1..5], [*6..10]],
|
38
|
+
args: 6,
|
39
|
+
method_name: :together_first,
|
40
|
+
expected: [[*1..5], [*6..10]],
|
41
|
+
has_args: true,
|
42
|
+
},
|
43
|
+
{
|
44
|
+
case_no: 5,
|
45
|
+
case_title: 'not args case(alias tfirst)',
|
46
|
+
inputs: [[*1..5], [*6..10]],
|
47
|
+
method_name: :tfirst,
|
48
|
+
expected: [1, 6],
|
49
|
+
has_args: false,
|
50
|
+
},
|
51
|
+
]
|
52
|
+
|
53
|
+
cases.each do |c|
|
54
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
55
|
+
begin
|
56
|
+
case_before c
|
57
|
+
|
58
|
+
# -- given --
|
59
|
+
# nothing
|
60
|
+
|
61
|
+
# -- when --
|
62
|
+
if c[:has_args]
|
63
|
+
actual = c[:inputs].send c[:method_name], c[:args]
|
64
|
+
else
|
65
|
+
actual = c[:inputs].send c[:method_name]
|
66
|
+
end
|
67
|
+
|
68
|
+
# -- then --
|
69
|
+
expect(actual).to eq(c[:expected])
|
70
|
+
ensure
|
71
|
+
case_after c
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def case_before(c)
|
76
|
+
# implement each case before
|
77
|
+
end
|
78
|
+
|
79
|
+
def case_after(c)
|
80
|
+
# implement each case after
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_include? do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'both include single ret case',
|
11
|
+
inputs: [[*1..5], [*5..9]],
|
12
|
+
value: 5,
|
13
|
+
method_name: :together_include?,
|
14
|
+
expected: true,
|
15
|
+
is_multi: false,
|
16
|
+
},
|
17
|
+
{
|
18
|
+
case_no: 2,
|
19
|
+
case_title: 'one include single ret case',
|
20
|
+
inputs: [[*1..5], [*5..9]],
|
21
|
+
value: 9,
|
22
|
+
method_name: :together_include?,
|
23
|
+
expected: true,
|
24
|
+
is_multi: false,
|
25
|
+
},
|
26
|
+
{
|
27
|
+
case_no: 3,
|
28
|
+
case_title: 'both not include single ret case',
|
29
|
+
inputs: [[*1..5], [*5..9]],
|
30
|
+
value: 10,
|
31
|
+
method_name: :together_include?,
|
32
|
+
expected: false,
|
33
|
+
is_multi: false,
|
34
|
+
},
|
35
|
+
{
|
36
|
+
case_no: 4,
|
37
|
+
case_title: 'both include multi ret case',
|
38
|
+
inputs: [[*1..5], [*5..9]],
|
39
|
+
value: 5,
|
40
|
+
method_name: :together_include?,
|
41
|
+
expected: [true, true],
|
42
|
+
is_multi: true,
|
43
|
+
},
|
44
|
+
{
|
45
|
+
case_no: 5,
|
46
|
+
case_title: 'one include multi ret case',
|
47
|
+
inputs: [[*1..5], [*5..9]],
|
48
|
+
value: 9,
|
49
|
+
method_name: :together_include?,
|
50
|
+
expected: [false, true],
|
51
|
+
is_multi: true,
|
52
|
+
},
|
53
|
+
{
|
54
|
+
case_no: 6,
|
55
|
+
case_title: 'both not include multi ret case',
|
56
|
+
inputs: [[*1..5], [*5..9]],
|
57
|
+
value: 10,
|
58
|
+
method_name: :together_include?,
|
59
|
+
expected: [false, false],
|
60
|
+
is_multi: true,
|
61
|
+
},
|
62
|
+
{
|
63
|
+
case_no: 7,
|
64
|
+
case_title: 'both include single ret case(alias tinclude?)',
|
65
|
+
inputs: [[*1..5], [*5..9]],
|
66
|
+
value: 5,
|
67
|
+
method_name: :tinclude?,
|
68
|
+
expected: true,
|
69
|
+
is_multi: false,
|
70
|
+
},
|
71
|
+
]
|
72
|
+
|
73
|
+
cases.each do |c|
|
74
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
75
|
+
begin
|
76
|
+
case_before c
|
77
|
+
|
78
|
+
# -- given --
|
79
|
+
# nothing
|
80
|
+
|
81
|
+
# -- when --
|
82
|
+
actual = c[:inputs].send c[:method_name], c[:value], c[:is_multi]
|
83
|
+
|
84
|
+
# -- then --
|
85
|
+
expect(actual).to eq(c[:expected])
|
86
|
+
ensure
|
87
|
+
case_after c
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def case_before(c)
|
92
|
+
# implement each case before
|
93
|
+
end
|
94
|
+
|
95
|
+
def case_after(c)
|
96
|
+
# implement each case after
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_index do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'both index exist case',
|
11
|
+
inputs: [[*1..5], [*5..9]],
|
12
|
+
value: 5,
|
13
|
+
method_name: :together_index,
|
14
|
+
expected: [4, 0],
|
15
|
+
},
|
16
|
+
{
|
17
|
+
case_no: 2,
|
18
|
+
case_title: 'one index exist case',
|
19
|
+
inputs: [[*1..5], [*5..9]],
|
20
|
+
value: 4,
|
21
|
+
method_name: :together_index,
|
22
|
+
expected: [3, nil],
|
23
|
+
},
|
24
|
+
{
|
25
|
+
case_no: 3,
|
26
|
+
case_title: 'both not exist index case',
|
27
|
+
inputs: [[*1..5], [*5..9]],
|
28
|
+
value: 10,
|
29
|
+
method_name: :together_index,
|
30
|
+
expected: [nil, nil],
|
31
|
+
},
|
32
|
+
{
|
33
|
+
case_no: 4,
|
34
|
+
case_title: 'both index exist case(alias tindex)',
|
35
|
+
inputs: [[*1..5], [*5..9]],
|
36
|
+
value: 5,
|
37
|
+
method_name: :tindex,
|
38
|
+
expected: [4, 0],
|
39
|
+
},
|
40
|
+
]
|
41
|
+
|
42
|
+
cases.each do |c|
|
43
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
44
|
+
begin
|
45
|
+
case_before c
|
46
|
+
|
47
|
+
# -- given --
|
48
|
+
# nothing
|
49
|
+
|
50
|
+
# -- when --
|
51
|
+
actual = c[:inputs].send c[:method_name], c[:value]
|
52
|
+
|
53
|
+
# -- then --
|
54
|
+
expect(actual).to eq(c[:expected])
|
55
|
+
ensure
|
56
|
+
case_after c
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def case_before(c)
|
61
|
+
# implement each case before
|
62
|
+
end
|
63
|
+
|
64
|
+
def case_after(c)
|
65
|
+
# implement each case after
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_insert do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'both insert exist case',
|
11
|
+
inputs: [[*1..5], [*5..9]],
|
12
|
+
exec_code: 'together_insert(1, 55, 66)',
|
13
|
+
expected: [[1, 55, 66, 2, 3, 4, 5], [5, 55, 66, 6, 7, 8, 9]],
|
14
|
+
},
|
15
|
+
{
|
16
|
+
case_no: 2,
|
17
|
+
case_title: 'both insert exist and minus index case',
|
18
|
+
inputs: [[*1..5], [*5..9]],
|
19
|
+
exec_code: 'together_insert(-2, 55, 66)',
|
20
|
+
expected: [[1, 2, 3, 4, 55, 66, 5], [5, 6, 7, 8, 55, 66, 9]],
|
21
|
+
},
|
22
|
+
{
|
23
|
+
case_no: 3,
|
24
|
+
case_title: 'both insert exist and over index case',
|
25
|
+
inputs: [[*1..5], [*5..9]],
|
26
|
+
exec_code: 'together_insert(6, 55, 66)',
|
27
|
+
expected: [[1, 2, 3, 4, 5, nil, 55, 66], [5, 6, 7, 8, 9, nil, 55, 66]],
|
28
|
+
},
|
29
|
+
{
|
30
|
+
case_no: 4,
|
31
|
+
case_title: 'both insert exist case(alias tinsert)',
|
32
|
+
inputs: [[*1..5], [*5..9]],
|
33
|
+
exec_code: 'tinsert(1, 55, 66)',
|
34
|
+
expected: [[1, 55, 66, 2, 3, 4, 5], [5, 55, 66, 6, 7, 8, 9]],
|
35
|
+
},
|
36
|
+
]
|
37
|
+
|
38
|
+
cases.each do |c|
|
39
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
40
|
+
begin
|
41
|
+
case_before c
|
42
|
+
|
43
|
+
# -- given --
|
44
|
+
# nothing
|
45
|
+
|
46
|
+
# -- when --
|
47
|
+
actual = eval "#{c[:inputs]}.#{c[:exec_code]}", binding
|
48
|
+
|
49
|
+
# -- then --
|
50
|
+
expect(actual).to eq(c[:expected])
|
51
|
+
ensure
|
52
|
+
case_after c
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def case_before(c)
|
57
|
+
# implement each case before
|
58
|
+
end
|
59
|
+
|
60
|
+
def case_after(c)
|
61
|
+
# implement each case after
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_last do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'not args case',
|
11
|
+
inputs: [[*1..5], [*6..10]],
|
12
|
+
method_name: :together_last,
|
13
|
+
expected: [5, 10],
|
14
|
+
has_args: false,
|
15
|
+
},
|
16
|
+
{
|
17
|
+
case_no: 2,
|
18
|
+
case_title: 'has args 2 case',
|
19
|
+
inputs: [[*1..5], [*6..10]],
|
20
|
+
args: 2,
|
21
|
+
method_name: :together_last,
|
22
|
+
expected: [[4, 5], [9, 10]],
|
23
|
+
has_args: true,
|
24
|
+
},
|
25
|
+
{
|
26
|
+
case_no: 3,
|
27
|
+
case_title: 'has args 0 case',
|
28
|
+
inputs: [[*1..5], [*6..10]],
|
29
|
+
args: 0,
|
30
|
+
method_name: :together_last,
|
31
|
+
expected: [[], []],
|
32
|
+
has_args: true,
|
33
|
+
},
|
34
|
+
{
|
35
|
+
case_no: 4,
|
36
|
+
case_title: 'has args over size case',
|
37
|
+
inputs: [[*1..5], [*6..10]],
|
38
|
+
args: 6,
|
39
|
+
method_name: :together_last,
|
40
|
+
expected: [[*1..5], [*6..10]],
|
41
|
+
has_args: true,
|
42
|
+
},
|
43
|
+
{
|
44
|
+
case_no: 5,
|
45
|
+
case_title: 'not args case(alias tlast)',
|
46
|
+
inputs: [[*1..5], [*6..10]],
|
47
|
+
method_name: :tlast,
|
48
|
+
expected: [5, 10],
|
49
|
+
has_args: false,
|
50
|
+
},
|
51
|
+
]
|
52
|
+
|
53
|
+
cases.each do |c|
|
54
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
55
|
+
begin
|
56
|
+
case_before c
|
57
|
+
|
58
|
+
# -- given --
|
59
|
+
# nothing
|
60
|
+
|
61
|
+
# -- when --
|
62
|
+
if c[:has_args]
|
63
|
+
actual = c[:inputs].send c[:method_name], c[:args]
|
64
|
+
else
|
65
|
+
actual = c[:inputs].send c[:method_name]
|
66
|
+
end
|
67
|
+
|
68
|
+
# -- then --
|
69
|
+
expect(actual).to eq(c[:expected])
|
70
|
+
ensure
|
71
|
+
case_after c
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def case_before(c)
|
76
|
+
# implement each case before
|
77
|
+
end
|
78
|
+
|
79
|
+
def case_after(c)
|
80
|
+
# implement each case after
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,171 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_map do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'valid case',
|
11
|
+
method_name: :together_map,
|
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
|
+
method_name: :together_map,
|
19
|
+
inputs: [[1, 2, 3], %w{one two}],
|
20
|
+
expected: ['1:one', '2:two', '3:'],
|
21
|
+
},
|
22
|
+
{
|
23
|
+
case_no: 3,
|
24
|
+
case_title: 'valid case',
|
25
|
+
method_name: :together_map,
|
26
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
27
|
+
expected: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
28
|
+
is_multi: true,
|
29
|
+
},
|
30
|
+
{
|
31
|
+
case_no: 4,
|
32
|
+
case_title: 'valid case(alias together_collect)',
|
33
|
+
method_name: :together_collect,
|
34
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
35
|
+
expected: ['1:one', '2:two', '3:three'],
|
36
|
+
},
|
37
|
+
{
|
38
|
+
case_no: 5,
|
39
|
+
case_title: 'valid case(alias tmap)',
|
40
|
+
method_name: :tmap,
|
41
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
42
|
+
expected: ['1:one', '2:two', '3:three'],
|
43
|
+
},
|
44
|
+
{
|
45
|
+
case_no: 6,
|
46
|
+
case_title: 'valid case(alias tcollect)',
|
47
|
+
method_name: :tcollect,
|
48
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
49
|
+
expected: ['1:one', '2:two', '3:three'],
|
50
|
+
},
|
51
|
+
]
|
52
|
+
|
53
|
+
cases.each do |c|
|
54
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
55
|
+
begin
|
56
|
+
case_before c
|
57
|
+
|
58
|
+
# -- given --
|
59
|
+
# nothing
|
60
|
+
|
61
|
+
# -- when/then --
|
62
|
+
if c[:is_multi]
|
63
|
+
actual = c[:inputs].method(c[:method_name]).call { |first, second|["#{first}:#{second}", "#{second}:#{first}"] }
|
64
|
+
else
|
65
|
+
actual = c[:inputs].method(c[:method_name]).call { |first, second|"#{first}:#{second}" }
|
66
|
+
end
|
67
|
+
|
68
|
+
expect(actual).to eq(c[:expected])
|
69
|
+
ensure
|
70
|
+
case_after c
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def case_before(c)
|
75
|
+
# implement each case before
|
76
|
+
end
|
77
|
+
|
78
|
+
def case_after(c)
|
79
|
+
# implement each case after
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context :together_map! do
|
85
|
+
cases = [
|
86
|
+
{
|
87
|
+
case_no: 1,
|
88
|
+
case_title: 'valid case',
|
89
|
+
method_name: :together_map!,
|
90
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
91
|
+
expected_ret: ['1:one', '2:two', '3:three'],
|
92
|
+
expected_self: ['1:one', '2:two', '3:three'],
|
93
|
+
},
|
94
|
+
{
|
95
|
+
case_no: 2,
|
96
|
+
case_title: 'contain nil case',
|
97
|
+
method_name: :together_map!,
|
98
|
+
inputs: [[1, 2, 3], %w{one two}],
|
99
|
+
expected_ret: ['1:one', '2:two', '3:'],
|
100
|
+
expected_self: ['1:one', '2:two', '3:'],
|
101
|
+
},
|
102
|
+
{
|
103
|
+
case_no: 3,
|
104
|
+
case_title: 'valid case',
|
105
|
+
method_name: :together_map!,
|
106
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
107
|
+
expected_ret: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
108
|
+
expected_self: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
109
|
+
is_multi: true,
|
110
|
+
},
|
111
|
+
{
|
112
|
+
case_no: 4,
|
113
|
+
case_title: 'valid case(alias together_collect!)',
|
114
|
+
method_name: :together_collect!,
|
115
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
116
|
+
expected_ret: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
117
|
+
expected_self: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
118
|
+
is_multi: true,
|
119
|
+
},
|
120
|
+
{
|
121
|
+
case_no: 5,
|
122
|
+
case_title: 'valid case(alias tmap!)',
|
123
|
+
method_name: :tmap!,
|
124
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
125
|
+
expected_ret: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
126
|
+
expected_self: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
127
|
+
is_multi: true,
|
128
|
+
},
|
129
|
+
{
|
130
|
+
case_no: 6,
|
131
|
+
case_title: 'valid case(alias tcollect!)',
|
132
|
+
method_name: :tcollect!,
|
133
|
+
inputs: [[1, 2, 3], %w{one two three}],
|
134
|
+
expected_ret: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
135
|
+
expected_self: [['1:one', '2:two', '3:three'], ['one:1', 'two:2', 'three:3']],
|
136
|
+
is_multi: true,
|
137
|
+
},
|
138
|
+
]
|
139
|
+
|
140
|
+
cases.each do |c|
|
141
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
142
|
+
begin
|
143
|
+
case_before c
|
144
|
+
|
145
|
+
# -- given --
|
146
|
+
# nothing
|
147
|
+
|
148
|
+
# -- when/then --
|
149
|
+
if c[:is_multi]
|
150
|
+
actual = c[:inputs].method(c[:method_name]).call { |first, second|["#{first}:#{second}", "#{second}:#{first}"] }
|
151
|
+
else
|
152
|
+
actual = c[:inputs].method(c[:method_name]).call { |first, second|"#{first}:#{second}" }
|
153
|
+
end
|
154
|
+
|
155
|
+
expect(actual).to eq(c[:expected_ret])
|
156
|
+
expect(c[:inputs]).to eq(c[:expected_self])
|
157
|
+
ensure
|
158
|
+
case_after c
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def case_before(c)
|
163
|
+
# implement each case before
|
164
|
+
end
|
165
|
+
|
166
|
+
def case_after(c)
|
167
|
+
# implement each case after
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'tbpgr_utils'
|
4
|
+
|
5
|
+
describe Array do
|
6
|
+
context :together_pop do
|
7
|
+
cases = [
|
8
|
+
{
|
9
|
+
case_no: 1,
|
10
|
+
case_title: 'not empty case',
|
11
|
+
inputs: [[1, 2], [5, 6]],
|
12
|
+
method_name: 'together_pop',
|
13
|
+
expected_ret: [2, 6],
|
14
|
+
expected_self: [[1], [5]],
|
15
|
+
},
|
16
|
+
{
|
17
|
+
case_no: 2,
|
18
|
+
case_title: 'one empty case',
|
19
|
+
inputs: [[1, 2], []],
|
20
|
+
method_name: 'together_pop',
|
21
|
+
expected_ret: [2, nil],
|
22
|
+
expected_self: [[1], []],
|
23
|
+
},
|
24
|
+
{
|
25
|
+
case_no: 3,
|
26
|
+
case_title: 'both empty case',
|
27
|
+
inputs: [[], []],
|
28
|
+
method_name: 'together_pop',
|
29
|
+
expected_ret: [nil, nil],
|
30
|
+
expected_self: [[], []],
|
31
|
+
},
|
32
|
+
{
|
33
|
+
case_no: 4,
|
34
|
+
case_title: 'not empty, has args case',
|
35
|
+
inputs: [[1, 2], [5, 6]],
|
36
|
+
method_name: 'together_pop',
|
37
|
+
args: 2,
|
38
|
+
expected_ret: [[1, 2], [5, 6]],
|
39
|
+
expected_self: [[], []],
|
40
|
+
has_args: true,
|
41
|
+
},
|
42
|
+
{
|
43
|
+
case_no: 5,
|
44
|
+
case_title: 'one empty, has args case',
|
45
|
+
inputs: [[1, 2], []],
|
46
|
+
method_name: 'together_pop',
|
47
|
+
args: 2,
|
48
|
+
expected_ret: [[1, 2], []],
|
49
|
+
expected_self: [[], []],
|
50
|
+
has_args: true,
|
51
|
+
},
|
52
|
+
{
|
53
|
+
case_no: 6,
|
54
|
+
case_title: 'both empty, has args case',
|
55
|
+
inputs: [[], []],
|
56
|
+
method_name: 'together_pop',
|
57
|
+
args: 2,
|
58
|
+
expected_ret: [[], []],
|
59
|
+
expected_self: [[], []],
|
60
|
+
has_args: true,
|
61
|
+
},
|
62
|
+
{
|
63
|
+
case_no: 7,
|
64
|
+
case_title: 'not empty case(alias tpop)',
|
65
|
+
inputs: [[1, 2], [5, 6]],
|
66
|
+
method_name: 'tpop',
|
67
|
+
expected_ret: [2, 6],
|
68
|
+
expected_self: [[1], [5]],
|
69
|
+
},
|
70
|
+
]
|
71
|
+
|
72
|
+
cases.each do |c|
|
73
|
+
it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
|
74
|
+
begin
|
75
|
+
case_before c
|
76
|
+
|
77
|
+
# -- given --
|
78
|
+
# nothing
|
79
|
+
|
80
|
+
# -- when --
|
81
|
+
actual = \
|
82
|
+
if c[:has_args]
|
83
|
+
c[:inputs].send c[:method_name], c[:args]
|
84
|
+
else
|
85
|
+
c[:inputs].send c[:method_name]
|
86
|
+
end
|
87
|
+
|
88
|
+
# -- then --
|
89
|
+
expect(actual).to eq(c[:expected_ret])
|
90
|
+
expect(c[:inputs]).to eq(c[:expected_self])
|
91
|
+
ensure
|
92
|
+
case_after c
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def case_before(c)
|
97
|
+
# implement each case before
|
98
|
+
end
|
99
|
+
|
100
|
+
def case_after(c)
|
101
|
+
# implement each case after
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|