mirror of
https://github.com/python/cpython.git
synced 2025-10-20 00:13:47 +00:00
73 lines
2 KiB
Python
73 lines
2 KiB
Python
![]() |
'''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()
|