|
21 | 21 | from generate_parameter_library_py.generate_cpp_header import run as run_cpp |
22 | 22 | from generate_parameter_library_py.generate_python_module import run as run_python |
23 | 23 | 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 |
25 | 25 | from generate_parameter_library_py.generate_cpp_header import parse_args |
26 | 26 |
|
27 | 27 |
|
@@ -86,17 +86,43 @@ def test_expected(test_input, expected): |
86 | 86 | print(e.value) |
87 | 87 |
|
88 | 88 |
|
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): |
90 | 99 | try: |
91 | | - yaml_test_file = 'valid_parameters.yaml' |
92 | 100 | set_up(yaml_test_file) |
93 | 101 | except Exception as e: |
94 | 102 | assert False, f'failed to parse valid file, reason:{e}' |
95 | 103 |
|
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 |
0 commit comments