striuct 0.4.4 → 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 (91) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE.txt +21 -0
  3. data/README.md +20 -41
  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 +93 -91
  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 +14 -16
  15. data/lib/striuct/classmethods/inner.rb +57 -64
  16. data/lib/striuct/classmethods/length.rb +12 -10
  17. data/lib/striuct/classmethods/macro.rb +109 -111
  18. data/lib/striuct/classmethods/names.rb +69 -65
  19. data/lib/striuct/classmethods/predicate.rb +131 -138
  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 +36 -32
  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 -49
  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 +52 -33
  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 +48 -186
  45. data/.gitignore +0 -35
  46. data/.travis.yml +0 -20
  47. data/.yardopts +0 -1
  48. data/Gemfile +0 -11
  49. data/History.old(~0.3.n).rdoc +0 -289
  50. data/MIT-LICENSE +0 -22
  51. data/Rakefile +0 -10
  52. data/benchmark/basics.rb +0 -56
  53. data/example/README.rb +0 -53
  54. data/example/example1.rb +0 -235
  55. data/example/example2.rb +0 -22
  56. data/example/see_trace.rb +0 -32
  57. data/striuct.gemspec +0 -36
  58. data/test/helper.rb +0 -5
  59. data/test/test_sglc-constructor.rb +0 -36
  60. data/test/test_subc-c-add_members.rb +0 -13
  61. data/test/test_subc-c-close_member.rb +0 -36
  62. data/test/test_subc-c-constructor.rb +0 -92
  63. data/test/test_subc-c-copy.rb +0 -71
  64. data/test/test_subc-c-freeze.rb +0 -36
  65. data/test/test_subc-c-inheritable.rb +0 -58
  66. data/test/test_subc-c-safety_naming.rb +0 -73
  67. data/test/test_subc-f-alias_member.rb +0 -54
  68. data/test/test_subc-f-enum.rb +0 -139
  69. data/test/test_subc-f-predicate.rb +0 -711
  70. data/test/test_subc-f-to_struct.rb +0 -61
  71. data/test/test_subc-f-validation_util.rb +0 -59
  72. data/test/test_subc-f_debug.rb +0 -39
  73. data/test/test_subc-f_name.rb +0 -525
  74. data/test/test_subc-i-accessor.rb +0 -138
  75. data/test/test_subc-i-adjuster.rb +0 -95
  76. data/test/test_subc-i-assign.rb +0 -53
  77. data/test/test_subc-i-basic.rb +0 -32
  78. data/test/test_subc-i-cast.rb +0 -27
  79. data/test/test_subc-i-compare.rb +0 -52
  80. data/test/test_subc-i-copy.rb +0 -23
  81. data/test/test_subc-i-default_value.rb +0 -129
  82. data/test/test_subc-i-freeze.rb +0 -19
  83. data/test/test_subc-i-hashlike.rb +0 -144
  84. data/test/test_subc-i-keyvalidatable.rb +0 -25
  85. data/test/test_subc-i-lock.rb +0 -40
  86. data/test/test_subc-i-must.rb +0 -30
  87. data/test/test_subc-i-to_s_family.rb +0 -26
  88. data/test/test_subc-i-validation_inference.rb +0 -51
  89. data/test/test_subc-i-validation_specific_conditions.rb +0 -297
  90. data/test/test_subc-i-validation_with_getter.rb +0 -33
  91. data/test/test_version.rb +0 -13
