mirror of
https://github.com/botlabsDev/npkpy.git
synced 2025-12-10 06:54:37 +01:00
116 lines
4.3 KiB
Python
116 lines
4.3 KiB
Python
import struct
|
|
import unittest
|
|
|
|
from npkpy.common import NPKError
|
|
from npkpy.npk.cnt_basic import CntBasic
|
|
from tests.constants import get_dummy_basic_cnt
|
|
|
|
|
|
class Test_CntBasic(unittest.TestCase):
|
|
|
|
def setUp(self) -> None:
|
|
self.cnt = CntBasic(data=get_dummy_basic_cnt(), offset_in_pck=0)
|
|
|
|
def test_extractCntId(self):
|
|
self.assertEqual(-1, self.cnt.cnt_id)
|
|
|
|
def test_failForWrongCntId(self):
|
|
cnt = CntBasic(get_dummy_basic_cnt(cnt_id=999), offset_in_pck=0)
|
|
with self.assertRaises(NPKError) as _exception:
|
|
_ = cnt.cnt_id
|
|
self.assertEqual("Cnt object does not represent given container typ -1/999", _exception.exception.args[0])
|
|
|
|
def test_getNameOfContainerType(self):
|
|
self.assertEqual("CntBasic", self.cnt.cnt_id_name)
|
|
|
|
def test_extractPayloadLen(self):
|
|
self.assertEqual(7, self.cnt.cnt_payload_len)
|
|
|
|
def test_extractPayload(self):
|
|
self.assertEqual(b"Payload", self.cnt.cnt_payload)
|
|
|
|
def test_extractCntFromGivenOffset(self):
|
|
self.assertEqual(len(get_dummy_basic_cnt()), self.cnt.cnt_full_length)
|
|
|
|
def test_giveOverviewOfCnt(self):
|
|
expected_result = ('CntBasic', ['Cnt id: -1',
|
|
'Cnt offset: 0',
|
|
'Cnt len: 13',
|
|
'Payload len: 7',
|
|
"Payload[0:7]: b'Payload' [...] "])
|
|
self.assertEqual(expected_result, self.cnt.output_cnt)
|
|
|
|
def test_getFullBinaryOfContainer(self):
|
|
self.assertEqual(get_dummy_basic_cnt(), self.cnt.cnt_full_binary)
|
|
|
|
|
|
class Test_modifyNpkContainerBasic(unittest.TestCase):
|
|
def setUp(self) -> None:
|
|
self.cnt = CntBasic(get_dummy_basic_cnt(), offset_in_pck=0)
|
|
|
|
def test_increaseCntSize(self):
|
|
orig_cnt_full_length = self.cnt.cnt_full_length
|
|
orig_payload_len = self.cnt.cnt_payload_len
|
|
|
|
self.cnt.cnt_payload_len += 3
|
|
|
|
self.assertEqual(7, orig_payload_len)
|
|
self.assertEqual(10, self.cnt.cnt_payload_len)
|
|
self.assertEqual(13, orig_cnt_full_length)
|
|
self.assertEqual(16, self.cnt.cnt_full_length)
|
|
|
|
def test_decreaseCntSize(self):
|
|
orig_cnt_full_length = self.cnt.cnt_full_length
|
|
orig_payload_len = self.cnt.cnt_payload_len
|
|
|
|
self.cnt.cnt_payload_len -= 4
|
|
|
|
self.assertEqual(7, orig_payload_len)
|
|
self.assertEqual(13, orig_cnt_full_length)
|
|
self.assertEqual(3, self.cnt.cnt_payload_len)
|
|
self.assertEqual(9, self.cnt.cnt_full_length)
|
|
|
|
def test_failAccessPayloadAfterIncreasingPayloadLenField(self):
|
|
orig_payload_len = self.cnt.cnt_payload_len
|
|
self.cnt.cnt_payload_len += 3
|
|
|
|
self.assertEqual(orig_payload_len + 3, self.cnt.cnt_payload_len)
|
|
with self.assertRaises(struct.error):
|
|
_ = self.cnt.cnt_payload
|
|
|
|
def test_decreasingPayloadLen_fieldDecreaseFullCntLenAndPayload(self):
|
|
orig_cnt_full_length = self.cnt.cnt_full_length
|
|
orig_payload_len = self.cnt.cnt_payload_len
|
|
|
|
self.cnt.cnt_payload_len -= 4
|
|
|
|
self.assertEqual(orig_payload_len - 4, self.cnt.cnt_payload_len)
|
|
self.assertEqual(orig_cnt_full_length - 4, self.cnt.cnt_full_length)
|
|
self.assertEqual(b"Pay", self.cnt.cnt_payload)
|
|
|
|
def test_failDecreasingPayloadLen_fieldBelowZero(self):
|
|
with self.assertRaises(struct.error) as _exception:
|
|
self.cnt.cnt_payload_len -= 8
|
|
self.assertEqual("argument out of range", _exception.exception.args[0])
|
|
|
|
def test_increasePayload_updatePayloadLen(self):
|
|
replace_payload = b"NewTestPayload"
|
|
|
|
self.cnt.cnt_payload = replace_payload
|
|
|
|
self.assertEqual(replace_payload, self.cnt.cnt_payload)
|
|
self.assertEqual(len(replace_payload), self.cnt.cnt_payload_len)
|
|
|
|
def test_decreasePayload_updatePayloadLen(self):
|
|
replace_payload = b"New"
|
|
|
|
self.cnt.cnt_payload = replace_payload
|
|
self.assertEqual(replace_payload, self.cnt.cnt_payload)
|
|
self.assertEqual(len(replace_payload), self.cnt.cnt_payload_len)
|
|
|
|
def test_nullPayloadUpdate_payloadLenToZero(self):
|
|
replace_payload = b""
|
|
|
|
self.cnt.cnt_payload = replace_payload
|
|
self.assertEqual(replace_payload, self.cnt.cnt_payload)
|
|
self.assertEqual(len(replace_payload), self.cnt.cnt_payload_len)
|