striuct 0.4.4 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
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