@@ -260,57 +260,103 @@ def test_out_of_range():
260260
261261
262262def test_slot_attributes ():
263+ from rosidl_parser .definition import Array
264+ from rosidl_parser .definition import BoundedSequence
265+ from rosidl_parser .definition import NamespacedType
266+ from rosidl_parser .definition import UnboundedSequence
263267 a = Nested ()
264- assert hasattr (a , 'get_fields_and_field_types' )
268+ assert hasattr (a , 'SLOT_TYPES' )
269+ assert hasattr (a , 'get_slot_types' )
265270 assert hasattr (a , '__slots__' )
266- nested_slot_types_dict = getattr (a , 'get_fields_and_field_types' )()
271+ nested_slot_types_dict = getattr (a , 'get_slot_types' )()
272+ nested_slot_types = Nested .SLOT_TYPES
267273 nested_slots = getattr (a , '__slots__' )
268274 assert len (nested_slot_types_dict ) == len (nested_slots )
269- expected_nested_slot_types_dict = {
270- 'primitives' : 'rosidl_generator_py/Primitives' ,
271- 'two_primitives' : 'rosidl_generator_py/Primitives[2]' ,
272- 'up_to_three_primitives' : 'sequence<rosidl_generator_py/Primitives, 3>' ,
273- 'unbounded_primitives' : 'sequence<rosidl_generator_py/Primitives>' ,
274- }
275- assert len (nested_slot_types_dict ) == len (expected_nested_slot_types_dict )
276-
277- for expected_field , expected_slot_type in expected_nested_slot_types_dict .items ():
278- assert expected_field in nested_slot_types_dict .keys ()
279- assert expected_slot_type == nested_slot_types_dict [expected_field ]
280-
281-
282- def test_primative_slot_attributes ():
275+ assert len (nested_slot_types ) == len (nested_slots )
276+ expected_keys = [
277+ 'primitives' ,
278+ 'two_primitives' ,
279+ 'up_to_three_primitives' ,
280+ 'unbounded_primitives' ,
281+ ]
282+ assert len (nested_slot_types_dict .keys ()) == len (expected_keys )
283+ for e_key in expected_keys :
284+ assert e_key in nested_slot_types_dict .keys ()
285+ assert isinstance (nested_slot_types_dict ['primitives' ], NamespacedType )
286+ assert nested_slot_types_dict ['primitives' ].namespaces == ['rosidl_generator_py' , 'msg' ]
287+ assert nested_slot_types_dict ['primitives' ].name == 'Primitives'
288+
289+ assert isinstance (nested_slot_types_dict ['two_primitives' ], Array )
290+ assert isinstance (nested_slot_types_dict ['two_primitives' ].basetype , NamespacedType )
291+ assert nested_slot_types_dict ['two_primitives' ].basetype .namespaces == \
292+ ['rosidl_generator_py' , 'msg' ]
293+ assert nested_slot_types_dict ['two_primitives' ].basetype .name == 'Primitives'
294+
295+ assert isinstance (nested_slot_types_dict ['up_to_three_primitives' ], BoundedSequence )
296+ assert isinstance (nested_slot_types_dict ['up_to_three_primitives' ].basetype , NamespacedType )
297+ assert nested_slot_types_dict ['up_to_three_primitives' ].basetype .namespaces == \
298+ ['rosidl_generator_py' , 'msg' ]
299+ assert nested_slot_types_dict ['up_to_three_primitives' ].basetype .name == 'Primitives'
300+
301+ assert isinstance (nested_slot_types_dict ['unbounded_primitives' ], UnboundedSequence )
302+ assert isinstance (nested_slot_types_dict ['unbounded_primitives' ].basetype , NamespacedType )
303+ assert nested_slot_types_dict ['unbounded_primitives' ].basetype .namespaces == \
304+ ['rosidl_generator_py' , 'msg' ]
305+ assert nested_slot_types_dict ['unbounded_primitives' ].basetype .name == 'Primitives'
306+
307+
308+ def test_string_slot_attributes ():
309+ from rosidl_parser .definition import Array
310+ from rosidl_parser .definition import BoundedSequence
311+ from rosidl_parser .definition import String
312+ from rosidl_parser .definition import UnboundedSequence
283313 b = StringArrays ()
284- assert hasattr (b , 'get_fields_and_field_types' )
314+ assert hasattr (b , 'SLOT_TYPES' )
315+ assert hasattr (b , 'get_slot_types' )
285316 assert hasattr (b , '__slots__' )
286- string_slot_types_dict = getattr (b , 'get_fields_and_field_types' )()
317+ string_slot_types_dict = getattr (b , 'get_slot_types' )()
318+ string_slot_types = StringArrays .SLOT_TYPES
287319 string_slots = getattr (b , '__slots__' )
288320 assert len (string_slot_types_dict ) == len (string_slots )
289- expected_string_slot_types_dict = {
290- 'ub_string_static_array_value' : 'string<5>[3]' ,
291- 'ub_string_ub_array_value' : 'sequence<string<5>, 10>' ,
292- 'ub_string_dynamic_array_value' : 'sequence<string<5>>' ,
293- 'string_dynamic_array_value' : 'sequence<string>' ,
294- 'string_static_array_value' : 'string[3]' ,
295- 'string_bounded_array_value' : 'sequence<string, 10>' ,
296- 'def_string_dynamic_array_value' : 'sequence<string>' ,
297- 'def_string_static_array_value' : 'string[3]' ,
298- 'def_string_bounded_array_value' : 'sequence<string, 10>' ,
299- 'def_various_quotes' : 'sequence<string>' ,
300- 'def_various_commas' : 'sequence<string>' ,
301- }
302-
303- assert len (string_slot_types_dict ) == len (expected_string_slot_types_dict )
304-
305- for expected_field , expected_slot_type in expected_string_slot_types_dict .items ():
306- assert expected_field in string_slot_types_dict .keys ()
307- assert expected_slot_type == string_slot_types_dict [expected_field ]
308-
309-
310- def test_modifying_slot_fields_and_types ():
311- b = StringArrays ()
312- assert hasattr (b , 'get_fields_and_field_types' )
313- string_slot_types_dict = getattr (b , 'get_fields_and_field_types' )()
314- string_slot_types_dict_len = len (string_slot_types_dict )
315- string_slot_types_dict [1 ] = 2
316- assert len (getattr (b , 'get_fields_and_field_types' )()) == string_slot_types_dict_len
321+ assert len (string_slot_types ) == len (string_slots )
322+
323+ expected_keys = [
324+ 'ub_string_static_array_value' ,
325+ 'ub_string_ub_array_value' ,
326+ 'ub_string_dynamic_array_value' ,
327+ 'string_dynamic_array_value' ,
328+ 'string_static_array_value' ,
329+ 'string_bounded_array_value' ,
330+ 'def_string_dynamic_array_value' ,
331+ 'def_string_static_array_value' ,
332+ 'def_string_bounded_array_value' ,
333+ 'def_various_quotes' ,
334+ 'def_various_commas' ,
335+ ]
336+
337+ assert len (string_slot_types_dict .keys ()) == len (expected_keys )
338+ for e_key in expected_keys :
339+ assert e_key in string_slot_types_dict .keys ()
340+
341+ assert isinstance (string_slot_types_dict ['ub_string_static_array_value' ], Array )
342+ assert isinstance (string_slot_types_dict ['ub_string_static_array_value' ].basetype , String )
343+ assert string_slot_types_dict ['ub_string_static_array_value' ].size == 3
344+ assert string_slot_types_dict ['ub_string_static_array_value' ].basetype .maximum_size == '5'
345+
346+ assert isinstance (string_slot_types_dict ['ub_string_ub_array_value' ], BoundedSequence )
347+ assert isinstance (string_slot_types_dict ['ub_string_ub_array_value' ].basetype , String )
348+ assert string_slot_types_dict ['ub_string_ub_array_value' ].upper_bound == 10
349+ assert string_slot_types_dict ['ub_string_ub_array_value' ].basetype .maximum_size == '5'
350+
351+ assert isinstance (string_slot_types_dict ['ub_string_dynamic_array_value' ], UnboundedSequence )
352+ assert isinstance (string_slot_types_dict ['ub_string_dynamic_array_value' ].basetype , String )
353+ assert string_slot_types_dict ['ub_string_dynamic_array_value' ].basetype .maximum_size == '5'
354+
355+ assert isinstance (string_slot_types_dict ['string_dynamic_array_value' ], UnboundedSequence )
356+ assert isinstance (string_slot_types_dict ['string_dynamic_array_value' ].basetype , String )
357+ assert string_slot_types_dict ['string_dynamic_array_value' ].basetype .maximum_size == 'None'
358+
359+ assert isinstance (string_slot_types_dict ['string_static_array_value' ], Array )
360+ assert isinstance (string_slot_types_dict ['string_static_array_value' ].basetype , String )
361+ assert string_slot_types_dict ['string_static_array_value' ].size == 3
362+ assert string_slot_types_dict ['string_static_array_value' ].basetype .maximum_size == 'None'
0 commit comments