Implement mpint2 read/write and tests. Refactor (Read|Write)Buf.

This commit is contained in:
Andris Raugulis
2016-09-14 16:33:38 +03:00
parent bfa9e6f936
commit 089d7d597c
2 changed files with 82 additions and 19 deletions

37
test/test_protocol.py Normal file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest
import re
class TestProtocol(object):
@pytest.fixture(autouse=True)
def init(self, ssh_audit):
self.rbuf = ssh_audit.ReadBuf
self.wbuf = ssh_audit.WriteBuf
def _b(self, v):
v = re.sub(r'\s', '', v)
data = [int(v[i * 2:i * 2 + 2], 16) for i in range(len(v) // 2)]
return bytes(bytearray(data))
def test_mpint2_write(self):
wbuf, _b = self.wbuf(), self._b
mpint = lambda x: wbuf.write_mpint2(x).write_flush()
assert mpint(0x0) == _b('00 00 00 00')
assert mpint(0x80) == _b('00 00 00 02 00 80')
assert mpint(0x9a378f9b2e332a7) == _b('00 00 00 08 09 a3 78 f9 b2 e3 32 a7')
assert mpint(-0x1234) == _b('00 00 00 02 ed cc')
assert mpint(-0xdeadbeef) == _b('00 00 00 05 ff 21 52 41 11')
assert mpint(-0x80) == _b('00 00 00 01 80')
def test_mpint2_read(self):
rbuf, _b = self.rbuf, self._b
mpint = lambda x: rbuf(x).read_mpint2()
assert mpint(_b('00 00 00 00')) == 0x00
assert mpint(_b('00 00 00 02 00 80')) == 0x80
assert mpint(_b('00 00 00 08 09 a3 78 f9 b2 e3 32 a7')) == 0x9a378f9b2e332a7
assert mpint(_b('00 00 00 02 ed cc')) == -0x1234
assert mpint(_b('00 00 00 05 ff 21 52 41 11')) == -0xdeadbeef
assert mpint(_b('00 00 00 01 80')) == -0x80
assert mpint(_b('00 00 00 02 ff 80')) == -0x80