Skip to content

Commit 0a39b4d

Browse files
author
Nick Laurenson
committed
test Add multiple test
- group test that test setup_up function via parametrization - add some config file file dor nested parameter map - add a test about get_dynamic_mapped_parameter
1 parent 17bf97d commit 0a39b4d

4 files changed

Lines changed: 64 additions & 10 deletions

File tree

generate_parameter_library_py/generate_parameter_library_py/test/YAML_parse_error_test.py

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from generate_parameter_library_py.generate_cpp_header import run as run_cpp
2222
from generate_parameter_library_py.generate_python_module import run as run_python
2323
from generate_parameter_library_py.generate_markdown import run as run_md
24-
from generate_parameter_library_py.parse_yaml import YAMLSyntaxError
24+
from generate_parameter_library_py.parse_yaml import YAMLSyntaxError, get_dynamic_mapped_parameter
2525
from generate_parameter_library_py.generate_cpp_header import parse_args
2626

2727

@@ -86,17 +86,43 @@ def test_expected(test_input, expected):
8686
print(e.value)
8787

8888

89-
def test_parse_valid_parameter_file():
89+
@pytest.mark.parametrize(
90+
"yaml_test_file",
91+
[
92+
("valid_parameters.yaml"),
93+
("valid_parameters_with_none_type.yaml"),
94+
("nested_map_test.yaml"),
95+
("nested_map_keys.yaml"),
96+
],
97+
)
98+
def test_parse_valid_parameter_files(yaml_test_file):
9099
try:
91-
yaml_test_file = 'valid_parameters.yaml'
92100
set_up(yaml_test_file)
93101
except Exception as e:
94102
assert False, f'failed to parse valid file, reason:{e}'
95103

96-
97-
def test_parse_valid_parameter_file_including_none_type():
98-
try:
99-
yaml_test_file = 'valid_parameters_with_none_type.yaml'
100-
set_up(yaml_test_file)
101-
except Exception as e:
102-
assert False, f'failed to parse valid file, reason:{e}'
104+
@pytest.mark.parametrize(
105+
"param_name,declared_params,expected",
106+
[
107+
# entries is inside nested -> resolve to nested.entries
108+
("nested.__map_entries.value", {"nested.entries"}, ["nested.entries"]),
109+
# items is inside level1.level2 -> resolve to level1.level2.items
110+
("level1.level2.__map_items.param", {"level1.level2.items"}, ["level1.level2.items"]),
111+
# keys is at root -> resolve to bare name
112+
("__map_keys.value", {"keys"}, ["keys"]),
113+
# multi-level maps with keys at root -> all bare names
114+
(
115+
"__map_level1.__map_level2.__map_level3.value",
116+
{"level1", "level2", "level3"},
117+
["level1", "level2", "level3"],
118+
),
119+
# keys at root but __map_ inside a struct (like pid.__map_joints)
120+
("pid.__map_joints.p", {"joints"}, ["joints"]),
121+
# nested struct with keys at root (like nested_dynamic.__map_joints)
122+
("nested_dynamic.__map_joints.__map_dof_names.nested", {"joints", "dof_names"}, ["joints", "dof_names"]),
123+
],
124+
)
125+
def test_get_dynamic_mapped_parameter_nested(param_name, declared_params, expected):
126+
"""Test that get_dynamic_mapped_parameter returns correct paths for nested maps."""
127+
result = get_dynamic_mapped_parameter(param_name, declared_params)
128+
assert result == expected
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
nested_map_test:
2+
nested:
3+
entries:
4+
type: string_array
5+
default_value: ["entry1", "entry2"]
6+
description: "Keys for the nested mapped parameters"
7+
8+
__map_entries:
9+
value:
10+
type: double
11+
default_value: 1.0
12+
description: "A value in the nested map"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Test nested mapped parameters for get_dynamic_mapped_parameter
2+
nested_map_test:
3+
__map_outer:
4+
__map_inner:
5+
value:
6+
type: double
7+
default_value: 1.23
8+
description: "A deeply nested mapped parameter."

generate_parameter_library_py/setup.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,14 @@
6363
'share/' + package_name + '/test',
6464
['generate_parameter_library_py/test/valid_parameters_with_none_type.yaml'],
6565
),
66+
(
67+
'share/' + package_name + '/test',
68+
['generate_parameter_library_py/test/nested_map_test.yaml'],
69+
),
70+
(
71+
'share/' + package_name + '/test',
72+
['generate_parameter_library_py/test/nested_map_keys.yaml'],
73+
),
6674
('share/ament_index/resource_index/packages', ['resource/' + package_name]),
6775
],
6876
install_requires=['setuptools', 'typeguard', 'jinja2', 'pyyaml'],

0 commit comments

Comments
 (0)