striuct 0.6.1 → 0.7.0

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.
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