|
1 | 1 | import unittest
|
| 2 | +import time |
2 | 3 |
|
3 | 4 | import can
|
4 | 5 |
|
@@ -30,22 +31,43 @@ def tearDown(self):
|
30 | 31 | self.bus1.shutdown()
|
31 | 32 | self.bus2.shutdown()
|
32 | 33 |
|
| 34 | + def _check_received_message(self, recv_msg, sent_msg): |
| 35 | + self.assertIsNotNone(recv_msg, |
| 36 | + "No message was received on %s" % INTERFACE_2) |
| 37 | + self.assertEqual(recv_msg.arbitration_id, sent_msg.arbitration_id) |
| 38 | + self.assertEqual(recv_msg.id_type, sent_msg.id_type) |
| 39 | + self.assertEqual(recv_msg.is_remote_frame, sent_msg.is_remote_frame) |
| 40 | + self.assertEqual(recv_msg.is_error_frame, sent_msg.is_error_frame) |
| 41 | + self.assertEqual(recv_msg.dlc, sent_msg.dlc) |
| 42 | + if not sent_msg.is_remote_frame: |
| 43 | + self.assertSequenceEqual(recv_msg.data, sent_msg.data) |
| 44 | + |
33 | 45 | def _send_and_receive(self, msg):
|
34 | 46 | # Send with bus 1, receive with bus 2
|
35 | 47 | self.bus1.send(msg)
|
36 | 48 | recv_msg = self.bus2.recv(TIMEOUT)
|
37 |
| - self.assertIsNotNone(recv_msg, |
38 |
| - "No message was received on %s" % INTERFACE_2) |
39 |
| - self.assertEqual(recv_msg, msg) |
| 49 | + self._check_received_message(recv_msg, msg) |
| 50 | + # Some buses may receive their own messages. Remove it from the queue |
| 51 | + self.bus1.recv(0) |
40 | 52 |
|
41 | 53 | # Send with bus 2, receive with bus 1
|
42 | 54 | # Add 1 to arbitration ID to make it a different message
|
43 | 55 | msg.arbitration_id += 1
|
44 | 56 | self.bus2.send(msg)
|
45 | 57 | recv_msg = self.bus1.recv(TIMEOUT)
|
46 |
| - self.assertIsNotNone(recv_msg, |
47 |
| - "No message was received on %s" % INTERFACE_1) |
48 |
| - self.assertEqual(recv_msg, msg) |
| 58 | + self._check_received_message(recv_msg, msg) |
| 59 | + |
| 60 | + def test_no_message(self): |
| 61 | + self.assertIsNone(self.bus1.recv(0.1)) |
| 62 | + |
| 63 | + def test_timestamp(self): |
| 64 | + self.bus2.send(can.Message()) |
| 65 | + recv_msg1 = self.bus1.recv(TIMEOUT) |
| 66 | + time.sleep(1) |
| 67 | + self.bus2.send(can.Message()) |
| 68 | + recv_msg2 = self.bus1.recv(TIMEOUT) |
| 69 | + delta_time = recv_msg2.timestamp - recv_msg1.timestamp |
| 70 | + self.assertTrue(0.95 < delta_time < 1.05) |
49 | 71 |
|
50 | 72 | def test_standard_message(self):
|
51 | 73 | msg = can.Message(extended_id=False,
|
|
0 commit comments