@@ -1,139 +0,0 @@
1
- require_relative 'helper'
2
-
3
- class Test_Striuct_Subclass_Enum < Test::Unit::TestCase
4
-
5
- class Subclass < Striuct
6
- member :foo
7
- member :bar
8
-
9
- close_member
10
- end.freeze
11
-
12
- FOO = 'Fooo! :)'.freeze
13
- BAR = 'bar :('.freeze
14
- INSTANCE = Subclass.new(FOO, BAR).freeze
15
-
16
- TYPE_PAIRS = {
17
- class: Subclass,
18
- instance: INSTANCE
19
- }.freeze
20
-
21
- [:each_autonym, :each_member].each do |callee|
22
- TYPE_PAIRS.each_pair do |type, reciever|
23
- define_method :"test_#{type}_#{callee}" do
24
- assert_same(reciever, reciever.public_send(callee) {})
25
-
26
- enum = reciever.public_send(callee)
27
- assert_instance_of Enumerator, enum
28
- assert_same :foo, enum.next
29
- assert_same :bar, enum.next
30
- assert_raises StopIteration do
31
- enum.next
32
- end
33
- end
34
- end
35
- end
36
-
37
- [:each_index].each do |callee|
38
- TYPE_PAIRS.each_pair do |type, reciever|
39
- define_method :"test_#{type}_#{callee}" do
40
- assert_same(reciever, reciever.public_send(callee) {})
41
-
42
- enum = reciever.public_send(callee)
43
- assert_instance_of Enumerator, enum
44
- assert_same 0, enum.next
45
- assert_same 1, enum.next
46
- assert_raises StopIteration do
47
- enum.next
48
- end
49
- end
50
- end
51
- end
52
-
53
- [:each_autonym_with_index, :each_member_with_index].each do |callee|
54
- TYPE_PAIRS.each_pair do |type, reciever|
55
- define_method :"test_#{type}_#{callee}" do
56
- assert_same(reciever, reciever.public_send(callee) {})
57
-
58
- enum = reciever.public_send(callee)
59
- assert_instance_of Enumerator, enum
60
- assert_equal [:foo, 0], enum.next
61
- assert_equal [:bar, 1], enum.next
62
- assert_raises StopIteration do
63
- enum.next
64
- end
65
- end
66
- end
67
- end
68
-
69
- [:each_value, :each].each do |callee|
70
- {instance: INSTANCE}.each_pair do |type, reciever|
71
- define_method :"test_#{type}_#{callee}" do
72
- assert_same(reciever, reciever.public_send(callee) {})
73
-
74
- enum = reciever.public_send(callee)
75
- assert_instance_of Enumerator, enum
76
- assert_same FOO, enum.next
77
- assert_same BAR, enum.next
78
- assert_raises StopIteration do
79
- enum.next
80
- end
81
- end
82
- end
83
- end
84
-
85
- [:each_value_with_index, :each_with_index].each do |callee|
86
- {instance: INSTANCE}.each_pair do |type, reciever|
87
- define_method :"test_#{type}_#{callee}" do
88
- assert_same(reciever, reciever.public_send(callee) {})
89
-
90
- enum = reciever.public_send(callee)
91
- assert_instance_of Enumerator, enum
92
- assert_equal [FOO, 0], ret = enum.next
93
- assert_same FOO, ret.first
94
- assert_equal [BAR, 1], ret = enum.next
95
- assert_same BAR, ret.first
96
- assert_raises StopIteration do
97
- enum.next
98
- end
99
- end
100
- end
101
- end
102
-
103
- [:each_pair].each do |callee|
104
- {instance: INSTANCE}.each_pair do |type, reciever|
105
- define_method :"test_#{type}_#{callee}" do
106
- assert_same(reciever, reciever.public_send(callee) {})
107
-
108
- enum = reciever.public_send(callee)
109
- assert_instance_of Enumerator, enum
110
- assert_equal [:foo, FOO], ret = enum.next
111
- assert_same FOO, ret.last
112
- assert_equal [:bar, BAR], ret = enum.next
113
- assert_same BAR, ret.last
114
- assert_raises StopIteration do
115
- enum.next
116
- end
117
- end
118
- end
119
- end
120
-
121
- [:each_pair_with_index].each do |callee|
122
- {instance: INSTANCE}.each_pair do |type, reciever|
123
- define_method :"test_#{type}_#{callee}" do
124
- assert_same(reciever, reciever.public_send(callee) {})
125
-
126
- enum = reciever.public_send(callee)
127
- assert_instance_of Enumerator, enum
128
- assert_equal [:foo, FOO, 0], ret = enum.next
129
- assert_same FOO, ret[1]
130
- assert_equal [:bar, BAR, 1], ret = enum.next
131
- assert_same BAR, ret[1]
132
- assert_raises StopIteration do
133
- enum.next
134
- end
135
- end
136
- end
137
- end
138
-
139
- end
@@ -1,711 +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_InferenceValidation < Test::Unit::TestCase
322
-
323
- class Subclass < Striuct
324
- member :no_with
325
- alias_member :als_no_with, :no_with
326
- member :with, nil, inference: true
327
- alias_member :als_with, :with
328
- member :with_any, BasicObject, inference: true
329
- alias_member :als_with_any, :with_any
330
- member :adj_with, nil, inference: true do |_|; end
331
- alias_member :als_adj_with, :adj_with
332
-
333
- close_member
334
- end.freeze
335
-
336
- INSTANCE = Subclass.new.freeze
337
-
338
- TYPE_PAIRS = {
339
- class: Subclass,
340
- instance: INSTANCE
341
- }.freeze
342
-
343
- [:with_inference?].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
- class Test_Striuct_Subclass_Predicate_Must < Test::Unit::TestCase
386
-
387
- class Subclass < Striuct
388
- member :no_with
389
- alias_member :als_no_with, :no_with
390
- member :with, BasicObject, must: true
391
- alias_member :als_with, :with
392
- member :with_any, BasicObject, must: true
393
- alias_member :als_with_any, :with_any
394
- member(:adj_with, BasicObject, must: true) do |_|; end
395
- alias_member :als_adj_with, :adj_with
396
-
397
- close_member
398
- end.freeze
399
-
400
- INSTANCE = Subclass[als_with: 1, als_with_any: 1, adj_with: 1].freeze
401
-
402
- TYPE_PAIRS = {
403
- class: Subclass,
404
- instance: INSTANCE
405
- }.freeze
406
-
407
- [:with_must?, :must?].each do |predicate|
408
- TYPE_PAIRS.each_pair do |type, reciever|
409
- define_method :"test_#{type}_#{predicate}" do
410
- assert_same false, reciever.public_send(predicate, :no_with)
411
- assert_same false, reciever.public_send(predicate, :als_no_with)
412
- assert_same false, reciever.public_send(predicate, 'no_with')
413
- assert_same false, reciever.public_send(predicate, 'als_no_with')
414
- assert_same false, reciever.public_send(predicate, 0)
415
- assert_same false, reciever.public_send(predicate, 0.9)
416
-
417
- assert_same true, reciever.public_send(predicate, :with)
418
- assert_same true, reciever.public_send(predicate, :als_with)
419
- assert_same true, reciever.public_send(predicate, 'with')
420
- assert_same true, reciever.public_send(predicate, 'als_with')
421
- assert_same true, reciever.public_send(predicate, 1)
422
- assert_same true, reciever.public_send(predicate, 1.9)
423
-
424
- assert_same true, reciever.public_send(predicate, :with_any)
425
- assert_same true, reciever.public_send(predicate, :als_with_any)
426
- assert_same true, reciever.public_send(predicate, 'with_any')
427
- assert_same true, reciever.public_send(predicate, 'als_with_any')
428
- assert_same true, reciever.public_send(predicate, 2)
429
- assert_same true, reciever.public_send(predicate, 2.9)
430
-
431
- assert_same true, reciever.public_send(predicate, :adj_with)
432
- assert_same true, reciever.public_send(predicate, :als_adj_with)
433
- assert_same true, reciever.public_send(predicate, 'adj_with')
434
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
435
- assert_same true, reciever.public_send(predicate, 3)
436
- assert_same true, reciever.public_send(predicate, 3.9)
437
-
438
- assert_same false, reciever.public_send(predicate, :none)
439
- assert_same false, reciever.public_send(predicate, 'none')
440
- assert_same false, reciever.public_send(predicate, 4)
441
- assert_same false, reciever.public_send(predicate, 4.9)
442
- assert_same false, reciever.public_send(predicate, BasicObject.new)
443
- end
444
- end
445
- end
446
-
447
- end
448
-
449
-
450
- class Test_Striuct_Subclass_Predicate_HookTiming_Setter_Enable < Test::Unit::TestCase
451
-
452
- class Subclass < Striuct
453
- member :no_with
454
- alias_member :als_no_with, :no_with
455
- member :with, nil, setter_validation: true
456
- alias_member :als_with, :with
457
- member :with_any, BasicObject, writer_validation: true
458
- alias_member :als_with_any, :with_any
459
- member :adj_with, nil, writer_validation: true do |_|; end
460
- alias_member :als_adj_with, :adj_with
461
-
462
- close_member
463
- end.freeze
464
-
465
- INSTANCE = Subclass.new.freeze
466
-
467
- TYPE_PAIRS = {
468
- class: Subclass,
469
- instance: INSTANCE
470
- }.freeze
471
-
472
- [:with_safety_setter?, :with_safety_writer?].each do |predicate|
473
- TYPE_PAIRS.each_pair do |type, reciever|
474
- define_method :"test_#{type}_#{predicate}" do
475
- assert_same true, reciever.public_send(predicate, :no_with)
476
- assert_same true, reciever.public_send(predicate, :als_no_with)
477
- assert_same true, reciever.public_send(predicate, 'no_with')
478
- assert_same true, reciever.public_send(predicate, 'als_no_with')
479
- assert_same true, reciever.public_send(predicate, 0)
480
- assert_same true, reciever.public_send(predicate, 0.9)
481
-
482
- assert_same true, reciever.public_send(predicate, :with)
483
- assert_same true, reciever.public_send(predicate, :als_with)
484
- assert_same true, reciever.public_send(predicate, 'with')
485
- assert_same true, reciever.public_send(predicate, 'als_with')
486
- assert_same true, reciever.public_send(predicate, 1)
487
- assert_same true, reciever.public_send(predicate, 1.9)
488
-
489
- assert_same true, reciever.public_send(predicate, :with_any)
490
- assert_same true, reciever.public_send(predicate, :als_with_any)
491
- assert_same true, reciever.public_send(predicate, 'with_any')
492
- assert_same true, reciever.public_send(predicate, 'als_with_any')
493
- assert_same true, reciever.public_send(predicate, 2)
494
- assert_same true, reciever.public_send(predicate, 2.9)
495
-
496
- assert_same true, reciever.public_send(predicate, :adj_with)
497
- assert_same true, reciever.public_send(predicate, :als_adj_with)
498
- assert_same true, reciever.public_send(predicate, 'adj_with')
499
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
500
- assert_same true, reciever.public_send(predicate, 3)
501
- assert_same true, reciever.public_send(predicate, 3.9)
502
-
503
- assert_same false, reciever.public_send(predicate, :none)
504
- assert_same false, reciever.public_send(predicate, 'none')
505
- assert_same false, reciever.public_send(predicate, 4)
506
- assert_same false, reciever.public_send(predicate, 4.9)
507
- assert_same false, reciever.public_send(predicate, BasicObject.new)
508
- end
509
- end
510
- end
511
-
512
- end
513
-
514
- class Test_Striuct_Subclass_Predicate_HookTiming_Setter_Disable < Test::Unit::TestCase
515
-
516
- class Subclass < Striuct
517
- member :no_with
518
- alias_member :als_no_with, :no_with
519
-
520
- member :with, nil, setter_validation: false
521
- alias_member :als_with, :with
522
-
523
- member :with_any, BasicObject, writer_validation: false
524
- alias_member :als_with_any, :with_any
525
-
526
- member :adj_with, nil, writer_validation: false do |_|; end
527
- alias_member :als_adj_with, :adj_with
528
-
529
- close_member
530
- end.freeze
531
-
532
- INSTANCE = Subclass.new.freeze
533
-
534
- TYPE_PAIRS = {
535
- class: Subclass,
536
- instance: INSTANCE
537
- }.freeze
538
-
539
- [:with_safety_setter?, :with_safety_writer?].each do |predicate|
540
- TYPE_PAIRS.each_pair do |type, reciever|
541
- define_method :"test_#{type}_#{predicate}" do
542
- assert_same true, reciever.public_send(predicate, :no_with)
543
- assert_same true, reciever.public_send(predicate, :als_no_with)
544
- assert_same true, reciever.public_send(predicate, 'no_with')
545
- assert_same true, reciever.public_send(predicate, 'als_no_with')
546
- assert_same true, reciever.public_send(predicate, 0)
547
- assert_same true, reciever.public_send(predicate, 0.9)
548
-
549
- assert_same false, reciever.public_send(predicate, :with)
550
- assert_same false, reciever.public_send(predicate, :als_with)
551
- assert_same false, reciever.public_send(predicate, 'with')
552
- assert_same false, reciever.public_send(predicate, 'als_with')
553
- assert_same false, reciever.public_send(predicate, 1)
554
- assert_same false, reciever.public_send(predicate, 1.9)
555
-
556
- assert_same false, reciever.public_send(predicate, :with_any)
557
- assert_same false, reciever.public_send(predicate, :als_with_any)
558
- assert_same false, reciever.public_send(predicate, 'with_any')
559
- assert_same false, reciever.public_send(predicate, 'als_with_any')
560
- assert_same false, reciever.public_send(predicate, 2)
561
- assert_same false, reciever.public_send(predicate, 2.9)
562
-
563
- assert_same false, reciever.public_send(predicate, :adj_with)
564
- assert_same false, reciever.public_send(predicate, :als_adj_with)
565
- assert_same false, reciever.public_send(predicate, 'adj_with')
566
- assert_same false, reciever.public_send(predicate, 'als_adj_with')
567
- assert_same false, reciever.public_send(predicate, 3)
568
- assert_same false, reciever.public_send(predicate, 3.9)
569
-
570
- assert_same false, reciever.public_send(predicate, :none)
571
- assert_same false, reciever.public_send(predicate, 'none')
572
- assert_same false, reciever.public_send(predicate, 4)
573
- assert_same false, reciever.public_send(predicate, 4.9)
574
- assert_same false, reciever.public_send(predicate, BasicObject.new)
575
- end
576
- end
577
- end
578
-
579
- end
580
-
581
-
582
- class Test_Striuct_Subclass_Predicate_HookTiming_Getter_Enable < Test::Unit::TestCase
583
-
584
- class Subclass < Striuct
585
- member :no_with
586
- alias_member :als_no_with, :no_with
587
- member :with, nil, getter_validation: true
588
- alias_member :als_with, :with
589
- member :with_any, BasicObject, reader_validation: true
590
- alias_member :als_with_any, :with_any
591
- member :adj_with, nil, reader_validation: true do |_|; end
592
- alias_member :als_adj_with, :adj_with
593
-
594
- close_member
595
- end.freeze
596
-
597
- INSTANCE = Subclass.new.freeze
598
-
599
- TYPE_PAIRS = {
600
- class: Subclass,
601
- instance: INSTANCE
602
- }.freeze
603
-
604
- [:with_safety_getter?, :with_safety_reader?].each do |predicate|
605
- TYPE_PAIRS.each_pair do |type, reciever|
606
- define_method :"test_#{type}_#{predicate}" do
607
- assert_same false, reciever.public_send(predicate, :no_with)
608
- assert_same false, reciever.public_send(predicate, :als_no_with)
609
- assert_same false, reciever.public_send(predicate, 'no_with')
610
- assert_same false, reciever.public_send(predicate, 'als_no_with')
611
- assert_same false, reciever.public_send(predicate, 0)
612
- assert_same false, reciever.public_send(predicate, 0.9)
613
-
614
- assert_same true, reciever.public_send(predicate, :with)
615
- assert_same true, reciever.public_send(predicate, :als_with)
616
- assert_same true, reciever.public_send(predicate, 'with')
617
- assert_same true, reciever.public_send(predicate, 'als_with')
618
- assert_same true, reciever.public_send(predicate, 1)
619
- assert_same true, reciever.public_send(predicate, 1.9)
620
-
621
- assert_same true, reciever.public_send(predicate, :with_any)
622
- assert_same true, reciever.public_send(predicate, :als_with_any)
623
- assert_same true, reciever.public_send(predicate, 'with_any')
624
- assert_same true, reciever.public_send(predicate, 'als_with_any')
625
- assert_same true, reciever.public_send(predicate, 2)
626
- assert_same true, reciever.public_send(predicate, 2.9)
627
-
628
- assert_same true, reciever.public_send(predicate, :adj_with)
629
- assert_same true, reciever.public_send(predicate, :als_adj_with)
630
- assert_same true, reciever.public_send(predicate, 'adj_with')
631
- assert_same true, reciever.public_send(predicate, 'als_adj_with')
632
- assert_same true, reciever.public_send(predicate, 3)
633
- assert_same true, reciever.public_send(predicate, 3.9)
634
-
635
- assert_same false, reciever.public_send(predicate, :none)
636
- assert_same false, reciever.public_send(predicate, 'none')
637
- assert_same false, reciever.public_send(predicate, 4)
638
- assert_same false, reciever.public_send(predicate, 4.9)
639
- assert_same false, reciever.public_send(predicate, BasicObject.new)
640
- end
641
- end
642
- end
643
-
644
- end
645
-
646
- class Test_Striuct_Subclass_Predicate_HookTiming_Getter_Disable < Test::Unit::TestCase
647
-
648
- class Subclass < Striuct
649
- member :no_with
650
- alias_member :als_no_with, :no_with
651
-
652
- member :with, nil, getter_validation: false
653
- alias_member :als_with, :with
654
-
655
- member :with_any, BasicObject, reader_validation: false
656
- alias_member :als_with_any, :with_any
657
-
658
- member :adj_with, nil, reader_validation: false do |_|; end
659
- alias_member :als_adj_with, :adj_with
660
-
661
- close_member
662
- end.freeze
663
-
664
- INSTANCE = Subclass.new.freeze
665
-
666
- TYPE_PAIRS = {
667
- class: Subclass,
668
- instance: INSTANCE
669
- }.freeze
670
-
671
- [:with_safety_getter?, :with_safety_reader?].each do |predicate|
672
- TYPE_PAIRS.each_pair do |type, reciever|
673
- define_method :"test_#{type}_#{predicate}" do
674
- assert_same false, reciever.public_send(predicate, :no_with)
675
- assert_same false, reciever.public_send(predicate, :als_no_with)
676
- assert_same false, reciever.public_send(predicate, 'no_with')
677
- assert_same false, reciever.public_send(predicate, 'als_no_with')
678
- assert_same false, reciever.public_send(predicate, 0)
679
- assert_same false, reciever.public_send(predicate, 0.9)
680
-
681
- assert_same false, reciever.public_send(predicate, :with)
682
- assert_same false, reciever.public_send(predicate, :als_with)
683
- assert_same false, reciever.public_send(predicate, 'with')
684
- assert_same false, reciever.public_send(predicate, 'als_with')
685
- assert_same false, reciever.public_send(predicate, 1)
686
- assert_same false, reciever.public_send(predicate, 1.9)
687
-
688
- assert_same false, reciever.public_send(predicate, :with_any)
689
- assert_same false, reciever.public_send(predicate, :als_with_any)
690
- assert_same false, reciever.public_send(predicate, 'with_any')
691
- assert_same false, reciever.public_send(predicate, 'als_with_any')
692
- assert_same false, reciever.public_send(predicate, 2)
693
- assert_same false, reciever.public_send(predicate, 2.9)
694
-
695
- assert_same false, reciever.public_send(predicate, :adj_with)
696
- assert_same false, reciever.public_send(predicate, :als_adj_with)
697
- assert_same false, reciever.public_send(predicate, 'adj_with')
698
- assert_same false, reciever.public_send(predicate, 'als_adj_with')
699
- assert_same false, reciever.public_send(predicate, 3)
700
- assert_same false, reciever.public_send(predicate, 3.9)
701
-
702
- assert_same false, reciever.public_send(predicate, :none)
703
- assert_same false, reciever.public_send(predicate, 'none')
704
- assert_same false, reciever.public_send(predicate, 4)
705
- assert_same false, reciever.public_send(predicate, 4.9)
706
- assert_same false, reciever.public_send(predicate, BasicObject.new)
707
- end
708
- end
709
- end
710
-
711
- end