striuct 0.6.1 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE.txt +21 -0
  3. data/README.md +19 -39
  4. data/lib/striuct.rb +3 -3
  5. data/lib/striuct/classmethods/README.md +2 -2
  6. data/lib/striuct/classmethods/adjustment.rb +15 -13
  7. data/lib/striuct/classmethods/attributes.rb +94 -92
  8. data/lib/striuct/classmethods/conflict_management.rb +109 -106
  9. data/lib/striuct/classmethods/constructor.rb +47 -54
  10. data/lib/striuct/classmethods/copy.rb +45 -43
  11. data/lib/striuct/classmethods/default.rb +23 -21
  12. data/lib/striuct/classmethods/enum.rb +46 -44
  13. data/lib/striuct/classmethods/fix.rb +23 -21
  14. data/lib/striuct/classmethods/hashdeepdupulicatable.rb +15 -15
  15. data/lib/striuct/classmethods/inner.rb +57 -55
  16. data/lib/striuct/classmethods/length.rb +12 -10
  17. data/lib/striuct/classmethods/macro.rb +110 -106
  18. data/lib/striuct/classmethods/names.rb +69 -65
  19. data/lib/striuct/classmethods/predicate.rb +131 -129
  20. data/lib/striuct/classmethods/requirements.rb +3 -1
  21. data/lib/striuct/classmethods/to_struct.rb +21 -18
  22. data/lib/striuct/classmethods/validation.rb +15 -13
  23. data/lib/striuct/instancemethods/README.md +2 -2
  24. data/lib/striuct/instancemethods/assign.rb +29 -27
  25. data/lib/striuct/instancemethods/cast.rb +28 -26
  26. data/lib/striuct/instancemethods/compare.rb +26 -24
  27. data/lib/striuct/instancemethods/default.rb +31 -29
  28. data/lib/striuct/instancemethods/delegate_class_methods.rb +35 -33
  29. data/lib/striuct/instancemethods/enum.rb +86 -84
  30. data/lib/striuct/instancemethods/getter.rb +39 -37
  31. data/lib/striuct/instancemethods/hashy.rb +99 -97
  32. data/lib/striuct/instancemethods/keyvalidatable.rb +8 -6
  33. data/lib/striuct/instancemethods/lock.rb +46 -44
  34. data/lib/striuct/instancemethods/object.rb +50 -48
  35. data/lib/striuct/instancemethods/requirements.rb +11 -9
  36. data/lib/striuct/instancemethods/safety.rb +11 -9
  37. data/lib/striuct/instancemethods/setter.rb +46 -45
  38. data/lib/striuct/instancemethods/to_s.rb +39 -37
  39. data/lib/striuct/instancemethods/validation.rb +31 -29
  40. data/lib/striuct/instancemethods/values.rb +50 -48
  41. data/lib/striuct/requirements.rb +3 -1
  42. data/lib/striuct/singleton_class.rb +12 -17
  43. data/lib/striuct/structs.rb +3 -3
  44. metadata +33 -178
  45. data/.gitignore +0 -35
  46. data/.travis.yml +0 -17
  47. data/.yardopts +0 -1
  48. data/Gemfile +0 -11
  49. data/MIT-LICENSE +0 -22
  50. data/Rakefile +0 -11
  51. data/benchmark/basics.rb +0 -56
  52. data/example/README.rb +0 -50
  53. data/example/example1.rb +0 -195
  54. data/example/example2.rb +0 -20
  55. data/example/see_trace.rb +0 -32
  56. data/striuct.gemspec +0 -45
  57. data/test/helper.rb +0 -3
  58. data/test/test_sglc-constructor.rb +0 -36
  59. data/test/test_subc-c-add_members.rb +0 -13
  60. data/test/test_subc-c-close_member.rb +0 -36
  61. data/test/test_subc-c-constructor.rb +0 -92
  62. data/test/test_subc-c-copy.rb +0 -71
  63. data/test/test_subc-c-freeze.rb +0 -36
  64. data/test/test_subc-c-inheritable.rb +0 -58
  65. data/test/test_subc-c-safety_naming.rb +0 -73
  66. data/test/test_subc-f-alias_member.rb +0 -54
  67. data/test/test_subc-f-enum.rb +0 -159
  68. data/test/test_subc-f-predicate.rb +0 -647
  69. data/test/test_subc-f-to_struct.rb +0 -61
  70. data/test/test_subc-f-validation_util.rb +0 -59
  71. data/test/test_subc-f_debug.rb +0 -39
  72. data/test/test_subc-f_name.rb +0 -525
  73. data/test/test_subc-i-accessor.rb +0 -138
  74. data/test/test_subc-i-adjuster.rb +0 -95
  75. data/test/test_subc-i-assign.rb +0 -53
  76. data/test/test_subc-i-basic.rb +0 -43
  77. data/test/test_subc-i-cast.rb +0 -27
  78. data/test/test_subc-i-compare.rb +0 -52
  79. data/test/test_subc-i-copy.rb +0 -23
  80. data/test/test_subc-i-default_value.rb +0 -129
  81. data/test/test_subc-i-freeze.rb +0 -19
  82. data/test/test_subc-i-hashlike.rb +0 -144
  83. data/test/test_subc-i-keyvalidatable.rb +0 -25
  84. data/test/test_subc-i-lock.rb +0 -40
  85. data/test/test_subc-i-must.rb +0 -30
  86. data/test/test_subc-i-to_s_family.rb +0 -26
  87. data/test/test_subc-i-validation_specific_conditions.rb +0 -297
  88. data/test/test_subc-i-validation_with_getter.rb +0 -33
  89. data/test/test_version.rb +0 -13
