Skip to content

Commit 3ac6a1e

Browse files
authored
add test for timing APIs (#603)
* add test for timing APIs * address review feedback * fix test failure
1 parent d8a32a2 commit 3ac6a1e

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

tests/component/task/test_timing.py

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
import pytest
2+
3+
from nidaqmx.constants import (
4+
AcquisitionType,
5+
Edge,
6+
Level,
7+
LineGrouping,
8+
Polarity,
9+
SampleTimingType,
10+
)
11+
from nidaqmx.system import Device
12+
from nidaqmx.task import Task
13+
14+
15+
@pytest.fixture()
16+
def sim_6535_di_single_line_task(task: Task, sim_6535_device: Device) -> Task:
17+
"""Gets DI task."""
18+
task.di_channels.add_di_chan(
19+
sim_6535_device.di_lines[0].name, line_grouping=LineGrouping.CHAN_FOR_ALL_LINES
20+
)
21+
return task
22+
23+
24+
def test___timing___cfg_handshaking___sets_properties(
25+
sim_6535_di_single_line_task: Task,
26+
) -> None:
27+
sim_6535_di_single_line_task.timing.cfg_handshaking_timing(
28+
AcquisitionType.FINITE, samps_per_chan=2000
29+
)
30+
31+
assert sim_6535_di_single_line_task.timing.samp_timing_type == SampleTimingType.HANDSHAKE
32+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_mode == AcquisitionType.FINITE
33+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_per_chan == 2000
34+
35+
36+
def test___timing___cfg_change_detection___sets_properties(
37+
sim_6535_di_single_line_task: Task,
38+
) -> None:
39+
sim_6535_di_single_line_task.timing.cfg_change_detection_timing(
40+
"port0/line0:1", "port0/line3:5", AcquisitionType.FINITE, samps_per_chan=2000
41+
)
42+
43+
assert (
44+
sim_6535_di_single_line_task.timing.change_detect_di_rising_edge_physical_chans.name
45+
== "port0/line0, port0/line1"
46+
)
47+
assert (
48+
sim_6535_di_single_line_task.timing.change_detect_di_falling_edge_physical_chans.name
49+
== "port0/line3, port0/line4, port0/line5"
50+
)
51+
assert sim_6535_di_single_line_task.timing.samp_timing_type == SampleTimingType.CHANGE_DETECTION
52+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_mode == AcquisitionType.FINITE
53+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_per_chan == 2000
54+
55+
56+
@pytest.mark.parametrize(
57+
"clk_source, active_edge",
58+
[
59+
("PFI5", Edge.RISING),
60+
("RTSI7", Edge.FALLING),
61+
],
62+
)
63+
def test___timing___cfg_pipelined_samp_clk___sets_properties(
64+
sim_6535_di_single_line_task: Task,
65+
clk_source: str,
66+
active_edge: int,
67+
) -> None:
68+
sim_6535_di_single_line_task.timing.cfg_pipelined_samp_clk_timing(
69+
rate=32000.0,
70+
source=clk_source,
71+
active_edge=active_edge,
72+
sample_mode=AcquisitionType.FINITE,
73+
samps_per_chan=2000,
74+
)
75+
76+
assert sim_6535_di_single_line_task.timing.samp_clk_src == clk_source
77+
assert sim_6535_di_single_line_task.timing.samp_clk_active_edge == active_edge
78+
assert (
79+
sim_6535_di_single_line_task.timing.samp_timing_type
80+
== SampleTimingType.PIPELINED_SAMPLE_CLOCK
81+
)
82+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_mode == AcquisitionType.FINITE
83+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_per_chan == 2000
84+
85+
86+
@pytest.mark.parametrize(
87+
"clk_source, active_edge, pause_when, ready_event_active_level",
88+
[
89+
("PFI5", Edge.RISING, Level.HIGH, Polarity.ACTIVE_HIGH),
90+
("PFI5", Edge.FALLING, Level.HIGH, Polarity.ACTIVE_LOW),
91+
("RTSI7", Edge.FALLING, Level.LOW, Polarity.ACTIVE_LOW),
92+
],
93+
)
94+
def test___timing___cfg_burst_handshaking_import_clock___sets_properties(
95+
sim_6535_di_single_line_task: Task,
96+
clk_source: str,
97+
active_edge: int,
98+
pause_when: int,
99+
ready_event_active_level: int,
100+
) -> None:
101+
sim_6535_di_single_line_task.timing.cfg_burst_handshaking_timing_import_clock(
102+
sample_clk_rate=32000.0,
103+
sample_clk_src=clk_source,
104+
sample_mode=AcquisitionType.FINITE,
105+
samps_per_chan=2000,
106+
sample_clk_active_edge=active_edge,
107+
pause_when=pause_when,
108+
ready_event_active_level=ready_event_active_level,
109+
)
110+
111+
assert sim_6535_di_single_line_task.timing.samp_timing_type == SampleTimingType.BURST_HANDSHAKE
112+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_mode == AcquisitionType.FINITE
113+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_per_chan == 2000
114+
assert sim_6535_di_single_line_task.timing.samp_clk_rate == 32000
115+
assert sim_6535_di_single_line_task.timing.samp_clk_src == clk_source
116+
assert sim_6535_di_single_line_task.timing.samp_clk_active_edge == active_edge
117+
assert sim_6535_di_single_line_task.triggers.pause_trigger.dig_lvl_when == pause_when
118+
assert (
119+
sim_6535_di_single_line_task.export_signals.rdy_for_xfer_event_lvl_active_lvl
120+
== ready_event_active_level
121+
)
122+
123+
124+
@pytest.mark.parametrize(
125+
"clk_outp_term, clk_pulse_polarity, pause_when, ready_event_active_level",
126+
[
127+
("PFI0", Polarity.ACTIVE_HIGH, Level.HIGH, Polarity.ACTIVE_HIGH),
128+
("PFI1", Polarity.ACTIVE_HIGH, Level.HIGH, Polarity.ACTIVE_LOW),
129+
("PFI1", Polarity.ACTIVE_LOW, Level.LOW, Polarity.ACTIVE_LOW),
130+
],
131+
)
132+
def test___timing___cfg_burst_handshaking_export_clock___sets_properties(
133+
sim_6535_di_single_line_task: Task,
134+
clk_outp_term: str,
135+
clk_pulse_polarity: int,
136+
pause_when: int,
137+
ready_event_active_level: int,
138+
) -> None:
139+
sim_6535_di_single_line_task.timing.cfg_burst_handshaking_timing_export_clock(
140+
sample_clk_rate=32000.0,
141+
sample_clk_outp_term=clk_outp_term,
142+
sample_mode=AcquisitionType.FINITE,
143+
samps_per_chan=2000,
144+
sample_clk_pulse_polarity=clk_pulse_polarity,
145+
pause_when=pause_when,
146+
ready_event_active_level=ready_event_active_level,
147+
)
148+
149+
assert sim_6535_di_single_line_task.timing.samp_timing_type == SampleTimingType.BURST_HANDSHAKE
150+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_mode == AcquisitionType.FINITE
151+
assert sim_6535_di_single_line_task.timing.samp_quant_samp_per_chan == 2000
152+
assert sim_6535_di_single_line_task.timing.samp_clk_rate == 32000
153+
assert sim_6535_di_single_line_task.export_signals.samp_clk_pulse_polarity == clk_pulse_polarity
154+
assert sim_6535_di_single_line_task.triggers.pause_trigger.dig_lvl_when == pause_when
155+
assert (
156+
sim_6535_di_single_line_task.export_signals.rdy_for_xfer_event_lvl_active_lvl
157+
== ready_event_active_level
158+
)

0 commit comments

Comments
 (0)