Skip to content

Commit 460d74b

Browse files
committed
adding tests for slcan FD support
1 parent 0246b70 commit 460d74b

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed

test/test_slcan.py

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,102 @@ def test_send_extended_remote(self):
178178
rx_msg = self.bus.recv(TIMEOUT)
179179
self.assertTrue(msg.equals(rx_msg, timestamp_delta=None))
180180

181+
def test_recv_fd(self):
182+
self.serial.set_input_buffer(b"d123A303132333435363738393a3b3c3d3e3f\r")
183+
msg = self.bus.recv(TIMEOUT)
184+
self.assertIsNotNone(msg)
185+
self.assertEqual(msg.arbitration_id, 0x123)
186+
self.assertEqual(msg.is_extended_id, False)
187+
self.assertEqual(msg.is_remote_frame, False)
188+
self.assertEqual(msg.is_fd, True)
189+
self.assertEqual(msg.bitrate_switch, False)
190+
self.assertEqual(msg.dlc, 16)
191+
self.assertSequenceEqual(msg.data, [0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F])
192+
193+
def test_send_fd(self):
194+
payload = b"d123A303132333435363738393A3B3C3D3E3F\r"
195+
msg = can.Message(
196+
arbitration_id=0x123, is_extended_id=False, is_fd=True, data=[0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F]
197+
)
198+
self.bus.send(msg)
199+
self.assertEqual(payload, self.serial.get_output_buffer())
200+
201+
self.serial.set_input_buffer(payload)
202+
rx_msg = self.bus.recv(TIMEOUT)
203+
self.assertTrue(msg.equals(rx_msg, timestamp_delta=None))
204+
205+
def test_recv_fd_extended(self):
206+
self.serial.set_input_buffer(b"D12ABCDEFA303132333435363738393A3B3C3D3E3F\r")
207+
msg = self.bus.recv(TIMEOUT)
208+
self.assertIsNotNone(msg)
209+
self.assertEqual(msg.arbitration_id, 0x12ABCDEF)
210+
self.assertEqual(msg.is_extended_id, True)
211+
self.assertEqual(msg.is_remote_frame, False)
212+
self.assertEqual(msg.dlc, 16)
213+
self.assertEqual(msg.bitrate_switch, False)
214+
self.assertTrue(msg.is_fd)
215+
self.assertSequenceEqual(msg.data, [0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F])
216+
217+
def test_send_fd_extended(self):
218+
payload = b"D12ABCDEFA303132333435363738393A3B3C3D3E3F\r"
219+
msg = can.Message(
220+
arbitration_id=0x12ABCDEF, is_extended_id=True, is_fd=True, data=[0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F]
221+
)
222+
self.bus.send(msg)
223+
self.assertEqual(payload, self.serial.get_output_buffer())
224+
225+
self.serial.set_input_buffer(payload)
226+
rx_msg = self.bus.recv(TIMEOUT)
227+
self.assertTrue(msg.equals(rx_msg, timestamp_delta=None))
228+
229+
def test_recv_fd_brs(self):
230+
self.serial.set_input_buffer(b"b123A303132333435363738393a3b3c3d3e3f\r")
231+
msg = self.bus.recv(TIMEOUT)
232+
self.assertIsNotNone(msg)
233+
self.assertEqual(msg.arbitration_id, 0x123)
234+
self.assertEqual(msg.is_extended_id, False)
235+
self.assertEqual(msg.is_remote_frame, False)
236+
self.assertEqual(msg.is_fd, True)
237+
self.assertEqual(msg.bitrate_switch, True)
238+
self.assertEqual(msg.dlc, 16)
239+
self.assertSequenceEqual(msg.data, [0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F])
240+
241+
def test_send_fd_brs(self):
242+
payload = b"b123A303132333435363738393A3B3C3D3E3F\r"
243+
msg = can.Message(
244+
arbitration_id=0x123, is_extended_id=False, is_fd=True, bitrate_switch=True, data=[0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F]
245+
)
246+
self.bus.send(msg)
247+
self.assertEqual(payload, self.serial.get_output_buffer())
248+
249+
self.serial.set_input_buffer(payload)
250+
rx_msg = self.bus.recv(TIMEOUT)
251+
self.assertTrue(msg.equals(rx_msg, timestamp_delta=None))
252+
253+
def test_recv_fd_brs_extended(self):
254+
self.serial.set_input_buffer(b"B12ABCDEFA303132333435363738393A3B3C3D3E3F\r")
255+
msg = self.bus.recv(TIMEOUT)
256+
self.assertIsNotNone(msg)
257+
self.assertEqual(msg.arbitration_id, 0x12ABCDEF)
258+
self.assertEqual(msg.is_extended_id, True)
259+
self.assertEqual(msg.is_remote_frame, False)
260+
self.assertEqual(msg.dlc, 16)
261+
self.assertEqual(msg.bitrate_switch, True)
262+
self.assertTrue(msg.is_fd)
263+
self.assertSequenceEqual(msg.data, [0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F])
264+
265+
def test_send_fd_brs_extended(self):
266+
payload = b"B12ABCDEFA303132333435363738393A3B3C3D3E3F\r"
267+
msg = can.Message(
268+
arbitration_id=0x12ABCDEF, is_extended_id=True, is_fd=True, bitrate_switch=True, data=[0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F]
269+
)
270+
self.bus.send(msg)
271+
self.assertEqual(payload, self.serial.get_output_buffer())
272+
273+
self.serial.set_input_buffer(payload)
274+
rx_msg = self.bus.recv(TIMEOUT)
275+
self.assertTrue(msg.equals(rx_msg, timestamp_delta=None))
276+
181277
def test_partial_recv(self):
182278
self.serial.set_input_buffer(b"T12ABCDEF")
183279
msg = self.bus.recv(TIMEOUT)

0 commit comments

Comments
 (0)