tbpgr_utils 0.0.36 → 0.0.37

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/README.md +40 -1
  2. data/lib/open_classes/array/together.rb +23 -0
  3. data/lib/open_classes/array/together_at.rb +29 -0
  4. data/lib/open_classes/array/together_clear.rb +24 -0
  5. data/lib/open_classes/array/together_compact.rb +44 -0
  6. data/lib/open_classes/array/together_concat.rb +25 -0
  7. data/lib/open_classes/array/together_delete.rb +46 -0
  8. data/lib/open_classes/array/together_delete_at.rb +43 -0
  9. data/lib/open_classes/array/together_delete_if.rb +38 -0
  10. data/lib/open_classes/array/together_empty.rb +31 -0
  11. data/lib/open_classes/array/together_fill.rb +43 -0
  12. data/lib/open_classes/array/together_first.rb +40 -0
  13. data/lib/open_classes/array/together_helper.rb +25 -0
  14. data/lib/open_classes/array/together_include.rb +50 -0
  15. data/lib/open_classes/array/together_index.rb +34 -0
  16. data/lib/open_classes/array/together_insert.rb +34 -0
  17. data/lib/open_classes/array/together_last.rb +40 -0
  18. data/lib/open_classes/array/together_map.rb +87 -0
  19. data/lib/open_classes/array/together_pop.rb +47 -0
  20. data/lib/open_classes/array/together_reduce.rb +59 -0
  21. data/lib/open_classes/array/together_reverse.rb +53 -0
  22. data/lib/open_classes/array/together_sample.rb +49 -0
  23. data/lib/open_classes/array/together_select.rb +50 -0
  24. data/lib/open_classes/array/together_shift.rb +47 -0
  25. data/lib/open_classes/array/together_with_index.rb +24 -0
  26. data/lib/open_classes/array.rb +23 -718
  27. data/lib/tbpgr_utils/version.rb +1 -1
  28. data/spec/open_classes/array/together_at_spec.rb +61 -0
  29. data/spec/open_classes/array/together_clear_spec.rb +51 -0
  30. data/spec/open_classes/array/together_compact_spec.rb +103 -0
  31. data/spec/open_classes/array/together_concat_spec.rb +53 -0
  32. data/spec/open_classes/array/together_delete_at_spec.rb +78 -0
  33. data/spec/open_classes/array/together_delete_if_spec.rb +61 -0
  34. data/spec/open_classes/array/together_delete_spec.rb +80 -0
  35. data/spec/open_classes/array/together_empty_spec.rb +58 -0
  36. data/spec/open_classes/array/together_fill_spec.rb +79 -0
  37. data/spec/open_classes/array/together_first_spec.rb +84 -0
  38. data/spec/open_classes/array/together_include_spec.rb +100 -0
  39. data/spec/open_classes/array/together_index_spec.rb +69 -0
  40. data/spec/open_classes/array/together_insert_spec.rb +65 -0
  41. data/spec/open_classes/array/together_last_spec.rb +84 -0
  42. data/spec/open_classes/array/together_map_spec.rb +171 -0
  43. data/spec/open_classes/array/together_pop_spec.rb +105 -0
  44. data/spec/open_classes/array/together_reduce_spec.rb +100 -0
  45. data/spec/open_classes/array/together_reverse_spec.rb +119 -0
  46. data/spec/open_classes/array/together_select_spec.rb +76 -0
  47. data/spec/open_classes/array/together_shift_spec.rb +105 -0
  48. data/spec/open_classes/array/together_spec.rb +51 -0
  49. data/spec/open_classes/array/together_with_index_spec.rb +51 -0
  50. data/spec/open_classes/together_sample_spec.rb +122 -0
  51. data/spec/spec_helper.rb +1 -1
  52. metadata +82 -14
  53. 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