Skip to content

Commit dbbfa93

Browse files
committed
add tests
1 parent af2f158 commit dbbfa93

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

test/test_bit_timing.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#!/usr/bin/env python
2+
import pytest
23

34
import can
45

@@ -202,3 +203,90 @@ def test_string_representation():
202203
"DBR: 2000000 bit/s, DSP: 75.00%, DBRP: 1, DTSEG1: 29, DTSEG2: 10, DSJW: 10, "
203204
"f_clock: 80MHz"
204205
)
206+
207+
208+
def test_repr():
209+
timing = can.BitTiming(f_clock=8000000, bitrate=1000000, tseg1=5, tseg2=2, sjw=1)
210+
assert repr(timing) == (
211+
"can.BitTiming(f_clock=8000000, bitrate=1000000, tseg1=5, tseg2=2, sjw=1, nof_samples=1)"
212+
)
213+
214+
fd_timing = can.BitTimingFd(
215+
f_clock=80_000_000,
216+
nom_bitrate=500_000,
217+
nom_tseg1=119,
218+
nom_tseg2=40,
219+
nom_sjw=40,
220+
data_bitrate=2_000_000,
221+
data_tseg1=29,
222+
data_tseg2=10,
223+
data_sjw=10,
224+
)
225+
assert repr(fd_timing) == (
226+
"can.BitTimingFd(f_clock=80000000, nom_bitrate=500000, nom_tseg1=119, nom_tseg2=40, "
227+
"nom_sjw=40, data_bitrate=2000000, data_tseg1=29, data_tseg2=10, data_sjw=10)"
228+
)
229+
230+
231+
def test_mapping():
232+
timing = can.BitTiming(
233+
f_clock=8_000_000, bitrate=1_000_000, tseg1=5, tseg2=2, sjw=1
234+
)
235+
timing_dict = dict(timing)
236+
assert timing_dict["f_clock"] == timing["f_clock"]
237+
assert timing_dict["bitrate"] == timing["bitrate"]
238+
assert timing_dict["tseg1"] == timing["tseg1"]
239+
assert timing_dict["tseg2"] == timing["tseg2"]
240+
assert timing_dict["sjw"] == timing["sjw"]
241+
assert timing == can.BitTiming(**timing_dict)
242+
243+
fd_timing = can.BitTimingFd(
244+
f_clock=80_000_000,
245+
nom_bitrate=500_000,
246+
nom_tseg1=119,
247+
nom_tseg2=40,
248+
nom_sjw=40,
249+
data_bitrate=2_000_000,
250+
data_tseg1=29,
251+
data_tseg2=10,
252+
data_sjw=10,
253+
)
254+
fd_timing_dict = dict(fd_timing)
255+
assert fd_timing_dict["f_clock"] == fd_timing["f_clock"]
256+
assert fd_timing_dict["nom_bitrate"] == fd_timing["nom_bitrate"]
257+
assert fd_timing_dict["nom_tseg1"] == fd_timing["nom_tseg1"]
258+
assert fd_timing_dict["nom_tseg2"] == fd_timing["nom_tseg2"]
259+
assert fd_timing_dict["nom_sjw"] == fd_timing["nom_sjw"]
260+
assert fd_timing_dict["data_bitrate"] == fd_timing["data_bitrate"]
261+
assert fd_timing_dict["data_tseg1"] == fd_timing["data_tseg1"]
262+
assert fd_timing_dict["data_tseg2"] == fd_timing["data_tseg2"]
263+
assert fd_timing_dict["data_sjw"] == fd_timing["data_sjw"]
264+
assert fd_timing == can.BitTimingFd(**fd_timing_dict)
265+
266+
267+
def test_oscillator_tolerance():
268+
timing = can.BitTiming(
269+
f_clock=16_000_000, bitrate=500_000, tseg1=10, tseg2=5, sjw=4
270+
)
271+
osc_tol = timing.oscillator_tolerance(
272+
node_loop_delay_ns=250,
273+
bus_length_m=10.0,
274+
)
275+
assert osc_tol == pytest.approx(1.23, abs=1e-2)
276+
277+
fd_timing = can.BitTimingFd(
278+
f_clock=80_000_000,
279+
nom_bitrate=500_000,
280+
nom_tseg1=27,
281+
nom_tseg2=4,
282+
nom_sjw=4,
283+
data_bitrate=2_000_000,
284+
data_tseg1=6,
285+
data_tseg2=1,
286+
data_sjw=1,
287+
)
288+
osc_tol = fd_timing.oscillator_tolerance(
289+
node_loop_delay_ns=250,
290+
bus_length_m=10.0,
291+
)
292+
assert osc_tol == pytest.approx(0.48543689320388345, abs=1e-2)

0 commit comments

Comments
 (0)