Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_history_ram_cycle_information_string():
cycle_info = nidigital.HistoryRAMCycleInformation(
pattern_name='pat',
time_set_name='t0',
vector_number=42,
cycle_number=999,
scan_cycle_number=13,
expected_pin_states=[[nidigital.PinState.D, nidigital.PinState.V], [nidigital.PinState.V, nidigital.PinState.D]],
actual_pin_states=[[nidigital.PinState.PIN_STATE_NOT_ACQUIRED, nidigital.PinState.PIN_STATE_NOT_ACQUIRED], [nidigital.PinState.ZERO, nidigital.PinState.ONE]],
per_pin_pass_fail=[[True, True], [False, False]])
print(cycle_info)
expected_string = '''Pattern Name : pat
Time Set Name : t0
Vector Number : 42
Cycle Number : 999
Scan Cycle Number : 13
Expected Pin States : [[D, V], [V, D]]
Actual Pin States : [[PIN_STATE_NOT_ACQUIRED, PIN_STATE_NOT_ACQUIRED], [ZERO, ONE]]
Per Pin Pass Fail : [[True, True], [False, False]]
'''
assert str(cycle_info) == expected_string
pin_names = session.get_pattern_pin_names('new_pattern')
assert self.patched_library.niDigital_GetPatternPinList.call_count == 2
assert pin_names == pin_list
expected_pin_states = [i.expected_pin_states for i in history_ram_cycle_info]
assert expected_pin_states == self.expected_pin_states_looping
# If test expects actual pin state to be 'X', then value returned by the API can be anything.
# So, need to skip those pin states while comparing.
actual_pin_states = [i.actual_pin_states for i in history_ram_cycle_info]
assert len(actual_pin_states) == len(self.actual_pin_states_looping)
for vector_pin_states, vector_pin_states_expected_by_test in zip(actual_pin_states, self.actual_pin_states_looping):
for cycle_pin_states, cycle_pin_states_expected_by_test in zip(vector_pin_states, vector_pin_states_expected_by_test):
for pin_state, pin_state_expected_by_test in zip(cycle_pin_states, cycle_pin_states_expected_by_test):
if pin_state_expected_by_test is not nidigital.PinState.X:
assert pin_state == pin_state_expected_by_test
# Only the first cycle returned is expected to have failures
per_pin_pass_fail = [i.per_pin_pass_fail for i in history_ram_cycle_info]
assert per_pin_pass_fail == self.per_pin_pass_fail_looping
self.patched_library.niDigital_FetchHistoryRAMCycleInformation.side_effect = self.side_effects_helper.niDigital_FetchHistoryRAMCycleInformation
self.side_effects_helper['FetchHistoryRAMCycleInformation']['patternIndex'] = 0
self.side_effects_helper['FetchHistoryRAMCycleInformation']['timeSetIndex'] = 0
self.side_effects_helper['FetchHistoryRAMCycleInformation']['vectorNumber'] = 9
self.side_effects_helper['FetchHistoryRAMCycleInformation']['cycleNumber'] = 11
self.side_effects_helper['FetchHistoryRAMCycleInformation']['numDutCycles'] = 1
self.patched_library.niDigital_GetPatternName.side_effect = self.side_effects_helper.niDigital_GetPatternName
self.side_effects_helper['GetPatternName']['name'] = 'new_pattern'
self.patched_library.niDigital_GetTimeSetName.side_effect = self.side_effects_helper.niDigital_GetTimeSetName
self.side_effects_helper['GetTimeSetName']['name'] = 't0'
self.patched_library.niDigital_FetchHistoryRAMScanCycleNumber.side_effect = self.side_effects_helper.niDigital_FetchHistoryRAMScanCycleNumber
self.side_effects_helper['FetchHistoryRAMScanCycleNumber']['scanCycleNumber'] = -1
self.patched_library.niDigital_FetchHistoryRAMCyclePinData.side_effect = self.side_effects_helper.niDigital_FetchHistoryRAMCyclePinData
self.side_effects_helper['FetchHistoryRAMCyclePinData']['actualNumPinData'] = 8
self.side_effects_helper['FetchHistoryRAMCyclePinData']['expectedPinStates'] = [nidigital.PinState.X.value] * 8
self.side_effects_helper['FetchHistoryRAMCyclePinData']['actualPinStates'] = [nidigital.PinState.NOT_A_PIN_STATE.value] * 8
self.side_effects_helper['FetchHistoryRAMCyclePinData']['perPinPassFail'] = [True] * 8
with nidigital.Session('') as session:
history_ram_cycle_info = session.sites[1].fetch_history_ram_cycle_information(
position=6,
samples_to_read=-1)
self.patched_library.niDigital_FetchHistoryRAMCycleInformation.assert_called_once()
assert self.patched_library.niDigital_GetPatternName.call_count == 2
assert self.patched_library.niDigital_GetTimeSetName.call_count == 2
self.patched_library.niDigital_FetchHistoryRAMScanCycleNumber.assert_called_once()
assert self.patched_library.niDigital_FetchHistoryRAMCyclePinData.call_count == 2
assert len(history_ram_cycle_info) == 1
assert history_ram_cycle_info[0].vector_number == 9
assert history_ram_cycle_info[0].cycle_number == 11
# for niDigital_FetchHistoryRAMCycleInformation_looping
self.pattern_indices_looping = [0, 0, 0, 0, 0, 0, 0]
self.time_set_indices_looping = [0, 1, 1, 2, 2, 2, 0]
self.vector_numbers_looping = [5, 6, 6, 7, 7, 8, 9]
self.cycle_numbers_looping = [5, 6, 7, 8, 9, 10, 11]
self.num_duty_cycles_looping = [1, 1, 1, 2, 2, 2, 1]
# for niDigital_GetTimeSetName_looping
self.time_set_name_looping = ['t0', 'tScan', 't2X']
# for niDigital_FetchHistoryRAMScanCycleNumber_looping
self.scan_cycle_number_looping = [-1, 0, 1, -1, -1, -1, -1]
# for niDigital_FetchHistoryRAMCyclePinData_looping
self.expected_pin_states_looping = [
[[nidigital.PinState.ZERO, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.ZERO, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.ONE, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L]],
[[nidigital.PinState.ONE, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ZERO, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.ONE, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ZERO, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.ZERO, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ONE, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X]]
]
self.actual_pin_states_looping = [
[[nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L]],
[[nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
# for niDigital_FetchHistoryRAMCyclePinData_looping
self.expected_pin_states_looping = [
[[nidigital.PinState.ZERO, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.ZERO, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.ONE, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L]],
[[nidigital.PinState.ONE, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ZERO, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.ONE, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ZERO, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.ZERO, nidigital.PinState.ONE, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.ONE, nidigital.PinState.ZERO, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X]]
]
self.actual_pin_states_looping = [
[[nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L]],
[[nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.L, nidigital.PinState.H, nidigital.PinState.X, nidigital.PinState.X],
[nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.H, nidigital.PinState.L, nidigital.PinState.X, nidigital.PinState.X]],
[[nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X, nidigital.PinState.X]]
]
self.per_pin_pass_fail_looping = [
[[True, False, True, True, False, True, True, True]],
[[True, True, True, True, True, True, True, True]],
[[True, True, True, True, True, True, True, True]],
[[True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True]],
[[True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True]],
[[True, True, True, True, True, True, True, True], [True, True, True, True, True, True, True, True]],