Skip to content

Commit

Permalink
Merge pull request #74 from ros/fix_default_value_non_primitive_fixed…
Browse files Browse the repository at this point in the history
…_size_arrays

fix default value for non-primitive fixed-size arrays
  • Loading branch information
dirk-thomas authored Feb 27, 2017
2 parents 9ee0460 + e91679e commit 45ecd54
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
12 changes: 10 additions & 2 deletions src/genpy/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,17 @@ def default_value(msg_context, field_type, default_package):
return "b''"
elif array_len is None: #var-length
return '[]'
else: # fixed-length, fill values
else:
# fixed-length
def_val = default_value(msg_context, base_type, default_package)
return '[' + def_val + '] * ' + str(array_len)
if base_type in [
'byte', 'int8', 'int16', 'int32', 'int64', 'uint16', 'uint32',
'uint64', 'float32', 'float64', 'string', 'bool'
]: # fill primitive values
return '[' + def_val + '] * ' + str(array_len)
else: # fill values with distinct instances
def_val = default_value(msg_context, base_type, default_package)
return '[' + def_val + ' for _ in range(' + str(array_len) + ')]'
else:
return compute_constructor(msg_context, default_package, field_type)

Expand Down
2 changes: 1 addition & 1 deletion test/test_genpy_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ def test_default_value():
assert b'\0\0\0\0' == eval(default_value(msg_context, 'uint8[4]', 'roslib'))

assert '[]' == default_value(msg_context, 'fake_msgs/String[]', 'std_msgs')
assert '[fake_msgs.msg.String()] * 2' == default_value(msg_context, 'fake_msgs/String[2]', 'std_msgs')
assert '[fake_msgs.msg.String() for _ in range(2)]' == default_value(msg_context, 'fake_msgs/String[2]', 'std_msgs')

def test_make_python_safe():
from genpy.generator import make_python_safe
Expand Down

0 comments on commit 45ecd54

Please sign in to comment.