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