Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 2 | # |
Chris Liechti | 7c032f1 | 2015-10-27 23:02:00 +0100 | [diff] [blame] | 3 | # This file is part of pySerial - Cross platform serial port support for Python |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 4 | # (C) 2015 Chris Liechti <cliechti@gmx.net> |
Chris Liechti | 7c032f1 | 2015-10-27 23:02:00 +0100 | [diff] [blame] | 5 | # |
| 6 | # SPDX-License-Identifier: BSD-3-Clause |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 7 | """\ |
| 8 | Test RS485 related functionality. |
| 9 | """ |
| 10 | |
| 11 | import unittest |
| 12 | import serial |
| 13 | import serial.rs485 |
| 14 | |
| 15 | # on which port should the tests be performed: |
Chris Liechti | 7549149 | 2016-10-03 23:09:59 +0200 | [diff] [blame^] | 16 | PORT = 'loop://' |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 17 | |
Chris Liechti | 8e37ba9 | 2016-02-03 01:22:22 +0100 | [diff] [blame] | 18 | |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 19 | class Test_RS485_settings(unittest.TestCase): |
| 20 | """Test RS485 related functionality""" |
| 21 | |
| 22 | def setUp(self): |
| 23 | # create a closed serial port |
| 24 | self.s = serial.serial_for_url(PORT, do_not_open=True) |
| 25 | |
| 26 | def tearDown(self): |
| 27 | self.s.close() |
| 28 | |
| 29 | def test_enable_RS485(self): |
| 30 | # XXX open() port - but will result in fail for most HW... |
| 31 | #~ self.s.open() |
Chris Liechti | dedd3b7 | 2015-12-11 20:44:22 +0100 | [diff] [blame] | 32 | self.assertEqual(self.s._rs485_mode, None, 'RS485 is disabled by default') |
| 33 | self.assertEqual(self.s.rs485_mode, None, 'RS485 is disabled by default') |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 34 | self.s.rs485_mode = serial.rs485.RS485Settings() |
Chris Liechti | dedd3b7 | 2015-12-11 20:44:22 +0100 | [diff] [blame] | 35 | self.assertTrue(self.s._rs485_mode is not None, 'RS485 is enabled') |
| 36 | self.assertTrue(self.s.rs485_mode is not None, 'RS485 is enabled') |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 37 | self.s.rs485_mode = None |
Chris Liechti | dedd3b7 | 2015-12-11 20:44:22 +0100 | [diff] [blame] | 38 | self.assertEqual(self.s._rs485_mode, None, 'RS485 is disabled again') |
| 39 | self.assertEqual(self.s.rs485_mode, None, 'RS485 is disabled again') |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 40 | |
| 41 | |
| 42 | class Test_RS485_class(unittest.TestCase): |
| 43 | """Test RS485 class""" |
| 44 | |
| 45 | def setUp(self): |
Chris Liechti | 7549149 | 2016-10-03 23:09:59 +0200 | [diff] [blame^] | 46 | if not isinstance(serial.serial_for_url(PORT), serial.Serial): |
| 47 | raise unittest.SkipTest("RS485 test only compatible with real serial port") |
Chris Liechti | d73344d | 2015-08-06 17:52:51 +0200 | [diff] [blame] | 48 | self.s = serial.rs485.RS485(PORT, timeout=1) |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 49 | |
| 50 | def tearDown(self): |
| 51 | self.s.close() |
| 52 | |
| 53 | def test_RS485_class(self): |
| 54 | self.s.rs485_mode = serial.rs485.RS485Settings() |
| 55 | self.s.write(b'hello') |
Chris Liechti | dedd3b7 | 2015-12-11 20:44:22 +0100 | [diff] [blame] | 56 | self.assertEqual(self.s.read(5), b'hello') |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 57 | |
| 58 | |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 59 | if __name__ == '__main__': |
| 60 | import sys |
| 61 | sys.stdout.write(__doc__) |
| 62 | if len(sys.argv) > 1: |
| 63 | PORT = sys.argv[1] |
Chris Liechti | 3debab2 | 2016-06-20 22:52:22 +0200 | [diff] [blame] | 64 | sys.stdout.write("Testing port: {!r}\n".format(PORT)) |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 65 | sys.argv[1:] = ['-v'] |
| 66 | # When this module is executed from the command-line, it runs all its tests |
| 67 | unittest.main() |