Add tests for jebp_utils
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
from src.jeb_utils.jebp_utils import readmsg, _MSG_START_BYTE, MessageFormatError
|
||||
import pytest
|
||||
|
||||
class AsyncTestStreamReader:
|
||||
def __init__(self, content: bytes) -> None:
|
||||
self.content = content
|
||||
|
||||
async def readexactly(self, n: int) -> bytes:
|
||||
if len(self.content) < n:
|
||||
raise EOFError
|
||||
result = self.content[:n]
|
||||
self.content = self.content[n:]
|
||||
return result
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize('expected,reader,start_byte', [
|
||||
(b'', AsyncTestStreamReader(b'\x01\x01\x00'), b'\x01'),
|
||||
(b'', AsyncTestStreamReader(b'\x02\x01\x00'), b'\x02'),
|
||||
(b'a', AsyncTestStreamReader(b'\x02\x01\x01a'), b'\x02'),
|
||||
(b'', AsyncTestStreamReader(b'\x01\x00'), b'\x01'),
|
||||
(b'a' * 255, AsyncTestStreamReader(b'\x01\x01\xff' + b'a' * 255), b'\x01'),
|
||||
(b'a' * 256, AsyncTestStreamReader(b'\x01\x02\x01\x00' + b'a' * 256), b'\x01'),
|
||||
(b'a' * 256, AsyncTestStreamReader(b'\x01\x02\x01\x00' + b'a' * 257), b'\x01'),
|
||||
(b'a' * 257, AsyncTestStreamReader(b'\x01\x02\x01\x01' + b'a' * 257), b'\x01'),
|
||||
])
|
||||
async def test_readmsg(expected, reader, start_byte):
|
||||
assert await readmsg(reader, start_byte = start_byte) == expected
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize('expected_exception,reader,start_byte', [
|
||||
(EOFError, AsyncTestStreamReader(b'\x01\x01\x01'), b'\x01'),
|
||||
(EOFError, AsyncTestStreamReader(b'\x01\x02\x01a'), b'\x01'),
|
||||
(EOFError, AsyncTestStreamReader(b'\x01'), b'\x01'),
|
||||
(EOFError, AsyncTestStreamReader(b'\x01\x01'), b'\x01'),
|
||||
(EOFError, AsyncTestStreamReader(b'\x01\x02\x00'), b'\x01'),
|
||||
(MessageFormatError, AsyncTestStreamReader(b'\x01\x02\x01a'), b'\x02'),
|
||||
(MessageFormatError, AsyncTestStreamReader(b'\x01\x01\x01'), b'\x02'),
|
||||
(MessageFormatError, AsyncTestStreamReader(b'\x01'), b'\x02'),
|
||||
])
|
||||
async def test_readmsg_exceptions(expected_exception, reader, start_byte):
|
||||
with pytest.raises(expected_exception):
|
||||
await readmsg(reader, start_byte = start_byte)
|
||||
Reference in New Issue
Block a user