"""Tests for :py:mod:`cheroot.makefile`.""" from cheroot import makefile __metaclass__ = type class MockSocket: """A mock socket.""" def __init__(self): """Initialize :py:class:`MockSocket`.""" self.messages = [] def recv_into(self, buf): """Simulate ``recv_into`` for Python 3.""" if not self.messages: return 0 msg = self.messages.pop(0) for index, byte in enumerate(msg): buf[index] = byte return len(msg) def recv(self, size): """Simulate ``recv`` for Python 2.""" try: return self.messages.pop(0) except IndexError: return '' def send(self, val): """Simulate a send.""" return len(val) def test_bytes_read(): """Reader should capture bytes read.""" sock = MockSocket() sock.messages.append(b'foo') rfile = makefile.MakeFile(sock, 'r') rfile.read() assert rfile.bytes_read == 3 def test_bytes_written(): """Writer should capture bytes written.""" sock = MockSocket() sock.messages.append(b'foo') wfile = makefile.MakeFile(sock, 'w') wfile.write(b'bar') assert wfile.bytes_written == 3