@@ -132,25 +132,25 @@ def test_initialize
132
132
assert_equal expected , known_classes
133
133
end
134
134
135
- def test_do_attr_rb_attr
135
+ def assert_do_attr ( flags )
136
136
content = <<-EOF
137
137
void Init_Blah(void) {
138
138
cBlah = rb_define_class("Blah", rb_cObject);
139
139
140
140
/*
141
141
* This is an accessor
142
142
*/
143
- rb_attr( cBlah, rb_intern( "accessor"), 1, 1, Qfalse) ;
143
+ #{ yield " cBlah" , "accessor" , flags [ 1 ] , flags [ 1 ] } ;
144
144
145
145
/*
146
146
* This is a reader
147
147
*/
148
- rb_attr( cBlah, rb_intern( "reader"), 1, 0, Qfalse) ;
148
+ #{ yield " cBlah" , "reader" , flags [ 1 ] , flags [ 0 ] } ;
149
149
150
150
/*
151
151
* This is a writer
152
152
*/
153
- rb_attr( cBlah, rb_intern( "writer"), 0, 1, Qfalse) ;
153
+ #{ yield " cBlah" , "writer" , flags [ 0 ] , flags [ 1 ] } ;
154
154
}
155
155
EOF
156
156
@@ -176,72 +176,21 @@ def test_do_attr_rb_attr
176
176
assert_equal 'This is a writer' , writer . comment . text
177
177
end
178
178
179
- def test_do_attr_rb_attr_2
180
- content = <<-EOF
181
- void Init_Blah(void) {
182
- cBlah = rb_define_class("Blah", rb_cObject);
183
-
184
- /*
185
- * This is an accessor
186
- */
187
- rb_attr(cBlah, rb_intern_const("accessor"), 1, 1, Qfalse);
188
-
189
- /*
190
- * This is a reader
191
- */
192
- rb_attr(cBlah, rb_intern_const("reader"), 1, 0, Qfalse);
193
-
194
- /*
195
- * This is a writer
196
- */
197
- rb_attr(cBlah, rb_intern_const("writer"), 0, 1, Qfalse);
198
- }
199
- EOF
200
-
201
- klass = util_get_class content , 'cBlah'
202
-
203
- attrs = klass . attributes
204
- assert_equal 3 , attrs . length , attrs . inspect
205
-
206
- accessor = attrs . shift
207
- assert_equal 'accessor' , accessor . name
208
- assert_equal 'RW' , accessor . rw
209
- assert_equal 'This is an accessor' , accessor . comment . text
210
- assert_equal @top_level , accessor . file
211
-
212
- reader = attrs . shift
213
- assert_equal 'reader' , reader . name
214
- assert_equal 'R' , reader . rw
215
- assert_equal 'This is a reader' , reader . comment . text
216
-
217
- writer = attrs . shift
218
- assert_equal 'writer' , writer . name
219
- assert_equal 'W' , writer . rw
220
- assert_equal 'This is a writer' , writer . comment . text
221
- end
222
-
223
- def test_do_attr_rb_define_attr
224
- content = <<-EOF
225
- void Init_Blah(void) {
226
- cBlah = rb_define_class("Blah", rb_cObject);
227
-
228
- /*
229
- * This is an accessor
230
- */
231
- rb_define_attr(cBlah, "accessor", 1, 1);
232
- }
233
- EOF
234
-
235
- klass = util_get_class content , 'cBlah'
236
-
237
- attrs = klass . attributes
238
- assert_equal 1 , attrs . length , attrs . inspect
239
-
240
- accessor = attrs . shift
241
- assert_equal 'accessor' , accessor . name
242
- assert_equal 'RW' , accessor . rw
243
- assert_equal 'This is an accessor' , accessor . comment . text
244
- assert_equal @top_level , accessor . file
179
+ {
180
+ num : %w[ 0 1 ] ,
181
+ macro : %w[ FALSE TRUE ] ,
182
+ ruby : %w[ Qfalse Qtrue ] ,
183
+ bool : %w[ false true ] ,
184
+ } . each_pair do |name , values |
185
+ define_method ( "test_do_attr:rb_attr:intern:#{ name } " ) do
186
+ assert_do_attr ( values ) { |c , name , r , w | %[rb_attr(#{ c } , rb_intern("#{ name } "), #{ r } , #{ w } , Qfalse)] }
187
+ end
188
+ define_method ( "test_do_attr:rb_attr:intern_const:#{ name } " ) do
189
+ assert_do_attr ( values ) { |c , name , r , w | %[rb_attr(#{ c } , rb_intern_const("#{ name } "), #{ r } , #{ w } , Qfalse)] }
190
+ end
191
+ define_method ( "test_do_attr:rb_define_attr:#{ name } " ) do
192
+ assert_do_attr ( values ) { |c , name , r , w | %[rb_define_attr(#{ c } , "#{ name } ", #{ r } , #{ w } )] }
193
+ end
245
194
end
246
195
247
196
def test_do_aliases
0 commit comments