-
Notifications
You must be signed in to change notification settings - Fork 101
Fixing size parameter handling in len-mechanism to handle function parameters with different size parameters #2138
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
10bd251
ddf7097
2700665
bd858fd
287ad78
d2ee442
9488807
ce0a252
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,52 @@ | ||
| from build.helper.metadata_filters import filter_parameters | ||
| from build.helper.parameter_usage_options import ParameterUsageOptions | ||
|
|
||
|
|
||
| def _parameter(name, direction='in', mechanism='fixed', size_value=None): | ||
| size = {'mechanism': mechanism} | ||
| if size_value is not None: | ||
| size['value'] = size_value | ||
|
|
||
| return { | ||
| 'name': name, | ||
| 'direction': direction, | ||
| 'size': size, | ||
| 'is_session_handle': False, | ||
| 'is_repeated_capability': False, | ||
| 'enum': None, | ||
| 'numpy': False, | ||
| 'use_in_python_api': True, | ||
| 'complex_array_representation': None, | ||
| } | ||
|
|
||
|
|
||
| def test_filter_parameters_mixed_usage_ivi_dance_and_len(): | ||
| parameters = [ | ||
| _parameter('ivi_size', mechanism='passed-in'), | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. From looking at nifake/functions.py, the mechanism isn't typically set for and ivi-dance size parameter or a length size parameter. In fact, not even size is set. So, what seems to end up happening is that I don't think it's important to set mechanism for 'ivi_size' or 'len_size' in this test, but if you're going to explicitly set them, you should probably set them correctly.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As to why it's fixed when calculate it in the library interpreter? |
||
| _parameter('out_waveform', direction='out', mechanism='ivi-dance', size_value='ivi_size'), | ||
| _parameter('len_size', mechanism='passed-in'), | ||
| _parameter('len_data', mechanism='len', size_value='len_size'), | ||
| _parameter('timeout', mechanism='fixed'), | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If you're going to set |
||
| ] | ||
|
|
||
| filtered = filter_parameters(parameters, ParameterUsageOptions.SESSION_METHOD_DECLARATION) | ||
| filtered_names = [parameter['name'] for parameter in filtered] | ||
|
|
||
| assert filtered_names == ['len_data', 'timeout'] | ||
|
|
||
|
|
||
| def test_filter_parameters_mixed_usage_ivi_dance_and_multiple_len_sizes(): | ||
| parameters = [ | ||
| _parameter('ivi_size', mechanism='passed-in'), | ||
| _parameter('out_waveform', direction='out', mechanism='ivi-dance', size_value='ivi_size'), | ||
| _parameter('len_a_size', mechanism='passed-in'), | ||
| _parameter('len_b_size', mechanism='passed-in'), | ||
| _parameter('len_a_data', mechanism='len', size_value='len_a_size'), | ||
| _parameter('len_b_data', mechanism='len', size_value='len_b_size'), | ||
| _parameter('timeout', mechanism='fixed'), | ||
| ] | ||
|
|
||
| filtered = filter_parameters(parameters, ParameterUsageOptions.INTERPRETER_METHOD_DECLARATION) | ||
| filtered_names = [parameter['name'] for parameter in filtered] | ||
|
|
||
| assert filtered_names == ['len_a_data', 'len_b_data', 'timeout'] | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| from build.helper.metadata_find import find_len_size_parameter_names | ||
|
|
||
|
|
||
| def _parameter(name, mechanism='fixed', size_value=None): | ||
| size = {'mechanism': mechanism} | ||
| if size_value is not None: | ||
| size['value'] = size_value | ||
|
|
||
| return { | ||
| 'name': name, | ||
| 'size': size, | ||
| } | ||
|
|
||
|
|
||
| def test_find_len_size_parameter_names_multiple_sizes(): | ||
| parameters = [ | ||
| _parameter('len_a_size', mechanism='passed-in'), | ||
| _parameter('len_b_size', mechanism='passed-in'), | ||
| _parameter('len_a_data', mechanism='len', size_value='len_a_size'), | ||
| _parameter('len_b_data', mechanism='len', size_value='len_b_size'), | ||
| _parameter('timeout', mechanism='fixed'), | ||
| ] | ||
|
|
||
| size_names = find_len_size_parameter_names(parameters) | ||
|
|
||
| assert size_names == {'len_a_size', 'len_b_size'} | ||
|
|
||
|
|
||
| def test_find_len_size_parameter_names_empty_when_no_len_parameters(): | ||
| parameters = [ | ||
| _parameter('value', mechanism='passed-in'), | ||
| _parameter('timeout', mechanism='fixed'), | ||
| ] | ||
|
|
||
| size_names = find_len_size_parameter_names(parameters) | ||
|
|
||
| assert size_names == set() |
Uh oh!
There was an error while loading. Please reload this page.