| import unittest | |
| from unittest import mock | |
| import asyncio | |
| from asyncio import protocols | |
| def tearDownModule(): | |
| # not needed for the test file but added for uniformness with all other | |
| # asyncio test files for the sake of unified cleanup | |
| asyncio.set_event_loop(None) | |
| class ProtocolsAbsTests(unittest.TestCase): | |
| def test_base_protocol(self): | |
| f = mock.Mock() | |
| p = asyncio.BaseProtocol() | |
| self.assertIsNone(p.connection_made(f)) | |
| self.assertIsNone(p.connection_lost(f)) | |
| self.assertIsNone(p.pause_writing()) | |
| self.assertIsNone(p.resume_writing()) | |
| self.assertNotHasAttr(p, '__dict__') | |
| def test_protocol(self): | |
| f = mock.Mock() | |
| p = asyncio.Protocol() | |
| self.assertIsNone(p.connection_made(f)) | |
| self.assertIsNone(p.connection_lost(f)) | |
| self.assertIsNone(p.data_received(f)) | |
| self.assertIsNone(p.eof_received()) | |
| self.assertIsNone(p.pause_writing()) | |
| self.assertIsNone(p.resume_writing()) | |
| self.assertNotHasAttr(p, '__dict__') | |
| def test_buffered_protocol(self): | |
| f = mock.Mock() | |
| p = asyncio.BufferedProtocol() | |
| self.assertIsNone(p.connection_made(f)) | |
| self.assertIsNone(p.connection_lost(f)) | |
| self.assertIsNone(p.get_buffer(100)) | |
| self.assertIsNone(p.buffer_updated(150)) | |
| self.assertIsNone(p.pause_writing()) | |
| self.assertIsNone(p.resume_writing()) | |
| self.assertNotHasAttr(p, '__dict__') | |
| def test_datagram_protocol(self): | |
| f = mock.Mock() | |
| dp = asyncio.DatagramProtocol() | |
| self.assertIsNone(dp.connection_made(f)) | |
| self.assertIsNone(dp.connection_lost(f)) | |
| self.assertIsNone(dp.error_received(f)) | |
| self.assertIsNone(dp.datagram_received(f, f)) | |
| self.assertNotHasAttr(dp, '__dict__') | |
| def test_subprocess_protocol(self): | |
| f = mock.Mock() | |
| sp = asyncio.SubprocessProtocol() | |
| self.assertIsNone(sp.connection_made(f)) | |
| self.assertIsNone(sp.connection_lost(f)) | |
| self.assertIsNone(sp.pipe_data_received(1, f)) | |
| self.assertIsNone(sp.pipe_connection_lost(1, f)) | |
| self.assertIsNone(sp.process_exited()) | |
| self.assertNotHasAttr(sp, '__dict__') | |
| class FeedDataToBufferedProtoTests(unittest.TestCase): | |
| def _make_proto(self, bufsize): | |
| received = bytearray() | |
| buf = bytearray(bufsize) | |
| class P(asyncio.BufferedProtocol): | |
| def get_buffer(self, sizehint): | |
| return buf | |
| def buffer_updated(self, nbytes): | |
| received.extend(buf[:nbytes]) | |
| return P(), received | |
| def test_large_multi_iteration(self): | |
| proto, received = self._make_proto(64) | |
| data = bytes(range(256)) * 16 | |
| protocols._feed_data_to_buffered_proto(proto, data) | |
| self.assertEqual(bytes(received), data) | |
| def test_memoryview_input(self): | |
| proto, received = self._make_proto(64) | |
| payload = b"y" * 200 | |
| protocols._feed_data_to_buffered_proto(proto, memoryview(payload)) | |
| self.assertEqual(bytes(received), payload) | |
| if __name__ == "__main__": | |
| unittest.main() |