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,647 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_BasicPredicate < Test::Unit::TestCase
4
-
5
- class Subclass < Striuct
6
- member :foo
7
- member :bar
8
- alias_member :aliased, :bar
9
- close_member
10
- end.freeze
11
-
12
- INSTANCE = Subclass.new.freeze
13
-
14
- TYPE_PAIRS = {
15
- class: Subclass,
16
- instance: INSTANCE
17
- }.freeze
18
-
19
- [:autonym?, :has_autonym?].each do |predicate|
20
- TYPE_PAIRS.each_pair do |type, reciever|
21
- define_method :"test_#{type}_#{predicate}" do
22
- assert_same true, reciever.public_send(predicate, :foo)
23
- assert_same true, reciever.public_send(predicate, :bar)
24
- assert_same false, reciever.public_send(predicate, :aliased)
25
- assert_same false, reciever.public_send(predicate, :xyz)
26
- assert_same false, reciever.public_send(predicate, 1)
27
- assert_same false, reciever.public_send(predicate, BasicObject.new)
28
- assert_same true, reciever.public_send(predicate, 'foo')
29
- assert_same true, reciever.public_send(predicate, 'bar')
30
- assert_same false, reciever.public_send(predicate, 'aliased')
31
- assert_same false, reciever.public_send(predicate, 'xyz')
32
- end
33
- end
34
- end
35
-
36
- [:alias?, :has_alias?].each do |predicate|
37
- TYPE_PAIRS.each_pair do |type, reciever|
38
- define_method :"test_#{type}_#{predicate}" do
39
- assert_same false, reciever.public_send(predicate, :foo)
40
- assert_same false, reciever.public_send(predicate, :bar)
41
- assert_same true, reciever.public_send(predicate, :aliased)
42
- assert_same false, reciever.public_send(predicate, :xyz)
43
- assert_same false, reciever.public_send(predicate, 1)
44
- assert_same false, reciever.public_send(predicate, BasicObject.new)
45
- assert_same false, reciever.public_send(predicate, 'foo')
46
- assert_same false, reciever.public_send(predicate, 'bar')
47
- assert_same true, reciever.public_send(predicate, 'aliased')
48
- assert_same false, reciever.public_send(predicate, 'xyz')
49
- end
50
- end
51
- end
52
-
53
- [:member?, :has_member?].each do |predicate|
54
- TYPE_PAIRS.each_pair do |type, reciever|
55
- define_method :"test_#{type}_#{predicate}" do
56
- assert_same true, reciever.public_send(predicate, :foo)
57
- assert_same true, reciever.public_send(predicate, :bar)
58
- assert_same true, reciever.public_send(predicate, :aliased)
59
- assert_same false, reciever.public_send(predicate, :xyz)
60
- assert_same false, reciever.public_send(predicate, 1)
61
- assert_same false, reciever.public_send(predicate, BasicObject.new)
62
- assert_same true, reciever.public_send(predicate, 'foo')
63
- assert_same true, reciever.public_send(predicate, 'bar')
64
- assert_same true, reciever.public_send(predicate, 'aliased')
65
- assert_same false, reciever.public_send(predicate, 'xyz')
66
- end
67
- end
68
- end
69
-
70
- [:index?, :has_index?].each do |predicate|
71
- TYPE_PAIRS.each_pair do |type, reciever|
72
- define_method :"test_#{type}_#{predicate}" do
73
- assert_same true, reciever.public_send(predicate, 0)
74
- assert_same true, reciever.public_send(predicate, 1)
75
- assert_same false, reciever.public_send(predicate, 2)
76
- assert_same false, reciever.public_send(predicate, 99 * 99)
77
- assert_same true, reciever.public_send(predicate, -1)
78
- assert_same true, reciever.public_send(predicate, -2)
79
- assert_same false, reciever.public_send(predicate, -3)
80
- assert_same false, reciever.public_send(predicate, -(99 * 99))
81
- assert_same true, reciever.public_send(predicate, 0.1)
82
- assert_same true, reciever.public_send(predicate, 1.9)
83
- assert_same false, reciever.public_send(predicate, '1')
84
- assert_same false, reciever.public_send(predicate, :foo)
85
- assert_same false, reciever.public_send(predicate, :bar)
86
- assert_same false, reciever.public_send(predicate, :aliased)
87
- assert_same false, reciever.public_send(predicate, :xyz)
88
- assert_same false, reciever.public_send(predicate, BasicObject.new)
89
- assert_same false, reciever.public_send(predicate, 'foo')
90
- assert_same false, reciever.public_send(predicate, 'bar')
91
- assert_same false, reciever.public_send(predicate, 'aliased')
92
- assert_same false, reciever.public_send(predicate, 'xyz')
93
- end
94
- end
95
- end
96
-
97
- [:key?, :has_key?].each do |predicate|
98
- TYPE_PAIRS.each_pair do |type, reciever|
99
- define_method :"test_#{type}_#{predicate}" do
100
- assert_same true, reciever.public_send(predicate, 0)
101
- assert_same true, reciever.public_send(predicate, 1)
102
- assert_same false, reciever.public_send(predicate, 2)
103
- assert_same false, reciever.public_send(predicate, 99 * 99)
104
- assert_same true, reciever.public_send(predicate, -1)
105
- assert_same true, reciever.public_send(predicate, -2)
106
- assert_same false, reciever.public_send(predicate, -3)
107
- assert_same false, reciever.public_send(predicate, -(99 * 99))
108
- assert_same true, reciever.public_send(predicate, 0.1)
109
- assert_same true, reciever.public_send(predicate, 1.9)
110
- assert_same false, reciever.public_send(predicate, '1')
111
- assert_same true, reciever.public_send(predicate, :foo)
112
- assert_same true, reciever.public_send(predicate, :bar)
113
- assert_same true, reciever.public_send(predicate, :aliased)
114
- assert_same false, reciever.public_send(predicate, :xyz)
115
- assert_same false, reciever.public_send(predicate, BasicObject.new)
116
- assert_same true, reciever.public_send(predicate, 'foo')
117
- assert_same true, reciever.public_send(predicate, 'bar')
118
- assert_same true, reciever.public_send(predicate, 'aliased')
119
- assert_same false, reciever.public_send(predicate, 'xyz')
120
- end
121
- end
122
- end
123
-
124
- [:with_aliases?].each do |predicate|
125
- TYPE_PAIRS.each_pair do |type, reciever|
126
- define_method :"test_#{type}_#{predicate}" do
127
- assert_same false, reciever.public_send(predicate, :foo)
128
- assert_same true, reciever.public_send(predicate, :bar)
129
- assert_same false, reciever.public_send(predicate, :aliased)
130
- assert_same false, reciever.public_send(predicate, :xyz)
131
- assert_same false, reciever.public_send(predicate, 1)
132
- assert_same false, reciever.public_send(predicate, BasicObject.new)
133
- assert_same false, reciever.public_send(predicate, 'foo')
134
- assert_same true, reciever.public_send(predicate, 'bar')
135
- assert_same false, reciever.public_send(predicate, 'aliased')
136
- assert_same false, reciever.public_send(predicate, 'xyz')
137
- end
138
- end
139
- end
140
-
141
- end
142
-
143
-
144
- class Test_Striuct_Subclass_Predicate_Default < Test::Unit::TestCase
145
-
146
- class Subclass < Striuct
147
- member :foo
148
- member :val, BasicObject, default: 'DEFAULT'
149
-
150
- conflict_management :struct do
151
- member :lazy, BasicObject, default_proc: ->{}
152
- end
153
-
154
- alias_member :als_foo, :foo
155
- alias_member :als_val, :val
156
- alias_member :als_lazy, :lazy
157
- close_member
158
- end.freeze
159
-
160
- INSTANCE = Subclass.new.freeze
161
-
162
- TYPE_PAIRS = {
163
- class: Subclass,
164
- instance: INSTANCE
165
- }.freeze
166
-
167
- [:with_default?].each do |predicate|
168
- TYPE_PAIRS.each_pair do |type, reciever|
169
- define_method :"test_#{type}_#{predicate}" do
170
- assert_same false, reciever.public_send(predicate, :foo)
171
- assert_same false, reciever.public_send(predicate, :als_foo)
172
- assert_same false, reciever.public_send(predicate, 'foo')
173
- assert_same false, reciever.public_send(predicate, 'als_foo')
174
- assert_same false, reciever.public_send(predicate, 0)
175
- assert_same false, reciever.public_send(predicate, 0.9)
176
-
177
- assert_same true, reciever.public_send(predicate, :val)
178
- assert_same true, reciever.public_send(predicate, :als_val)
179
- assert_same true, reciever.public_send(predicate, 'val')
180
- assert_same true, reciever.public_send(predicate, 'als_val')
181
- assert_same true, reciever.public_send(predicate, 1)
182
- assert_same true, reciever.public_send(predicate, 1.9)
183
-
184
- assert_same true, reciever.public_send(predicate, :lazy)
185
- assert_same true, reciever.public_send(predicate, :als_lazy)
186
- assert_same true, reciever.public_send(predicate, 'lazy')
187
- assert_same true, reciever.public_send(predicate, 'als_lazy')
188
- assert_same true, reciever.public_send(predicate, 2)
189
- assert_same true, reciever.public_send(predicate, 2.9)
190
-
191
- assert_same false, reciever.public_send(predicate, :none)
192
- assert_same false, reciever.public_send(predicate, 'none')
193
- assert_same false, reciever.public_send(predicate, 3)
194
- assert_same false, reciever.public_send(predicate, 3.9)
195
- assert_same false, reciever.public_send(predicate, BasicObject.new)
196
- end
197
- end
198
- end
199
-
200
- end
201
-
202
- class Test_Striuct_Subclass_Predicate_Adjuster < Test::Unit::TestCase
203
-
204
- class Subclass < Striuct
205
- member :no_with
206
- alias_member :als_no_with, :no_with
207
- member :with do |_|; end
208
- alias_member :als_with, :with
209
- member :cond_with, BasicObject do |_|; end
210
- alias_member :als_cond_with, :cond_with
211
-
212
- close_member
213
- end.freeze
214
-
215
- INSTANCE = Subclass.new.freeze
216
-
217
- TYPE_PAIRS = {
218
- class: Subclass,
219
- instance: INSTANCE
220
- }.freeze
221
-
222
- [:with_adjuster?].each do |predicate|
223
- TYPE_PAIRS.each_pair do |type, reciever|
224
- define_method :"test_#{type}_#{predicate}" do
225
- assert_same false, reciever.public_send(predicate, :no_with)
226
- assert_same false, reciever.public_send(predicate, :als_no_with)
227
- assert_same false, reciever.public_send(predicate, 'no_with')
228
- assert_same false, reciever.public_send(predicate, 'als_no_with')
229
- assert_same false, reciever.public_send(predicate, 0)
230
- assert_same false, reciever.public_send(predicate, 0.9)
231
-
232
- assert_same true, reciever.public_send(predicate, :with)
233
- assert_same true, reciever.public_send(predicate, :als_with)
234
- assert_same true, reciever.public_send(predicate, 'with')
235
- assert_same true, reciever.public_send(predicate, 'als_with')
236
- assert_same true, reciever.public_send(predicate, 1)
237
- assert_same true, reciever.public_send(predicate, 1.9)
238
-
239
- assert_same true, reciever.public_send(predicate, :cond_with)
240
- assert_same true, reciever.public_send(predicate, :als_cond_with)
241
- assert_same true, reciever.public_send(predicate, 'cond_with')
242
- assert_same true, reciever.public_send(predicate, 'als_cond_with')
243
- assert_same true, reciever.public_send(predicate, 2)
244
- assert_same true, reciever.public_send(predicate, 2.9)
245
-
246
- assert_same false, reciever.public_send(predicate, :none)
247
- assert_same false, reciever.public_send(predicate, 'none')
248
- assert_same false, reciever.public_send(predicate, 3)
249
- assert_same false, reciever.public_send(predicate, 3.9)
250
- assert_same false, reciever.public_send(predicate, BasicObject.new)
251
- end
252
- end
253
- end
254
-
255
- end
256
-
257
- class Test_Striuct_Subclass_Predicate_Condition < Test::Unit::TestCase
258
-
259
- class Subclass < Striuct
260
- member :no_with
261
- alias_member :als_no_with, :no_with
262
- member :with, nil
263
- alias_member :als_with, :with
264
- member :with_any, BasicObject
265
- alias_member :als_with_any, :with_any
266
- member :adj_with, nil do |_|; end
267
- alias_member :als_adj_with, :adj_with
268
-
269
- close_member
270
- end.freeze
271
-
272
- INSTANCE = Subclass.new.freeze
273
-
274
- TYPE_PAIRS = {
275
- class: Subclass,
276
- instance: INSTANCE
277
- }.freeze
278
-
279
- [:with_condition?, :restrict?].each do |predicate|
280
- TYPE_PAIRS.each_pair do |type, reciever|
281
- define_method :"test_#{type}_#{predicate}" do
282
- assert_same false, reciever.public_send(predicate, :no_with)
283
- assert_same false, reciever.public_send(predicate, :als_no_with)
284
- assert_same false, reciever.public_send(predicate, 'no_with')
285
- assert_same false, reciever.public_send(predicate, 'als_no_with')
286
- assert_same false, reciever.public_send(predicate, 0)
287
- assert_same false, reciever.public_send(predicate, 0.9)
288
-
289
- assert_same true, reciever.public_send(predicate, :with)
290
- assert_same true, reciever.public_send(predicate, :als_with)
291
- assert_same true, reciever.public_send(predicate, 'with')
292
- assert_same true, reciever.public_send(predicate, 'als_with')
293
- assert_same true, reciever.public_send(predicate, 1)
294
- assert_same true, reciever.public_send(predicate, 1.9)
295
-
296
- assert_same false, reciever.public_send(predicate, :with_any)
297
- assert_same false, reciever.public_send(predicate, :als_with_any)
298
- assert_same false, reciever.public_send(predicate, 'with_any')
299
- assert_same false, reciever.public_send(predicate, 'als_with_any')
300
- assert_same false, reciever.public_send(predicate, 2)
301
- assert_same false, reciever.public_send(predicate, 2.9)
302
-
303
- assert_same true, reciever.public_send(predicate, :adj_with)
304
- assert_same true, reciever.public_send(predicate, :als_adj_with)
305
- assert_same true, reciever.public_send(predicate, 'adj_with')
306
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
307
- assert_same true, reciever.public_send(predicate, 3)
308
- assert_same true, reciever.public_send(predicate, 3.9)
309
-
310
- assert_same false, reciever.public_send(predicate, :none)
311
- assert_same false, reciever.public_send(predicate, 'none')
312
- assert_same false, reciever.public_send(predicate, 4)
313
- assert_same false, reciever.public_send(predicate, 4.9)
314
- assert_same false, reciever.public_send(predicate, BasicObject.new)
315
- end
316
- end
317
- end
318
-
319
- end
320
-
321
- class Test_Striuct_Subclass_Predicate_Must < Test::Unit::TestCase
322
-
323
- class Subclass < Striuct
324
- member :no_with
325
- alias_member :als_no_with, :no_with
326
- member :with, BasicObject, must: true
327
- alias_member :als_with, :with
328
- member :with_any, BasicObject, must: true
329
- alias_member :als_with_any, :with_any
330
- member(:adj_with, BasicObject, must: true) do |_|; end
331
- alias_member :als_adj_with, :adj_with
332
-
333
- close_member
334
- end.freeze
335
-
336
- INSTANCE = Subclass[als_with: 1, als_with_any: 1, adj_with: 1].freeze
337
-
338
- TYPE_PAIRS = {
339
- class: Subclass,
340
- instance: INSTANCE
341
- }.freeze
342
-
343
- [:with_must?, :must?].each do |predicate|
344
- TYPE_PAIRS.each_pair do |type, reciever|
345
- define_method :"test_#{type}_#{predicate}" do
346
- assert_same false, reciever.public_send(predicate, :no_with)
347
- assert_same false, reciever.public_send(predicate, :als_no_with)
348
- assert_same false, reciever.public_send(predicate, 'no_with')
349
- assert_same false, reciever.public_send(predicate, 'als_no_with')
350
- assert_same false, reciever.public_send(predicate, 0)
351
- assert_same false, reciever.public_send(predicate, 0.9)
352
-
353
- assert_same true, reciever.public_send(predicate, :with)
354
- assert_same true, reciever.public_send(predicate, :als_with)
355
- assert_same true, reciever.public_send(predicate, 'with')
356
- assert_same true, reciever.public_send(predicate, 'als_with')
357
- assert_same true, reciever.public_send(predicate, 1)
358
- assert_same true, reciever.public_send(predicate, 1.9)
359
-
360
- assert_same true, reciever.public_send(predicate, :with_any)
361
- assert_same true, reciever.public_send(predicate, :als_with_any)
362
- assert_same true, reciever.public_send(predicate, 'with_any')
363
- assert_same true, reciever.public_send(predicate, 'als_with_any')
364
- assert_same true, reciever.public_send(predicate, 2)
365
- assert_same true, reciever.public_send(predicate, 2.9)
366
-
367
- assert_same true, reciever.public_send(predicate, :adj_with)
368
- assert_same true, reciever.public_send(predicate, :als_adj_with)
369
- assert_same true, reciever.public_send(predicate, 'adj_with')
370
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
371
- assert_same true, reciever.public_send(predicate, 3)
372
- assert_same true, reciever.public_send(predicate, 3.9)
373
-
374
- assert_same false, reciever.public_send(predicate, :none)
375
- assert_same false, reciever.public_send(predicate, 'none')
376
- assert_same false, reciever.public_send(predicate, 4)
377
- assert_same false, reciever.public_send(predicate, 4.9)
378
- assert_same false, reciever.public_send(predicate, BasicObject.new)
379
- end
380
- end
381
- end
382
-
383
- end
384
-
385
-
386
- class Test_Striuct_Subclass_Predicate_HookTiming_Setter_Enable < Test::Unit::TestCase
387
-
388
- class Subclass < Striuct
389
- member :no_with
390
- alias_member :als_no_with, :no_with
391
- member :with, nil, setter_validation: true
392
- alias_member :als_with, :with
393
- member :with_any, BasicObject, writer_validation: true
394
- alias_member :als_with_any, :with_any
395
- member :adj_with, nil, writer_validation: true do |_|; end
396
- alias_member :als_adj_with, :adj_with
397
-
398
- close_member
399
- end.freeze
400
-
401
- INSTANCE = Subclass.new.freeze
402
-
403
- TYPE_PAIRS = {
404
- class: Subclass,
405
- instance: INSTANCE
406
- }.freeze
407
-
408
- [:with_safety_setter?, :with_safety_writer?].each do |predicate|
409
- TYPE_PAIRS.each_pair do |type, reciever|
410
- define_method :"test_#{type}_#{predicate}" do
411
- assert_same true, reciever.public_send(predicate, :no_with)
412
- assert_same true, reciever.public_send(predicate, :als_no_with)
413
- assert_same true, reciever.public_send(predicate, 'no_with')
414
- assert_same true, reciever.public_send(predicate, 'als_no_with')
415
- assert_same true, reciever.public_send(predicate, 0)
416
- assert_same true, reciever.public_send(predicate, 0.9)
417
-
418
- assert_same true, reciever.public_send(predicate, :with)
419
- assert_same true, reciever.public_send(predicate, :als_with)
420
- assert_same true, reciever.public_send(predicate, 'with')
421
- assert_same true, reciever.public_send(predicate, 'als_with')
422
- assert_same true, reciever.public_send(predicate, 1)
423
- assert_same true, reciever.public_send(predicate, 1.9)
424
-
425
- assert_same true, reciever.public_send(predicate, :with_any)
426
- assert_same true, reciever.public_send(predicate, :als_with_any)
427
- assert_same true, reciever.public_send(predicate, 'with_any')
428
- assert_same true, reciever.public_send(predicate, 'als_with_any')
429
- assert_same true, reciever.public_send(predicate, 2)
430
- assert_same true, reciever.public_send(predicate, 2.9)
431
-
432
- assert_same true, reciever.public_send(predicate, :adj_with)
433
- assert_same true, reciever.public_send(predicate, :als_adj_with)
434
- assert_same true, reciever.public_send(predicate, 'adj_with')
435
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
436
- assert_same true, reciever.public_send(predicate, 3)
437
- assert_same true, reciever.public_send(predicate, 3.9)
438
-
439
- assert_same false, reciever.public_send(predicate, :none)
440
- assert_same false, reciever.public_send(predicate, 'none')
441
- assert_same false, reciever.public_send(predicate, 4)
442
- assert_same false, reciever.public_send(predicate, 4.9)
443
- assert_same false, reciever.public_send(predicate, BasicObject.new)
444
- end
445
- end
446
- end
447
-
448
- end
449
-
450
- class Test_Striuct_Subclass_Predicate_HookTiming_Setter_Disable < Test::Unit::TestCase
451
-
452
- class Subclass < Striuct
453
- member :no_with
454
- alias_member :als_no_with, :no_with
455
-
456
- member :with, nil, setter_validation: false
457
- alias_member :als_with, :with
458
-
459
- member :with_any, BasicObject, writer_validation: false
460
- alias_member :als_with_any, :with_any
461
-
462
- member :adj_with, nil, writer_validation: false do |_|; end
463
- alias_member :als_adj_with, :adj_with
464
-
465
- close_member
466
- end.freeze
467
-
468
- INSTANCE = Subclass.new.freeze
469
-
470
- TYPE_PAIRS = {
471
- class: Subclass,
472
- instance: INSTANCE
473
- }.freeze
474
-
475
- [:with_safety_setter?, :with_safety_writer?].each do |predicate|
476
- TYPE_PAIRS.each_pair do |type, reciever|
477
- define_method :"test_#{type}_#{predicate}" do
478
- assert_same true, reciever.public_send(predicate, :no_with)
479
- assert_same true, reciever.public_send(predicate, :als_no_with)
480
- assert_same true, reciever.public_send(predicate, 'no_with')
481
- assert_same true, reciever.public_send(predicate, 'als_no_with')
482
- assert_same true, reciever.public_send(predicate, 0)
483
- assert_same true, reciever.public_send(predicate, 0.9)
484
-
485
- assert_same false, reciever.public_send(predicate, :with)
486
- assert_same false, reciever.public_send(predicate, :als_with)
487
- assert_same false, reciever.public_send(predicate, 'with')
488
- assert_same false, reciever.public_send(predicate, 'als_with')
489
- assert_same false, reciever.public_send(predicate, 1)
490
- assert_same false, reciever.public_send(predicate, 1.9)
491
-
492
- assert_same false, reciever.public_send(predicate, :with_any)
493
- assert_same false, reciever.public_send(predicate, :als_with_any)
494
- assert_same false, reciever.public_send(predicate, 'with_any')
495
- assert_same false, reciever.public_send(predicate, 'als_with_any')
496
- assert_same false, reciever.public_send(predicate, 2)
497
- assert_same false, reciever.public_send(predicate, 2.9)
498
-
499
- assert_same false, reciever.public_send(predicate, :adj_with)
500
- assert_same false, reciever.public_send(predicate, :als_adj_with)
501
- assert_same false, reciever.public_send(predicate, 'adj_with')
502
- assert_same false, reciever.public_send(predicate, 'als_adj_with')
503
- assert_same false, reciever.public_send(predicate, 3)
504
- assert_same false, reciever.public_send(predicate, 3.9)
505
-
506
- assert_same false, reciever.public_send(predicate, :none)
507
- assert_same false, reciever.public_send(predicate, 'none')
508
- assert_same false, reciever.public_send(predicate, 4)
509
- assert_same false, reciever.public_send(predicate, 4.9)
510
- assert_same false, reciever.public_send(predicate, BasicObject.new)
511
- end
512
- end
513
- end
514
-
515
- end
516
-
517
-
518
- class Test_Striuct_Subclass_Predicate_HookTiming_Getter_Enable < Test::Unit::TestCase
519
-
520
- class Subclass < Striuct
521
- member :no_with
522
- alias_member :als_no_with, :no_with
523
- member :with, nil, getter_validation: true
524
- alias_member :als_with, :with
525
- member :with_any, BasicObject, reader_validation: true
526
- alias_member :als_with_any, :with_any
527
- member :adj_with, nil, reader_validation: true do |_|; end
528
- alias_member :als_adj_with, :adj_with
529
-
530
- close_member
531
- end.freeze
532
-
533
- INSTANCE = Subclass.new.freeze
534
-
535
- TYPE_PAIRS = {
536
- class: Subclass,
537
- instance: INSTANCE
538
- }.freeze
539
-
540
- [:with_safety_getter?, :with_safety_reader?].each do |predicate|
541
- TYPE_PAIRS.each_pair do |type, reciever|
542
- define_method :"test_#{type}_#{predicate}" do
543
- assert_same false, reciever.public_send(predicate, :no_with)
544
- assert_same false, reciever.public_send(predicate, :als_no_with)
545
- assert_same false, reciever.public_send(predicate, 'no_with')
546
- assert_same false, reciever.public_send(predicate, 'als_no_with')
547
- assert_same false, reciever.public_send(predicate, 0)
548
- assert_same false, reciever.public_send(predicate, 0.9)
549
-
550
- assert_same true, reciever.public_send(predicate, :with)
551
- assert_same true, reciever.public_send(predicate, :als_with)
552
- assert_same true, reciever.public_send(predicate, 'with')
553
- assert_same true, reciever.public_send(predicate, 'als_with')
554
- assert_same true, reciever.public_send(predicate, 1)
555
- assert_same true, reciever.public_send(predicate, 1.9)
556
-
557
- assert_same true, reciever.public_send(predicate, :with_any)
558
- assert_same true, reciever.public_send(predicate, :als_with_any)
559
- assert_same true, reciever.public_send(predicate, 'with_any')
560
- assert_same true, reciever.public_send(predicate, 'als_with_any')
561
- assert_same true, reciever.public_send(predicate, 2)
562
- assert_same true, reciever.public_send(predicate, 2.9)
563
-
564
- assert_same true, reciever.public_send(predicate, :adj_with)
565
- assert_same true, reciever.public_send(predicate, :als_adj_with)
566
- assert_same true, reciever.public_send(predicate, 'adj_with')
567
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
568
- assert_same true, reciever.public_send(predicate, 3)
569
- assert_same true, reciever.public_send(predicate, 3.9)
570
-
571
- assert_same false, reciever.public_send(predicate, :none)
572
- assert_same false, reciever.public_send(predicate, 'none')
573
- assert_same false, reciever.public_send(predicate, 4)
574
- assert_same false, reciever.public_send(predicate, 4.9)
575
- assert_same false, reciever.public_send(predicate, BasicObject.new)
576
- end
577
- end
578
- end
579
-
580
- end
581
-
582
- class Test_Striuct_Subclass_Predicate_HookTiming_Getter_Disable < Test::Unit::TestCase
583
-
584
- class Subclass < Striuct
585
- member :no_with
586
- alias_member :als_no_with, :no_with
587
-
588
- member :with, nil, getter_validation: false
589
- alias_member :als_with, :with
590
-
591
- member :with_any, BasicObject, reader_validation: false
592
- alias_member :als_with_any, :with_any
593
-
594
- member :adj_with, nil, reader_validation: false do |_|; end
595
- alias_member :als_adj_with, :adj_with
596
-
597
- close_member
598
- end.freeze
599
-
600
- INSTANCE = Subclass.new.freeze
601
-
602
- TYPE_PAIRS = {
603
- class: Subclass,
604
- instance: INSTANCE
605
- }.freeze
606
-
607
- [:with_safety_getter?, :with_safety_reader?].each do |predicate|
608
- TYPE_PAIRS.each_pair do |type, reciever|
609
- define_method :"test_#{type}_#{predicate}" do
610
- assert_same false, reciever.public_send(predicate, :no_with)
611
- assert_same false, reciever.public_send(predicate, :als_no_with)
612
- assert_same false, reciever.public_send(predicate, 'no_with')
613
- assert_same false, reciever.public_send(predicate, 'als_no_with')
614
- assert_same false, reciever.public_send(predicate, 0)
615
- assert_same false, reciever.public_send(predicate, 0.9)
616
-
617
- assert_same false, reciever.public_send(predicate, :with)
618
- assert_same false, reciever.public_send(predicate, :als_with)
619
- assert_same false, reciever.public_send(predicate, 'with')
620
- assert_same false, reciever.public_send(predicate, 'als_with')
621
- assert_same false, reciever.public_send(predicate, 1)
622
- assert_same false, reciever.public_send(predicate, 1.9)
623
-
624
- assert_same false, reciever.public_send(predicate, :with_any)
625
- assert_same false, reciever.public_send(predicate, :als_with_any)
626
- assert_same false, reciever.public_send(predicate, 'with_any')
627
- assert_same false, reciever.public_send(predicate, 'als_with_any')
628
- assert_same false, reciever.public_send(predicate, 2)
629
- assert_same false, reciever.public_send(predicate, 2.9)
630
-
631
- assert_same false, reciever.public_send(predicate, :adj_with)
632
- assert_same false, reciever.public_send(predicate, :als_adj_with)
633
- assert_same false, reciever.public_send(predicate, 'adj_with')
634
- assert_same false, reciever.public_send(predicate, 'als_adj_with')
635
- assert_same false, reciever.public_send(predicate, 3)
636
- assert_same false, reciever.public_send(predicate, 3.9)
637
-
638
- assert_same false, reciever.public_send(predicate, :none)
639
- assert_same false, reciever.public_send(predicate, 'none')
640
- assert_same false, reciever.public_send(predicate, 4)
641
- assert_same false, reciever.public_send(predicate, 4.9)
642
- assert_same false, reciever.public_send(predicate, BasicObject.new)
643
- end
644
- end
645
- end
646
-
647
- end