def test_add(): """Test adding bytes and ChunkedBytes together for default and less than default size """ bytes_original = bytes(b"aaabbbcccdddeee") bytes_add = bytes(b"aaa") chkbt = ChunkedBytes(bytes_original, 3) chkbt2 = ChunkedBytes(bytes_original, 3) add = chkbt._bytes_item + bytes_add assert add == bytes(b"aaabbbcccdddeeeaaa") add2 = chkbt + bytes_add assert add2 == bytes(b"aaabbbcccdddeeeaaa") add3 = chkbt + chkbt2 assert add3 == bytes(b"aaabbbcccdddeeeaaaaaabbbcccdddeee") bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") bytes_add = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) add = chkbt._bytes_item + bytes_add assert add == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" ) chkbt = ChunkedBytes(bytes_original) add2 = chkbt + bytes_add assert add2 == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" ) with pytest.raises(NotImplementedError) as excinfo: add3 = chkbt + 45 assert str(excinfo.value) == ""
def test_delete(): """Test deleting in beginning, middle, and end of default and less than default sizes """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) del(chkbt[0]) assert (chkbt._bytes_item == bytes(b"bbbcccdddeee")) del (chkbt[1]) assert (chkbt._bytes_item == bytes(b"bbbdddeee")) del (chkbt[2]) assert (chkbt._bytes_item == bytes(b"bbbddd")) del (chkbt[1]) assert (chkbt._bytes_item == bytes(b"bbb")) del (chkbt[0]) assert (chkbt._bytes_item == bytes(b"")) bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) del(chkbt[1]) assert chkbt._bytes_item ==bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv")
def test_set(): """Test placing at beginning, end, and middle of bytes """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) assert chkbt[0] == bytes(b"aaa") assert chkbt[1] == bytes(b"bbb") assert chkbt[2] == bytes(b"ccc") assert chkbt[3] == bytes(b"ddd") assert chkbt[4] == bytes(b"eee") chkbt[0] = bytes(b"eee") chkbt[1] = bytes(b"ddd") chkbt[2] = bytes(b"ccc") chkbt[3] = bytes(b"bbb") chkbt[4] = bytes(b"aaa") assert chkbt[4] == bytes(b"aaa") assert chkbt[3] == bytes(b"bbb") assert chkbt[2] == bytes(b"ccc") assert chkbt[1] == bytes(b"ddd") assert chkbt[0] == bytes(b"eee") bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) chkbt[0] = bytes(b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") assert chkbt._bytes_item == bytes(b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" b"wxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) chkbt[1] = bytes(b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") assert chkbt._bytes_item == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvaaaa" b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
def test_init(): """Test initialization for chunk size and bytes """ bytes_original = bytes(b"abc") chunk_size_original = 700 chkbt = ChunkedBytes(bytes_original, chunk_size_original) assert chkbt._bytes_item == bytes_original assert chkbt._chunk_size == chunk_size_original chkbt2 = ChunkedBytes(bytes_original) assert chkbt2._bytes_item == bytes_original assert chkbt2._chunk_size == 256
def test_insert(): """Test inserting into middle, beginning, and end """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) chkbt.insert(1, b"www") assert chkbt._bytes_item == bytes(b"aaawwwbbbcccdddeee") chkbt.insert(4, b"ccc") assert chkbt._bytes_item == bytes(b"aaawwwbbbccccccdddeee") chkbt.insert(0, b"kpll") assert chkbt._bytes_item == bytes(b"kpllaaawwwbbbccccccdddeee") chkbt.insert(9, b"m") assert chkbt._bytes_item == bytes(b"kpllaaawwwbbbccccccdddeeem")
def test_get(): """test individual bytes, less than the default size, default size, and greater than default size. Assert error for tuple assignment """ bytes_original = bytes(b"abc") chkbt = ChunkedBytes(bytes_original, 1) assert chkbt[0] == bytes(b"a") assert chkbt[1] == bytes(b"b") assert chkbt[2] == bytes(b"c") bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) assert chkbt[0] == bytes(b"aaa") assert chkbt[1] == bytes(b"bbb") assert chkbt[2] == bytes(b"ccc") assert chkbt[3] == bytes(b"ddd") assert chkbt[4] == bytes(b"eee") bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) assert chkbt[0] == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuv") assert chkbt[1] == bytes(b"wxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original, 260) assert chkbt[0] == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") assert chkbt[1] == bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") with pytest.raises(ValueError) as excinfo: chkbt[0:1] assert str(excinfo.value) == "Error: Can only accept an integer value"
def test_length(): """Test for proper index length using default and less than default sizes """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) assert len(chkbt) == 5 bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) assert len(chkbt) == 2
def test_actual_send(mocker): im = PIL.Image.new('L', (4, 4)) date = datetime(2018, 2, 9, 13, 21, 30) gps = GPSRecord(date, -40, 100, -100) new_image = Image(im, gps) image_bytes = new_image.to_bytes('webp') chunk = ChunkedBytes(image_bytes, math.ceil(len(image_bytes) / 4)) sender = ImageSender() mav = MockMav() sender.send(mav, chunk) missed = [0, 1, 2, 3] class Message: def __init__(self, arr): self.missing = arr message1 = Message(missed) mocker.patch.object(MockMav, 'encapsulated_data_send') sender.data_request_handler(mav, message1) MockMav.encapsulated_data_send.assert_has_calls([ call(0, chunk[0]), call(1, chunk[1]), call(2, chunk[2]), call(3, chunk[3]) ])
def test_send(mocker): im = PIL.Image.new('L', (4, 4)) date = datetime(2018, 2, 9, 13, 21, 30) gps = GPSRecord(date, -40, 100, -100) new_image = Image(im, gps) image_bytes = new_image.to_bytes('webp') chunk = ChunkedBytes(image_bytes, math.ceil(len(image_bytes) / 4)) image_sender = ImageSender() mav = MockMav() image_sender.send(mav, chunk) assert image_sender.packets == len(chunk) assert image_sender.size == len(image_bytes) assert image_sender._image == chunk
def test_zeros(): """Test returning zero byte array for default and nondefault sizes """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) assert chkbt.zeros(2, 1) == 0x0000 assert chkbt.zeros(1, 256) == (0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x00000000000000000000000000000000000000000000) assert chkbt.zeros(2, 256) == (0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x00000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x0000000000000000000000000000000000000000000000000000 + 0x00000000000000000000000000000000000000000000 )
def test_flat(): """Test returning bytes for default and nondefault sizes """ bytes_original = bytes(b"aaabbbcccdddeee") chkbt = ChunkedBytes(bytes_original, 3) assert chkbt.flat() == bytes_original bytes_original = bytes(b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" b"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz") chkbt = ChunkedBytes(bytes_original) assert chkbt.flat() == bytes_original
class Message_ImageTrans: """Define a test data transmission handshake that we will send messages with """ def __init__(self): self.size = 253 self.payload = 253 self.packets = 2 im = PIL.Image.new('L', (4, 4)) date = datetime(2018, 2, 9, 13, 21, 30) gps = GPSRecord(date, -40, 100, -100) new_image = Image(im, gps) image_bytes = new_image.to_bytes('webp') chunk = ChunkedBytes(image_bytes, math.ceil(len(image_bytes) / 2)) class Message_Image1: """Make an image by setting chunk size to half of the image and sending the image in two pieces """ def __init__(self): self.seqnr = 0 self.data = chunk[0] class Message_Image2: def __init__(self): self.seqnr = 1 self.data = chunk[1]