@@ -1,61 +0,0 @@
1
- require_relative 'helper'
2
-
3
- TopLevelSthForTest_to_Struct = Striuct.define do
4
- member :name, String
5
- member :age, Integer
6
- end
7
-
8
- class Test_Striuct_Subclass_to_Struct < Test::Unit::TestCase
9
-
10
- NestedSth = Striuct.define do
11
- member :name, String
12
- member :age, Integer
13
- end
14
-
15
- def teardown
16
- constants = Striuct::Structs.constants
17
- constants.each do |cons|
18
- Striuct::Structs.__send__ :remove_const, cons
19
- end
20
- end
21
-
22
- alias_method :setup, :teardown
23
-
24
- def test_raise
25
- assert_raises RuntimeError do
26
- Striuct.new.new.to_struct
27
- end
28
- end
29
-
30
- def test_noname
31
- assert_same 0, Striuct::Structs.constants.length
32
- struct_cls = Striuct.new(:a, :b, :c).new.to_struct
33
- assert_equal [:a, :b, :c], struct_cls.members
34
- assert_same 0, Striuct::Structs.constants.length
35
- end
36
-
37
- def test_to_nested_struct
38
- assert_same 0, Striuct::Structs.constants.length
39
- struct_cls = NestedSth.to_struct_class
40
- assert_same Struct, struct_cls.superclass
41
- assert_equal [:name, :age], struct_cls.members
42
- assert_same 1, Striuct::Structs.constants.length
43
- assert_equal 'Striuct::Structs::NestedSth', struct_cls.name
44
- assert_same struct_cls, NestedSth.to_struct_class
45
- assert_kind_of Struct, NestedSth.new.to_struct
46
- assert_instance_of Striuct::Structs::NestedSth, NestedSth.new.to_struct
47
- end
48
-
49
- def test_to_toplevel_struct
50
- assert_same 0, Striuct::Structs.constants.length
51
- struct_cls = TopLevelSthForTest_to_Struct.to_struct_class
52
- assert_same Struct, struct_cls.superclass
53
- assert_equal [:name, :age], struct_cls.members
54
- assert_same 1, Striuct::Structs.constants.length
55
- assert_equal 'Striuct::Structs::TopLevelSthForTest_to_Struct', struct_cls.name
56
- assert_same struct_cls, TopLevelSthForTest_to_Struct.to_struct_class
57
- assert_kind_of Struct, TopLevelSthForTest_to_Struct.new.to_struct
58
- assert_instance_of Striuct::Structs::TopLevelSthForTest_to_Struct, TopLevelSthForTest_to_Struct.new.to_struct
59
- end
60
-
61
- end
@@ -1,59 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_Validation_Util < Test::Unit::TestCase
4
-
5
- ALWAYS_OCCUR_ERROR = ->_{raise Exception}
6
- peep = nil
7
-
8
- Foo = Striuct.define do
9
- member :foo, nil
10
- member :bar, ALWAYS_OCCUR_ERROR
11
- member :hoge
12
- peep = AND(String, /./)
13
- member :some_str, peep
14
- end
15
-
16
- SOME_STR = peep
17
-
18
- def test_predicate_restrict?
19
- assert_same true, Foo.restrict?(:foo)
20
- assert_same true, Foo.restrict?(:bar)
21
- assert_same false, Foo.restrict?(:hoge)
22
- assert_same true, Foo.new.restrict?(:foo)
23
- assert_same true, Foo.new.restrict?(:bar)
24
- assert_same false, Foo.new.restrict?(:hoge)
25
- end
26
-
27
- def test_predicate_with_condition?
28
- assert_same true, Foo.with_condition?(:foo)
29
- assert_same true, Foo.with_condition?(:bar)
30
- assert_same false, Foo.with_condition?(:hoge)
31
- assert_same true, Foo.new.with_condition?(:foo)
32
- assert_same true, Foo.new.with_condition?(:bar)
33
- assert_same false, Foo.new.with_condition?(:hoge)
34
- end
35
-
36
- def test_predicate_instance_sufficient?
37
- foo = Foo.new
38
- assert_same true, foo.sufficient?(:foo)
39
- assert_same false, foo.sufficient?(:bar)
40
- assert_same true, foo.sufficient?(:hoge)
41
- assert_same false, foo.sufficient?(:some_str)
42
- foo.some_str = ':)'
43
- assert_same true, foo.sufficient?(:some_str)
44
- foo.some_str.clear
45
- assert_same false, foo.sufficient?(:some_str)
46
- end
47
-
48
- def test_condition_for
49
- foo = Foo.new
50
- assert_same nil, foo.condition_for(:foo)
51
- assert_same ALWAYS_OCCUR_ERROR, foo.condition_for(:bar)
52
- assert_raises KeyError do
53
- foo.condition_for(:hoge)
54
- end
55
- assert_same SOME_STR, foo.condition_for(:some_str)
56
- end
57
-
58
-
59
- end
@@ -1,39 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_Debug < Test::Unit::TestCase
4
-
5
- Subclass = Striuct.define do
6
- member :foo
7
- member :bar
8
- alias_member :als_foo, :foo
9
- end.freeze
10
-
11
- INSTANCE = Subclass.new.freeze
12
-
13
- TYPE_PAIRS = {
14
- Class: Subclass,
15
- Instance: INSTANCE
16
- }.freeze
17
-
18
- [:attributes].each do |callee|
19
- TYPE_PAIRS.each_pair do |type, reciever|
20
- define_method :"test_#{type}_#{callee}" do
21
- assert_same true, reciever.public_methods.include?(callee)
22
- ret = reciever.public_send(callee)
23
- assert_instance_of Hash, ret
24
- assert_equal [:autonyms, :aliases, :conflict_management_level, :attributes_each_autonym], ret.keys
25
- assert_equal Subclass.autonyms, ret.fetch(:autonyms)
26
- assert_equal Subclass.aliases, ret.fetch(:aliases)
27
- assert_equal Subclass.conflict_management_level, ret.fetch(:conflict_management_level)
28
- assert_equal Subclass.instance_variable_get(:@attributes), ret.fetch(:attributes_each_autonym)
29
-
30
- 10.times do
31
- ret2 = reciever.public_send(callee)
32
- assert_not_same ret, ret2
33
- assert_equal ret, ret2
34
- end
35
- end
36
- end
37
- end
38
-
39
- end
@@ -1,525 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_Name < Test::Unit::TestCase
4
-
5
- # for peep
6
- origin_autonyms = nil
7
- origin_aliases = nil
8
-
9
- Subclass = Striuct.define do
10
- origin_autonyms = @autonyms
11
- origin_aliases = @aliases
12
-
13
- member :foo
14
- member :bar
15
- alias_member :als_foo, :foo
16
-
17
- close_member
18
- end.freeze
19
-
20
- INSTANCE = Subclass.new.freeze
21
-
22
- TYPE_PAIRS = {
23
- Class: Subclass,
24
- Instance: INSTANCE
25
- }.freeze
26
-
27
- [:_autonyms].each do |callee|
28
- TYPE_PAIRS.each_pair do |type, reciever|
29
- define_method :"test_#{type}_#{callee}" do
30
- assert_equal true, reciever.private_methods.include?(callee)
31
-
32
- assert_raises NoMethodError do
33
- reciever.public_send(callee)
34
- end
35
-
36
- assert_same origin_autonyms, reciever.__send__(callee)
37
- end
38
- end
39
- end
40
-
41
- [:autonyms, :members].each do |callee|
42
- TYPE_PAIRS.each_pair do |type, reciever|
43
- define_method :"test_#{type}_#{callee}" do
44
- assert_same true, reciever.public_methods.include?(callee)
45
- ret = reciever.public_send(callee)
46
- assert_not_same origin_autonyms, ret
47
- assert_equal origin_autonyms, ret
48
-
49
- 10.times do
50
- ret2 = reciever.public_send(callee)
51
- assert_not_same ret, ret2
52
- assert_equal ret, ret2
53
- end
54
- end
55
- end
56
- end
57
-
58
- [:all_members].each do |callee|
59
- TYPE_PAIRS.each_pair do |type, reciever|
60
- define_method :"test_#{type}_#{callee}" do
61
- assert_same true, reciever.public_methods.include?(callee)
62
- ret = reciever.public_send(callee)
63
- assert_equal [*origin_autonyms, :als_foo], ret
64
-
65
- 10.times do
66
- ret2 = reciever.public_send(callee)
67
- assert_not_same ret, ret2
68
- assert_equal ret, ret2
69
- end
70
- end
71
- end
72
- end
73
-
74
- [:aliases].each do |callee|
75
- TYPE_PAIRS.each_pair do |type, reciever|
76
- define_method :"test_#{type}_#{callee}" do
77
- assert_same true, reciever.public_methods.include?(callee)
78
- ret = reciever.public_send(callee)
79
- assert_not_same(origin_aliases, ret)
80
- assert_equal({:als_foo => :foo}, ret)
81
-
82
- 10.times do
83
- ret2 = reciever.public_send(callee)
84
- assert_not_same(origin_aliases, ret2)
85
- assert_not_same ret, ret2
86
- assert_equal ret, ret2
87
- end
88
- end
89
- end
90
- end
91
-
92
- [:autonym_for_alias].each do |callee|
93
- TYPE_PAIRS.each_pair do |type, reciever|
94
- define_method :"test_#{type}_#{callee}" do
95
- assert_same true, reciever.public_methods.include?(callee)
96
-
97
- assert_raises NoMethodError, TypeError do
98
- reciever.public_send(callee, BasicObject.new)
99
- end
100
-
101
- assert_raises TypeError do
102
- reciever.public_send(callee, Object.new)
103
- end
104
-
105
- assert_raises NameError do
106
- reciever.public_send(callee, :foo)
107
- end
108
-
109
- assert_same :foo, reciever.public_send(callee, :als_foo)
110
-
111
-
112
- assert_raises NameError do
113
- reciever.public_send(callee, 'foo')
114
- end
115
-
116
- assert_same :foo, reciever.public_send(callee, 'als_foo')
117
-
118
- assert_raises TypeError do
119
- reciever.public_send(callee, 0)
120
- end
121
-
122
- assert_raises TypeError do
123
- reciever.public_send(callee, 0.9)
124
- end
125
-
126
- assert_raises NameError do
127
- reciever.public_send(callee, :bar)
128
- end
129
-
130
- assert_raises NameError do
131
- reciever.public_send(callee, :als_bar)
132
- end
133
-
134
- assert_raises NameError do
135
- reciever.public_send(callee, 'bar')
136
- end
137
-
138
- assert_raises NameError do
139
- reciever.public_send(callee, 'als_bar')
140
- end
141
-
142
- assert_raises TypeError do
143
- reciever.public_send(callee, 1)
144
- end
145
-
146
- assert_raises TypeError do
147
- reciever.public_send(callee, 1.9)
148
- end
149
-
150
- assert_raises NameError do
151
- reciever.public_send(callee, :none)
152
- end
153
-
154
- assert_raises NameError do
155
- reciever.public_send(callee, :als_none)
156
- end
157
-
158
- assert_raises NameError do
159
- reciever.public_send(callee, 'none')
160
- end
161
-
162
- assert_raises NameError do
163
- reciever.public_send(callee, 'als_none')
164
- end
165
-
166
- assert_raises TypeError do
167
- reciever.public_send(callee, 2)
168
- end
169
-
170
- assert_raises TypeError do
171
- reciever.public_send(callee, 2.9)
172
- end
173
- end
174
- end
175
- end
176
-
177
- [:autonym_for_member].each do |callee|
178
- TYPE_PAIRS.each_pair do |type, reciever|
179
- define_method :"test_#{type}_#{callee}" do
180
- assert_same true, reciever.public_methods.include?(callee)
181
-
182
- assert_raises NoMethodError, TypeError do
183
- reciever.public_send(callee, BasicObject.new)
184
- end
185
-
186
- assert_raises TypeError do
187
- reciever.public_send(callee, Object.new)
188
- end
189
-
190
- assert_same :foo, reciever.public_send(callee, :foo)
191
- assert_same :foo, reciever.public_send(callee, :als_foo)
192
- assert_same :foo, reciever.public_send(callee, 'foo')
193
- assert_same :foo, reciever.public_send(callee, 'als_foo')
194
-
195
- assert_raises TypeError do
196
- reciever.public_send(callee, 0)
197
- end
198
-
199
- assert_raises TypeError do
200
- reciever.public_send(callee, 0.9)
201
- end
202
-
203
- assert_same :bar, reciever.public_send(callee, :bar)
204
-
205
- assert_raises NameError do
206
- reciever.public_send(callee, :als_bar)
207
- end
208
-
209
- assert_same :bar, reciever.public_send(callee, 'bar')
210
-
211
- assert_raises NameError do
212
- reciever.public_send(callee, 'als_bar')
213
- end
214
-
215
- assert_raises TypeError do
216
- reciever.public_send(callee, 1)
217
- end
218
-
219
- assert_raises TypeError do
220
- reciever.public_send(callee, 1.9)
221
- end
222
-
223
- assert_raises NameError do
224
- reciever.public_send(callee, :none)
225
- end
226
-
227
- assert_raises NameError do
228
- reciever.public_send(callee, :als_none)
229
- end
230
-
231
- assert_raises NameError do
232
- reciever.public_send(callee, 'none')
233
- end
234
-
235
- assert_raises NameError do
236
- reciever.public_send(callee, 'als_none')
237
- end
238
-
239
- assert_raises TypeError do
240
- reciever.public_send(callee, 2)
241
- end
242
-
243
- assert_raises TypeError do
244
- reciever.public_send(callee, 2.9)
245
- end
246
- end
247
- end
248
- end
249
-
250
-
251
- [:autonym_for_index].each do |callee|
252
- TYPE_PAIRS.each_pair do |type, reciever|
253
- define_method :"test_#{type}_#{callee}" do
254
- assert_same true, reciever.public_methods.include?(callee)
255
-
256
- assert_raises NoMethodError, TypeError do
257
- reciever.public_send(callee, BasicObject.new)
258
- end
259
-
260
- assert_raises TypeError do
261
- reciever.public_send(callee, Object.new)
262
- end
263
-
264
- assert_raises TypeError do
265
- reciever.public_send(callee, :foo)
266
- end
267
-
268
- assert_raises TypeError do
269
- reciever.public_send(callee, :als_foo)
270
- end
271
-
272
- assert_raises TypeError do
273
- reciever.public_send(callee, 'foo')
274
- end
275
-
276
- assert_raises TypeError do
277
- reciever.public_send(callee, 'als_foo')
278
- end
279
-
280
- assert_same :foo, reciever.public_send(callee, 0)
281
- assert_same :foo, reciever.public_send(callee, 0.9)
282
- assert_same :foo, reciever.public_send(callee, -2)
283
- assert_same :foo, reciever.public_send(callee, -2.9)
284
-
285
- assert_raises TypeError do
286
- reciever.public_send(callee, :bar)
287
- end
288
-
289
- assert_raises TypeError do
290
- reciever.public_send(callee, :als_bar)
291
- end
292
-
293
- assert_raises TypeError do
294
- reciever.public_send(callee, 'bar')
295
- end
296
-
297
- assert_raises TypeError do
298
- reciever.public_send(callee, 'als_bar')
299
- end
300
-
301
- assert_same :bar, reciever.public_send(callee, 1)
302
- assert_same :bar, reciever.public_send(callee, 1.9)
303
- assert_same :bar, reciever.public_send(callee, -1)
304
- assert_same :bar, reciever.public_send(callee, -1.9)
305
-
306
- assert_raises TypeError do
307
- reciever.public_send(callee, :none)
308
- end
309
-
310
- assert_raises TypeError do
311
- reciever.public_send(callee, :als_none)
312
- end
313
-
314
- assert_raises TypeError do
315
- reciever.public_send(callee, 'none')
316
- end
317
-
318
- assert_raises TypeError do
319
- reciever.public_send(callee, 'als_none')
320
- end
321
-
322
- assert_raises IndexError do
323
- reciever.public_send(callee, 2)
324
- end
325
-
326
- assert_raises IndexError do
327
- reciever.public_send(callee, 2.9)
328
- end
329
-
330
- assert_raises IndexError do
331
- reciever.public_send(callee, -3)
332
- end
333
-
334
- assert_raises IndexError do
335
- reciever.public_send(callee, -3.9)
336
- end
337
- end
338
- end
339
- end
340
-
341
- [:autonym_for_key].each do |callee|
342
- TYPE_PAIRS.each_pair do |type, reciever|
343
- define_method :"test_#{type}_#{callee}" do
344
- assert_same true, reciever.public_methods.include?(callee)
345
-
346
- assert_raises KeyError do
347
- reciever.public_send(callee, BasicObject.new)
348
- end
349
-
350
- assert_raises KeyError do
351
- reciever.public_send(callee, Object.new)
352
- end
353
-
354
- assert_same :foo, reciever.public_send(callee, :foo)
355
- assert_same :foo, reciever.public_send(callee, :als_foo)
356
- assert_same :foo, reciever.public_send(callee, 'foo')
357
- assert_same :foo, reciever.public_send(callee, 'als_foo')
358
- assert_same :foo, reciever.public_send(callee, 0)
359
- assert_same :foo, reciever.public_send(callee, 0.9)
360
- assert_same :foo, reciever.public_send(callee, -2)
361
- assert_same :foo, reciever.public_send(callee, -2.9)
362
-
363
- assert_same :bar, reciever.public_send(callee, :bar)
364
-
365
- assert_raises KeyError do
366
- assert_same :bar, reciever.public_send(callee, :als_bar)
367
- end
368
-
369
- assert_same :bar, reciever.public_send(callee, 'bar')
370
-
371
- assert_raises KeyError do
372
- assert_same :bar, reciever.public_send(callee, 'als_bar')
373
- end
374
-
375
- assert_same :bar, reciever.public_send(callee, 1)
376
- assert_same :bar, reciever.public_send(callee, 1.9)
377
- assert_same :bar, reciever.public_send(callee, -1)
378
- assert_same :bar, reciever.public_send(callee, -1.9)
379
-
380
- assert_raises KeyError do
381
- reciever.public_send(callee, :none)
382
- end
383
-
384
- assert_raises KeyError do
385
- reciever.public_send(callee, :als_none)
386
- end
387
-
388
- assert_raises KeyError do
389
- reciever.public_send(callee, 'none')
390
- end
391
-
392
- assert_raises KeyError do
393
- reciever.public_send(callee, 'als_none')
394
- end
395
-
396
- assert_raises KeyError do
397
- reciever.public_send(callee, 2)
398
- end
399
-
400
- assert_raises KeyError do
401
- reciever.public_send(callee, 2.9)
402
- end
403
-
404
- assert_raises KeyError do
405
- reciever.public_send(callee, -3)
406
- end
407
-
408
- assert_raises KeyError do
409
- reciever.public_send(callee, -3.9)
410
- end
411
- end
412
- end
413
- end
414
-
415
- [:aliases_for_autonym].each do |callee|
416
- TYPE_PAIRS.each_pair do |type, reciever|
417
- define_method :"test_#{type}_#{callee}" do
418
- assert_same true, reciever.public_methods.include?(callee)
419
-
420
- assert_raises NoMethodError, TypeError do
421
- reciever.public_send(callee, BasicObject.new)
422
- end
423
-
424
- assert_raises TypeError do
425
- reciever.public_send(callee, Object.new)
426
- end
427
-
428
- assert_equal [:als_foo], reciever.public_send(callee, :foo)
429
-
430
- assert_raises NameError do
431
- reciever.public_send(callee, :als_foo)
432
- end
433
-
434
- assert_equal [:als_foo], reciever.public_send(callee, 'foo')
435
-
436
- assert_raises NameError do
437
- reciever.public_send(callee, 'als_foo')
438
- end
439
-
440
- assert_raises TypeError do
441
- reciever.public_send(callee, 0)
442
- end
443
-
444
- assert_raises TypeError do
445
- reciever.public_send(callee, 0.9)
446
- end
447
-
448
- assert_raises NameError do
449
- reciever.public_send(callee, :bar)
450
- end
451
-
452
- assert_raises NameError do
453
- reciever.public_send(callee, :als_bar)
454
- end
455
-
456
- assert_raises NameError do
457
- reciever.public_send(callee, 'bar')
458
- end
459
-
460
- assert_raises NameError do
461
- reciever.public_send(callee, 'als_bar')
462
- end
463
-
464
- assert_raises TypeError do
465
- reciever.public_send(callee, 1)
466
- end
467
-
468
- assert_raises TypeError do
469
- reciever.public_send(callee, 1.9)
470
- end
471
-
472
- assert_raises NameError do
473
- reciever.public_send(callee, :none)
474
- end
475
-
476
- assert_raises NameError do
477
- reciever.public_send(callee, :als_none)
478
- end
479
-
480
- assert_raises NameError do
481
- reciever.public_send(callee, 'none')
482
- end
483
-
484
- assert_raises NameError do
485
- reciever.public_send(callee, 'als_none')
486
- end
487
-
488
- assert_raises TypeError do
489
- reciever.public_send(callee, 2)
490
- end
491
-
492
- assert_raises TypeError do
493
- reciever.public_send(callee, 2.9)
494
- end
495
- end
496
- end
497
- end
498
-
499
- aliase_for_autonym_ext_pairs = {}.tap {|h|
500
- h[:Class] = Striuct.define do
501
- member :foo
502
- alias_member :als1_foo, :foo
503
- member :bar
504
- alias_member :als1_bar, :bar
505
- alias_member :als2_foo, :foo
506
- alias_member :als3_foo, :foo
507
- member :xyz
508
- end.freeze
509
-
510
- h[:Instance] = h[:Class].new.freeze
511
- }.freeze
512
-
513
- [:aliases_for_autonym].each do |callee|
514
- aliase_for_autonym_ext_pairs.each_pair do |type, reciever|
515
- define_method :"test_#{type}_#{callee}_2" do
516
- assert_equal [:als1_foo, :als2_foo, :als3_foo], reciever.public_send(callee, 'foo')
517
- assert_equal [:als1_bar], reciever.public_send(callee, 'bar')
518
- assert_raises NameError do
519
- reciever.public_send(callee, 'xyz')
520
- end
521
- end
522
- end
523
- end
524
-
525
- end