Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
| 3 | # Python Serial Port Extension for Win32, Linux, BSD, Jython |
| 4 | # see __init__.py |
| 5 | # |
| 6 | # (C) 2015 Chris Liechti <cliechti@gmx.net> |
| 7 | # this is distributed under a free software license, see license.txt |
| 8 | |
| 9 | """\ |
| 10 | Test RS485 related functionality. |
| 11 | """ |
| 12 | |
| 13 | import unittest |
| 14 | import serial |
| 15 | import serial.rs485 |
| 16 | |
| 17 | # on which port should the tests be performed: |
| 18 | PORT = 0 |
| 19 | |
| 20 | class Test_RS485_settings(unittest.TestCase): |
| 21 | """Test RS485 related functionality""" |
| 22 | |
| 23 | def setUp(self): |
| 24 | # create a closed serial port |
| 25 | self.s = serial.serial_for_url(PORT, do_not_open=True) |
| 26 | |
| 27 | def tearDown(self): |
| 28 | self.s.close() |
| 29 | |
| 30 | def test_enable_RS485(self): |
| 31 | # XXX open() port - but will result in fail for most HW... |
| 32 | #~ self.s.open() |
| 33 | self.failUnlessEqual(self.s._rs485_mode, None, 'RS485 is disabled by default') |
| 34 | self.failUnlessEqual(self.s.rs485_mode, None, 'RS485 is disabled by default') |
| 35 | self.s.rs485_mode = serial.rs485.RS485Settings() |
| 36 | self.failUnless(self.s._rs485_mode is not None, 'RS485 is enabled') |
| 37 | self.failUnless(self.s.rs485_mode is not None, 'RS485 is enabled') |
| 38 | self.s.rs485_mode = None |
| 39 | self.failUnlessEqual(self.s._rs485_mode, None, 'RS485 is disabled again') |
| 40 | self.failUnlessEqual(self.s.rs485_mode, None, 'RS485 is disabled again') |
| 41 | |
| 42 | |
| 43 | class Test_RS485_class(unittest.TestCase): |
| 44 | """Test RS485 class""" |
| 45 | |
| 46 | def setUp(self): |
Chris Liechti | d73344d | 2015-08-06 17:52:51 +0200 | [diff] [blame] | 47 | self.s = serial.rs485.RS485(PORT, timeout=1) |
Chris Liechti | 33f0ec5 | 2015-08-06 16:37:21 +0200 | [diff] [blame] | 48 | |
| 49 | def tearDown(self): |
| 50 | self.s.close() |
| 51 | |
| 52 | def test_RS485_class(self): |
| 53 | self.s.rs485_mode = serial.rs485.RS485Settings() |
| 54 | self.s.write(b'hello') |
| 55 | self.failUnlessEqual(self.s.read(5), b'hello') |
| 56 | |
| 57 | |
| 58 | |
| 59 | if __name__ == '__main__': |
| 60 | import sys |
| 61 | sys.stdout.write(__doc__) |
| 62 | if len(sys.argv) > 1: |
| 63 | PORT = sys.argv[1] |
| 64 | sys.stdout.write("Testing port: %r\n" % PORT) |
| 65 | sys.argv[1:] = ['-v'] |
| 66 | # When this module is executed from the command-line, it runs all its tests |
| 67 | unittest.main() |