53 lines
1.2 KiB
Python
53 lines
1.2 KiB
Python
"""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
|