striuct 0.3.5.1 → 0.4.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.
- data/.travis.yml +3 -0
- data/.yardopts +1 -1
- data/LICENSE +1 -1
- data/README.md +7 -3
- data/example/example1.rb +5 -4
- data/lib/striuct/classmethods/README.md +9 -4
- data/lib/striuct/classmethods/adjustment.rb +4 -15
- data/lib/striuct/{attributes.rb → classmethods/attributes.rb} +15 -17
- data/lib/striuct/classmethods/{prevent_conflicts.rb → conflict_management.rb} +37 -14
- data/lib/striuct/classmethods/constructor.rb +2 -4
- data/lib/striuct/classmethods/copy.rb +2 -2
- data/lib/striuct/classmethods/default.rb +9 -18
- data/lib/striuct/classmethods/enum.rb +3 -5
- data/lib/striuct/classmethods/inner.rb +6 -10
- data/lib/striuct/classmethods/macro.rb +33 -48
- data/lib/striuct/classmethods/names.rb +75 -0
- data/lib/striuct/classmethods/predicate.rb +128 -0
- data/lib/striuct/classmethods/{requiremnets.rb → requirements.rb} +6 -3
- data/lib/striuct/classmethods/validation.rb +5 -43
- data/lib/striuct/instancemethods/README.md +4 -4
- data/lib/striuct/instancemethods/assign.rb +11 -13
- data/lib/striuct/instancemethods/cast.rb +5 -8
- data/lib/striuct/instancemethods/compare.rb +6 -6
- data/lib/striuct/instancemethods/default.rb +28 -6
- data/lib/striuct/instancemethods/delegate_class_methods.rb +21 -21
- data/lib/striuct/instancemethods/enum.rb +3 -9
- data/lib/striuct/instancemethods/getter.rb +47 -0
- data/lib/striuct/instancemethods/hashy.rb +2 -6
- data/lib/striuct/instancemethods/keyvalidatable.rb +0 -5
- data/lib/striuct/instancemethods/lock.rb +35 -43
- data/lib/striuct/instancemethods/object.rb +3 -26
- data/lib/striuct/instancemethods/requirements.rb +16 -2
- data/lib/striuct/instancemethods/safety.rb +1 -1
- data/lib/striuct/instancemethods/setter.rb +58 -0
- data/lib/striuct/instancemethods/to_s.rb +2 -2
- data/lib/striuct/instancemethods/validation.rb +13 -7
- data/lib/striuct/instancemethods/values.rb +8 -7
- data/lib/striuct/requirements.rb +2 -5
- data/lib/striuct/{hashdeepdupulicatable.rb → singleton_class/hashdeepdupulicatable.rb} +2 -2
- data/lib/striuct/singleton_class.rb +3 -4
- data/striuct.gemspec +7 -4
- data/test/test_sglc-constructor.rb +36 -0
- data/test/test_subc-c-constructor.rb +88 -0
- data/test/{test_striuct-subclass-class-safety_naming.rb → test_subc-c-safety_naming.rb} +6 -5
- data/test/test_subc-f-enum.rb +139 -0
- data/test/test_subc-f-predicate.rb +647 -0
- data/test/{test_striuct-subclass-feature-validation_util.rb → test_subc-f-validation_util.rb} +10 -8
- data/test/test_subc-f_name.rb +525 -0
- data/test/{test_striuct-subclass-instance-accessor.rb → test_subc-i-accessor.rb} +3 -2
- data/test/test_subc-i-assign.rb +49 -0
- data/test/test_subc-i-cast.rb +27 -0
- data/test/{test_striuct-subclass-instance-default_value.rb → test_subc-i-default_value.rb} +2 -2
- data/test/{test_striuct-subclass-instance-hashlike.rb → test_subc-i-hashlike.rb} +0 -9
- data/test/{test_striuct-subclass-instance-lock.rb → test_subc-i-lock.rb} +8 -8
- data/test/{test_striuct-subclass-instance-to_s_family.rb → test_subc-i-to_s_family.rb} +1 -1
- data/test/{test_striuct-subclass-instance-validation_specific_conditions.rb → test_subc-i-validation_specific_conditions.rb} +50 -0
- data/test/test_version.rb +14 -0
- metadata +124 -80
- data/Manifest.txt +0 -97
- data/README.ja.old.rdoc +0 -298
- data/example/example.old.rdoc +0 -188
- data/lib/striuct/classmethods/hashy.rb +0 -22
- data/lib/striuct/classmethods/named.rb +0 -126
- data/lib/striuct/classmethods.rb +0 -1
- data/lib/striuct/instancemethods/inner_accessor.rb +0 -53
- data/lib/striuct/instancemethods/subscript.rb +0 -27
- data/lib/striuct/instancemethods.rb +0 -1
- data/lib/striuct/version.rb +0 -5
- data/test/test_striuct-singleton_class-define.rb +0 -19
- data/test/test_striuct-subclass-class-constructor.rb +0 -82
- data/test/test_striuct-subclass-class-validation.rb +0 -26
- data/test/test_striuct-subclass-instance-assign.rb +0 -30
- data/test/test_striuct-subclass-instance-enum.rb +0 -93
- data/test/test_striuct-subclass-instance-validation_functional_condition.rb +0 -51
- data/test/test_striuct-subclass-instance_names.rb +0 -18
- data/test/test_striuct-version.rb +0 -11
- /data/{History.rdoc → History.old(~0.3.n).rdoc} +0 -0
- /data/test/{test_striuct-subclass-class-macro.rb → test_subc-c-add_members.rb} +0 -0
- /data/test/{test_striuct-subclass-class-close.rb → test_subc-c-close_member.rb} +0 -0
- /data/test/{test_striuct-subclass-class-copy.rb → test_subc-c-copy.rb} +0 -0
- /data/test/{test_striuct-subclass-class-freeze.rb → test_subc-c-freeze.rb} +0 -0
- /data/test/{test_striuct-subclass-class-inheritable.rb → test_subc-c-inheritable.rb} +0 -0
- /data/test/{test_striuct-subclass-feature-alias_member.rb → test_subc-f-alias_member.rb} +0 -0
- /data/test/{test_striuct-subclass-feature-to_struct.rb → test_subc-f-to_struct.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-adjuster.rb → test_subc-i-adjuster.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-basic.rb → test_subc-i-basic.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-compare.rb → test_subc-i-compare.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-copy.rb → test_subc-i-copy.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-freeze.rb → test_subc-i-freeze.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-keyvalidatable.rb → test_subc-i-keyvalidatable.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-validation_inference.rb → test_subc-i-validation_inference.rb} +0 -0
- /data/test/{test_striuct-subclass-instance-validation_with_getter.rb → test_subc-i-validation_with_getter.rb} +0 -0
@@ -0,0 +1,525 @@
|
|
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_same 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
|
@@ -92,8 +92,9 @@ class Test_Striuct_Subclass_Instance_Accsessor < Test::Unit::TestCase
|
|
92
92
|
class Sth < Striuct.new
|
93
93
|
member :bool, OR(true, false)
|
94
94
|
member :sth
|
95
|
-
|
96
|
-
|
95
|
+
conflict_management :struct do
|
96
|
+
member :lambda, OR(->v{v % 3 == 2}, ->v{v.kind_of? Float})
|
97
|
+
end
|
97
98
|
end
|
98
99
|
|
99
100
|
def setup
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
class Test_Striuct_Subclass_Instance_Assign < Test::Unit::TestCase
|
4
|
+
|
5
|
+
Sth = Striuct.new do
|
6
|
+
member :foo
|
7
|
+
end
|
8
|
+
|
9
|
+
[:unassign, :delete_at].each do |callee|
|
10
|
+
define_method :"test_#{callee}" do
|
11
|
+
sth = Sth.new
|
12
|
+
assert_equal false, sth.assign?(:foo)
|
13
|
+
sth.foo = nil
|
14
|
+
assert_equal true, sth.assign?(:foo)
|
15
|
+
sth.public_send callee, :foo
|
16
|
+
assert_equal false, sth.assign?(:foo)
|
17
|
+
sth.foo = nil
|
18
|
+
assert_equal true, sth.assign?(:foo)
|
19
|
+
sth.public_send callee, 0
|
20
|
+
assert_equal false, sth.assign?(:foo)
|
21
|
+
|
22
|
+
assert_raises KeyError do
|
23
|
+
sth.public_send callee, :var
|
24
|
+
end
|
25
|
+
|
26
|
+
assert_raises KeyError do
|
27
|
+
sth.public_send callee, 1
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_empty?
|
33
|
+
cls = Striuct.new :foo, :bar
|
34
|
+
sth = cls.new
|
35
|
+
|
36
|
+
assert_same true, sth.empty?
|
37
|
+
|
38
|
+
sth.foo = nil
|
39
|
+
assert_same false, sth.empty?
|
40
|
+
sth.bar = true
|
41
|
+
assert_same false, sth.empty?
|
42
|
+
sth.unassign :foo
|
43
|
+
assert_same false, sth.empty?
|
44
|
+
sth.unassign :bar
|
45
|
+
|
46
|
+
assert_same true, sth.empty?
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'helper'
|
2
|
+
|
3
|
+
class Test_Striuct_Subclass_Instance_Cast < Test::Unit::TestCase
|
4
|
+
|
5
|
+
Sth = Striuct.new :foo, :bar, :hoge
|
6
|
+
|
7
|
+
def test_to_h
|
8
|
+
sth = Sth.new
|
9
|
+
assert_equal({foo: nil, bar: nil, hoge: nil}, sth.to_h)
|
10
|
+
assert_equal({foo: nil, bar: nil, hoge: nil}, sth.to_h(true))
|
11
|
+
assert_equal({}, sth.to_h(false))
|
12
|
+
|
13
|
+
sth.bar = :BAR
|
14
|
+
assert_equal({foo: nil, bar: :BAR, hoge: nil}, sth.to_h)
|
15
|
+
assert_equal({foo: nil, bar: :BAR, hoge: nil}, sth.to_h(true))
|
16
|
+
assert_equal({bar: :BAR}, sth.to_h(false))
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_to_a
|
20
|
+
sth = Sth.new
|
21
|
+
assert_equal([nil, nil, nil], sth.to_a)
|
22
|
+
|
23
|
+
sth.bar = :BAR
|
24
|
+
assert_equal([nil, :BAR, nil], sth.to_a)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -107,7 +107,7 @@ class Test_Striuct_Subclass_Instance_DefaultValue_Under_MemberMacro < Test::Unit
|
|
107
107
|
seef = nil
|
108
108
|
klass = Striuct.define do
|
109
109
|
|
110
|
-
scope.assert_raises
|
110
|
+
scope.assert_raises OptionalArgument::KeyConflictError do
|
111
111
|
member :lank, Integer, default: '10', default_proc: ->own,name{rand}
|
112
112
|
end
|
113
113
|
|
@@ -126,4 +126,4 @@ class Test_Striuct_Subclass_Instance_DefaultValue_Under_MemberMacro < Test::Unit
|
|
126
126
|
assert_equal seef, klass.new
|
127
127
|
end
|
128
128
|
|
129
|
-
end
|
129
|
+
end
|
@@ -3,15 +3,6 @@ require_relative 'helper'
|
|
3
3
|
class Test_Striuct_Subclass_Instance_HashLike < Test::Unit::TestCase
|
4
4
|
|
5
5
|
Sth = Striuct.new :foo, :bar, :hoge
|
6
|
-
|
7
|
-
def test_empty?
|
8
|
-
sth = Sth[hoge: 7, foo: 8]
|
9
|
-
assert_equal false, sth.empty?
|
10
|
-
sth.each_member{|name|sth[name] = nil}
|
11
|
-
assert_equal false, sth.empty?
|
12
|
-
sth.each_member{|name|sth.unassign name}
|
13
|
-
assert_equal true, sth.empty?
|
14
|
-
end
|
15
6
|
|
16
7
|
def test_has_value?
|
17
8
|
sth = Sth[hoge: 7, foo: 8]
|
@@ -7,11 +7,11 @@ class Test_Striuct_Subclass_Instance_Lock < Test::Unit::TestCase
|
|
7
7
|
|
8
8
|
def test_lock
|
9
9
|
sth = Sth.new
|
10
|
-
assert_equal false, sth.
|
11
|
-
assert_equal false, sth.
|
10
|
+
assert_equal false, sth.locked?(:foo)
|
11
|
+
assert_equal false, sth.locked?(:bar)
|
12
12
|
assert_equal false, sth.secure?
|
13
13
|
sth.lock :bar
|
14
|
-
assert_equal true, sth.
|
14
|
+
assert_equal true, sth.locked?(:bar)
|
15
15
|
assert_equal false, sth.secure?
|
16
16
|
|
17
17
|
assert_raises RuntimeError do
|
@@ -20,15 +20,15 @@ class Test_Striuct_Subclass_Instance_Lock < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
sth.__send__ :unlock, :bar
|
22
22
|
|
23
|
-
assert_equal false, sth.
|
23
|
+
assert_equal false, sth.locked?(:bar)
|
24
24
|
|
25
25
|
sth.bar = 1
|
26
26
|
assert_equal 1, sth.bar
|
27
27
|
|
28
|
-
sth.
|
29
|
-
assert_equal true, sth.
|
30
|
-
assert_equal true, sth.
|
31
|
-
assert_equal true, sth.
|
28
|
+
sth.lock_all
|
29
|
+
assert_equal true, sth.locked?(:foo)
|
30
|
+
assert_equal true, sth.locked?(:bar)
|
31
|
+
assert_equal true, sth.all_locked?
|
32
32
|
|
33
33
|
assert_raises RuntimeError do
|
34
34
|
sth.foo = 1
|
@@ -18,7 +18,7 @@ class Test_Striuct_Subclass_Instance_to_s_Family < Test::Unit::TestCase
|
|
18
18
|
|
19
19
|
def test_inspect
|
20
20
|
user = User.new 9999, 'taro', 'yamada', 'Tokyo Japan', 30
|
21
|
-
assert_equal %q!#<struct' Test_Striuct_Subclass_Instance_to_s_Family::User strict?:true id=9999(valid?:true,
|
21
|
+
assert_equal %q!#<struct' Test_Striuct_Subclass_Instance_to_s_Family::User strict?:true id=9999(valid?:true, locked?:false), last_name="taro"(valid?:true, locked?:false), family_name="yamada"(valid?:true, locked?:false), address="Tokyo Japan"(valid?:true, locked?:false), age=30(valid?:true, locked?:false)>!,
|
22
22
|
user.inspect
|
23
23
|
end
|
24
24
|
|