diff options
author | Steve Dower <steve.dower@microsoft.com> | 2016-08-30 21:22:36 -0700 |
---|---|---|
committer | Steve Dower <steve.dower@microsoft.com> | 2016-08-30 21:22:36 -0700 |
commit | 3929499914d47365ae744df312e16da8955c90ac (patch) | |
tree | 05b723ba49e1767624ffbe932708bccb681dd702 /Lib/test/test_winconsoleio.py | |
parent | b957b0c2bc467fbf16fbe5ceaf5a289bc62a5442 (diff) | |
download | cpython-git-3929499914d47365ae744df312e16da8955c90ac.tar.gz |
Issue #1602: Windows console doesn't input or print Unicode (PEP 528)
Closes #17602: Adds a readline implementation for the Windows console
Diffstat (limited to 'Lib/test/test_winconsoleio.py')
-rw-r--r-- | Lib/test/test_winconsoleio.py | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Lib/test/test_winconsoleio.py b/Lib/test/test_winconsoleio.py new file mode 100644 index 0000000000..9e932fef1f --- /dev/null +++ b/Lib/test/test_winconsoleio.py @@ -0,0 +1,72 @@ +'''Tests for WindowsConsoleIO + +Unfortunately, most testing requires interactive use, since we have no +API to read back from a real console, and this class is only for use +with real consoles. + +Instead, we validate that basic functionality such as opening, closing +and in particular fileno() work, but are forced to leave real testing +to real people with real keyborads. +''' + +import io +import unittest +import sys + +if sys.platform != 'win32': + raise unittest.SkipTest("test only relevant on win32") + +ConIO = io._WindowsConsoleIO + +class WindowsConsoleIOTests(unittest.TestCase): + def test_abc(self): + self.assertTrue(issubclass(ConIO, io.RawIOBase)) + self.assertFalse(issubclass(ConIO, io.BufferedIOBase)) + self.assertFalse(issubclass(ConIO, io.TextIOBase)) + + def test_open_fd(self): + f = ConIO(0) + self.assertTrue(f.readable()) + self.assertFalse(f.writable()) + self.assertEqual(0, f.fileno()) + f.close() # multiple close should not crash + f.close() + + f = ConIO(1, 'w') + self.assertFalse(f.readable()) + self.assertTrue(f.writable()) + self.assertEqual(1, f.fileno()) + f.close() + f.close() + + f = ConIO(2, 'w') + self.assertFalse(f.readable()) + self.assertTrue(f.writable()) + self.assertEqual(2, f.fileno()) + f.close() + f.close() + + def test_open_name(self): + f = ConIO("CON") + self.assertTrue(f.readable()) + self.assertFalse(f.writable()) + self.assertIsNotNone(f.fileno()) + f.close() # multiple close should not crash + f.close() + + f = ConIO('CONIN$') + self.assertTrue(f.readable()) + self.assertFalse(f.writable()) + self.assertIsNotNone(f.fileno()) + f.close() + f.close() + + f = ConIO('CONOUT$', 'w') + self.assertFalse(f.readable()) + self.assertTrue(f.writable()) + self.assertIsNotNone(f.fileno()) + f.close() + f.close() + +if __name__ == "__main__": + unittest.main() |