Skip to content

Commit 95713b9

Browse files
committed
Including a method to test ivi_dance and len mechansim
1 parent 2c546ff commit 95713b9

13 files changed

Lines changed: 511 additions & 333 deletions

generated/nifake/nifake/_grpc_stub_interpreter.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,13 @@ def method_with_proto_only_parameter(self, attribute_value): # noqa: N802
349349
grpc_types.MethodWithProtoOnlyParameterRequest(attribute_value=attribute_value),
350350
)
351351

352+
def mixed_ivi_dance_and_len_mechanism(self, input_values): # noqa: N802
353+
response = self._invoke(
354+
self._client.MixedIviDanceAndLenMechanism,
355+
grpc_types.MixedIviDanceAndLenMechanismRequest(vi=self._vi, input_values=input_values),
356+
)
357+
return response.output_array
358+
352359
def multiple_array_types(self, output_array_size, input_array_of_floats, input_array_of_integers): # noqa: N802
353360
response = self._invoke(
354361
self._client.MultipleArrayTypes,

generated/nifake/nifake/_library.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ def __init__(self, ctypes_library):
7171
self.niFake_MethodUsingWholeAndFractionalNumbers_cfunc = None
7272
self.niFake_MethodWithGrpcOnlyParam_cfunc = None
7373
self.niFake_MethodWithProtoOnlyParameter_cfunc = None
74+
self.niFake_MixedIviDanceAndLenMechanism_cfunc = None
7475
self.niFake_MultipleArrayTypes_cfunc = None
7576
self.niFake_MultipleArraysDifferentSize_cfunc = None
7677
self.niFake_MultipleArraysSameSize_cfunc = None
@@ -470,6 +471,14 @@ def niFake_MethodWithProtoOnlyParameter(self, attribute_value): # noqa: N802
470471
self.niFake_MethodWithProtoOnlyParameter_cfunc.restype = ViStatus # noqa: F405
471472
return self.niFake_MethodWithProtoOnlyParameter_cfunc(attribute_value)
472473

474+
def niFake_MixedIviDanceAndLenMechanism(self, vi, input_values, input_values_size, output_size, output_array): # noqa: N802
475+
with self._func_lock:
476+
if self.niFake_MixedIviDanceAndLenMechanism_cfunc is None:
477+
self.niFake_MixedIviDanceAndLenMechanism_cfunc = self._get_library_function('niFake_MixedIviDanceAndLenMechanism')
478+
self.niFake_MixedIviDanceAndLenMechanism_cfunc.argtypes = [ViSession, ctypes.POINTER(ViReal64), ViInt32, ViInt32, ctypes.POINTER(ViInt32)] # noqa: F405
479+
self.niFake_MixedIviDanceAndLenMechanism_cfunc.restype = ViStatus # noqa: F405
480+
return self.niFake_MixedIviDanceAndLenMechanism_cfunc(vi, input_values, input_values_size, output_size, output_array)
481+
473482
def niFake_MultipleArrayTypes(self, vi, output_array_size, output_array, output_array_of_fixed_length, input_array_sizes, input_array_of_floats, input_array_of_integers): # noqa: N802
474483
with self._func_lock:
475484
if self.niFake_MultipleArrayTypes_cfunc is None:

generated/nifake/nifake/_library_interpreter.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,21 @@ def method_with_proto_only_parameter(self, attribute_value): # noqa: N802
528528
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
529529
return
530530

531+
def mixed_ivi_dance_and_len_mechanism(self, input_values): # noqa: N802
532+
vi_ctype = _visatype.ViSession(self._vi) # case S110
533+
input_values_ctype = _get_ctypes_pointer_for_buffer(value=input_values, library_type=_visatype.ViReal64) # case B550
534+
input_values_size_ctype = _visatype.ViInt32(0 if input_values is None else len(input_values)) # case S160
535+
output_size_ctype = _visatype.ViInt32() # case S170
536+
output_array_ctype = None # case B580
537+
error_code = self._library.niFake_MixedIviDanceAndLenMechanism(vi_ctype, input_values_ctype, input_values_size_ctype, output_size_ctype, output_array_ctype)
538+
errors.handle_error(self, error_code, ignore_warnings=True, is_error_handling=False)
539+
output_size_ctype = _visatype.ViInt32(error_code) # case S180
540+
output_array_size = output_size_ctype.value # case B590
541+
output_array_ctype = _get_ctypes_pointer_for_buffer(library_type=_visatype.ViInt32, size=output_array_size) # case B590
542+
error_code = self._library.niFake_MixedIviDanceAndLenMechanism(vi_ctype, input_values_ctype, input_values_size_ctype, output_size_ctype, output_array_ctype)
543+
errors.handle_error(self, error_code, ignore_warnings=False, is_error_handling=False)
544+
return [int(output_array_ctype[i]) for i in range(output_size_ctype.value)]
545+
531546
def multiple_array_types(self, output_array_size, input_array_of_floats, input_array_of_integers): # noqa: N802
532547
vi_ctype = _visatype.ViSession(self._vi) # case S110
533548
output_array_size_ctype = _visatype.ViInt32(output_array_size) # case S210

generated/nifake/nifake/nifake_pb2.py

Lines changed: 321 additions & 317 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

generated/nifake/nifake/nifake_pb2_grpc.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,11 @@ def __init__(self, channel):
149149
request_serializer=nifake__pb2.MultipleArraysDifferentSizeRequest.SerializeToString,
150150
response_deserializer=nifake__pb2.MultipleArraysDifferentSizeResponse.FromString,
151151
)
152+
self.MixedIviDanceAndLenMechanism = channel.unary_unary(
153+
'/nifake_grpc.NiFake/MixedIviDanceAndLenMechanism',
154+
request_serializer=nifake__pb2.MixedIviDanceAndLenMechanismRequest.SerializeToString,
155+
response_deserializer=nifake__pb2.MixedIviDanceAndLenMechanismResponse.FromString,
156+
)
152157
self.OneInputFunction = channel.unary_unary(
153158
'/nifake_grpc.NiFake/OneInputFunction',
154159
request_serializer=nifake__pb2.OneInputFunctionRequest.SerializeToString,
@@ -671,6 +676,12 @@ def MultipleArraysDifferentSize(self, request, context):
671676
context.set_details('Method not implemented!')
672677
raise NotImplementedError('Method not implemented!')
673678

679+
def MixedIviDanceAndLenMechanism(self, request, context):
680+
"""Missing associated documentation comment in .proto file."""
681+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
682+
context.set_details('Method not implemented!')
683+
raise NotImplementedError('Method not implemented!')
684+
674685
def OneInputFunction(self, request, context):
675686
"""Missing associated documentation comment in .proto file."""
676687
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
@@ -1235,6 +1246,11 @@ def add_NiFakeServicer_to_server(servicer, server):
12351246
request_deserializer=nifake__pb2.MultipleArraysDifferentSizeRequest.FromString,
12361247
response_serializer=nifake__pb2.MultipleArraysDifferentSizeResponse.SerializeToString,
12371248
),
1249+
'MixedIviDanceAndLenMechanism': grpc.unary_unary_rpc_method_handler(
1250+
servicer.MixedIviDanceAndLenMechanism,
1251+
request_deserializer=nifake__pb2.MixedIviDanceAndLenMechanismRequest.FromString,
1252+
response_serializer=nifake__pb2.MixedIviDanceAndLenMechanismResponse.SerializeToString,
1253+
),
12381254
'OneInputFunction': grpc.unary_unary_rpc_method_handler(
12391255
servicer.OneInputFunction,
12401256
request_deserializer=nifake__pb2.OneInputFunctionRequest.FromString,
@@ -2059,6 +2075,23 @@ def MultipleArraysDifferentSize(request,
20592075
options, channel_credentials,
20602076
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
20612077

2078+
@staticmethod
2079+
def MixedIviDanceAndLenMechanism(request,
2080+
target,
2081+
options=(),
2082+
channel_credentials=None,
2083+
call_credentials=None,
2084+
insecure=False,
2085+
compression=None,
2086+
wait_for_ready=None,
2087+
timeout=None,
2088+
metadata=None):
2089+
return grpc.experimental.unary_unary(request, target, '/nifake_grpc.NiFake/MixedIviDanceAndLenMechanism',
2090+
nifake__pb2.MixedIviDanceAndLenMechanismRequest.SerializeToString,
2091+
nifake__pb2.MixedIviDanceAndLenMechanismResponse.FromString,
2092+
options, channel_credentials,
2093+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
2094+
20622095
@staticmethod
20632096
def OneInputFunction(request,
20642097
target,

generated/nifake/nifake/session.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,23 @@ def method_with_proto_only_parameter(self, attribute_value):
13871387
'''
13881388
self._interpreter.method_with_proto_only_parameter(attribute_value)
13891389

1390+
@ivi_synchronized
1391+
def mixed_ivi_dance_and_len_mechanism(self, input_values):
1392+
r'''mixed_ivi_dance_and_len_mechanism
1393+
1394+
Test method with mixed size mechanisms: one len-sized input array and one IVI-dance output array.
1395+
1396+
Args:
1397+
input_values (list of float): Input array of doubles using len size mechanism.
1398+
1399+
1400+
Returns:
1401+
output_array (list of int): Output array using IVI-dance size mechanism.
1402+
1403+
'''
1404+
output_array = self._interpreter.mixed_ivi_dance_and_len_mechanism(input_values)
1405+
return output_array
1406+
13901407
@ivi_synchronized
13911408
def multiple_array_types(self, output_array_size, input_array_of_floats, input_array_of_integers=None):
13921409
r'''multiple_array_types

generated/nifake/nifake/unit_tests/_mock_helper.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ def __init__(self):
148148
self._defaults['MethodWithGrpcOnlyParam']['return'] = 0
149149
self._defaults['MethodWithProtoOnlyParameter'] = {}
150150
self._defaults['MethodWithProtoOnlyParameter']['return'] = 0
151+
self._defaults['MixedIviDanceAndLenMechanism'] = {}
152+
self._defaults['MixedIviDanceAndLenMechanism']['return'] = 0
153+
self._defaults['MixedIviDanceAndLenMechanism']['outputArray'] = None
151154
self._defaults['MultipleArrayTypes'] = {}
152155
self._defaults['MultipleArrayTypes']['return'] = 0
153156
self._defaults['MultipleArrayTypes']['outputArray'] = None
@@ -738,6 +741,22 @@ def niFake_MethodWithProtoOnlyParameter(self, attribute_value): # noqa: N802
738741
return self._defaults['MethodWithProtoOnlyParameter']['return']
739742
return self._defaults['MethodWithProtoOnlyParameter']['return']
740743

744+
def niFake_MixedIviDanceAndLenMechanism(self, vi, input_values, input_values_size, output_size, output_array): # noqa: N802
745+
if self._defaults['MixedIviDanceAndLenMechanism']['return'] != 0:
746+
return self._defaults['MixedIviDanceAndLenMechanism']['return']
747+
# output_array
748+
if self._defaults['MixedIviDanceAndLenMechanism']['outputArray'] is None:
749+
raise MockFunctionCallError("niFake_MixedIviDanceAndLenMechanism", param='outputArray')
750+
if output_size.value == 0:
751+
return len(self._defaults['MixedIviDanceAndLenMechanism']['outputArray'])
752+
try:
753+
output_array_ref = output_array.contents
754+
except AttributeError:
755+
output_array_ref = output_array
756+
for i in range(len(self._defaults['MixedIviDanceAndLenMechanism']['outputArray'])):
757+
output_array_ref[i] = self._defaults['MixedIviDanceAndLenMechanism']['outputArray'][i]
758+
return self._defaults['MixedIviDanceAndLenMechanism']['return']
759+
741760
def niFake_MultipleArrayTypes(self, vi, output_array_size, output_array, output_array_of_fixed_length, input_array_sizes, input_array_of_floats, input_array_of_integers): # noqa: N802
742761
if self._defaults['MultipleArrayTypes']['return'] != 0:
743762
return self._defaults['MultipleArrayTypes']['return']
@@ -1127,6 +1146,8 @@ def set_side_effects_and_return_values(self, mock_library):
11271146
mock_library.niFake_MethodWithGrpcOnlyParam.return_value = 0
11281147
mock_library.niFake_MethodWithProtoOnlyParameter.side_effect = MockFunctionCallError("niFake_MethodWithProtoOnlyParameter")
11291148
mock_library.niFake_MethodWithProtoOnlyParameter.return_value = 0
1149+
mock_library.niFake_MixedIviDanceAndLenMechanism.side_effect = MockFunctionCallError("niFake_MixedIviDanceAndLenMechanism")
1150+
mock_library.niFake_MixedIviDanceAndLenMechanism.return_value = 0
11301151
mock_library.niFake_MultipleArrayTypes.side_effect = MockFunctionCallError("niFake_MultipleArrayTypes")
11311152
mock_library.niFake_MultipleArrayTypes.return_value = 0
11321153
mock_library.niFake_MultipleArraysDifferentSize.side_effect = MockFunctionCallError("niFake_MultipleArraysDifferentSize")

generated/nifake/nifake/unit_tests/test_grpc.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -558,17 +558,16 @@ def test_multiple_arrays_different_size_none_input(self):
558558
data_array=None,
559559
)
560560

561-
def test_multiple_arrays_different_size_empty_arrays(self):
562-
library_func = 'MultipleArraysDifferentSize'
563-
response_object = self._set_side_effect(library_func)
564-
values_array = []
565-
data_array = []
561+
def test_mixed_ivi_dance_and_len_mechanism(self):
562+
library_func = 'MixedIviDanceAndLenMechanism'
563+
input_values = [1.1, 2.2, 3.3]
564+
expected_output = []
565+
response_object = self._set_side_effect(library_func, output_array=expected_output)
566566
interpreter = self._get_initialized_stub_interpreter()
567-
assert interpreter.multiple_arrays_different_size(values_array, data_array) is None # no outputs
567+
interpreter.mixed_ivi_dance_and_len_mechanism(input_values)
568568
self._assert_call(library_func, response_object).assert_called_once_with(
569569
vi=GRPC_SESSION_OBJECT_FOR_TEST,
570-
values_array=values_array,
571-
data_array=data_array,
570+
input_values=input_values,
572571
)
573572

574573
def test_multiple_arrays_same_size_wrong_size(self):

generated/nifake/nifake/unit_tests/test_library_interpreter.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,12 @@ def test_multiple_arrays_different_size_none_input(self):
352352
_matchers.ViInt32Matcher(0),
353353
)
354354

355+
def test_mixed_ivi_dance_and_len_mechanism(self):
356+
self.patched_library.niFake_MixedIviDanceAndLenMechanism.side_effect = [1, 0]
357+
interpreter = self.get_initialized_library_interpreter()
358+
interpreter.mixed_ivi_dance_and_len_mechanism([1.1])
359+
assert self.patched_library.niFake_MixedIviDanceAndLenMechanism.call_count == 2
360+
355361
def test_parameters_are_multiple_types(self):
356362
self.patched_library.niFake_ParametersAreMultipleTypes.side_effect = self.side_effects_helper.niFake_ParametersAreMultipleTypes
357363
boolean_val = True

src/nifake/metadata/functions.py

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3181,27 +3181,65 @@
31813181
'type': 'ViInt32',
31823182
'use_array': False
31833183
}
3184+
],
3185+
'returns': 'ViStatus'
3186+
},
3187+
'MixedIviDanceAndLenMechanism': {
3188+
'codegen_method': 'public',
3189+
'documentation': {
3190+
'description': 'Test function with mixed size mechanisms: one len-sized input array and one IVI-dance output array.'
3191+
},
3192+
'included_in_proto': True,
3193+
'parameters': [
31843194
{
31853195
'direction': 'in',
31863196
'documentation': {
3187-
'description': 'The number of elements in the ViChar array you specify for names.'
3197+
'description': 'Identifies a particular instrument session.'
31883198
},
3189-
'name': 'nameSize',
3199+
'name': 'vi',
3200+
'type': 'ViSession'
3201+
},
3202+
{
3203+
'direction': 'in',
3204+
'documentation': {
3205+
'description': 'Input array of doubles using len size mechanism.'
3206+
},
3207+
'name': 'inputValues',
3208+
'size': {
3209+
'mechanism': 'len',
3210+
'value': 'inputValuesSize'
3211+
},
3212+
'type': 'ViReal64[]',
3213+
'use_in_python_api': True
3214+
},
3215+
{
3216+
'direction': 'in',
3217+
'documentation': {
3218+
'description': 'Specifies the number of elements in inputValues.'
3219+
},
3220+
'name': 'inputValuesSize',
3221+
'type': 'ViInt32',
3222+
'use_array': False
3223+
},
3224+
{
3225+
'direction': 'in',
3226+
'documentation': {
3227+
'description': 'The number of elements in the output array for IVI dance.'
3228+
},
3229+
'name': 'outputSize',
31903230
'type': 'ViInt32'
31913231
},
31923232
{
31933233
'direction': 'out',
31943234
'documentation': {
3195-
'description': 'The channel name(s) at the specified indices.'
3235+
'description': 'Output array using IVI-dance size mechanism.'
31963236
},
3197-
'name': 'names',
3198-
'python_api_converter_name': 'convert_comma_separated_string_to_list',
3237+
'name': 'outputArray',
31993238
'size': {
32003239
'mechanism': 'ivi-dance',
3201-
'value': 'nameSize'
3240+
'value': 'outputSize'
32023241
},
3203-
'type': 'ViString',
3204-
'type_in_documentation': 'list of str'
3242+
'type': 'ViInt32[]'
32053243
}
32063244
],
32073245
'returns': 'ViStatus'

0 commit comments

Comments
 (0)