def test_read_empty(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = '\x00' * buf_size

        actual = buf.read()

        self.assertEqual(expected, actual)
    def test_write_read_with_size(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        actual = buf.read(size=5)

        self.assertEqual(expected[:5], actual)
    def test_get_pointer_with_negative_size(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        size = -1

        self.assertRaises(exceptions.BufferInvalidSize, buf.get_pointer,
                          size=size)
    def test_get_pointer_with_negative_offset(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        offset = -1

        self.assertRaises(exceptions.BufferInvalidOffset, buf.get_pointer,
                          offset=offset)
    def test_write_read(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        actual = buf.read()

        # Without size read returns all contents, so expect nulls after data
        expected += '\x00' * (buf_size - len(expected))
        self.assertEqual(expected, actual[:len(expected)])
    def test_write_read_with_offset(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        offset = 6
        actual = buf.read(offset=offset)

        expected = expected[6:]
        expected += '\x00' * (buf_size - len(expected) - offset)
        self.assertEqual(expected, actual)
    def test_get_pointer_with_size(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        size = 5
        ptr = buf.get_pointer(size=size)

        actual = ptr.contents.raw

        self.assertEqual(expected[:5], actual[:len(expected)])
    def test_write_read_with_size_and_offset(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        offset = 6
        size = 5
        actual = buf.read(size=size, offset=offset)

        expected = expected[offset:offset + size]
        self.assertEqual(expected, actual)
    def test_get_pointer(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        ptr = buf.get_pointer()

        actual = ptr.contents.raw

        # Without size read returns all contents, so expect nulls after data
        expected += '\x00' * (buf_size - len(expected))
        self.assertEqual(expected, actual[:len(expected)])
    def test_get_pointer_with_offset(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        offset = 6
        ptr = buf.get_pointer(offset=offset)

        actual = ptr.contents.raw

        expected = expected[6:]
        expected += '\x00' * (buf_size - len(expected) - offset)
        self.assertEqual(expected, actual)
    def test_get_pointer_with_size_and_offset(self):
        buf_size = 20

        buf = AlignedBuffer(buf_size)

        expected = "Hello world!"
        buf.write(expected)

        offset = 6
        size = 5
        ptr = buf.get_pointer(size=size, offset=offset)

        actual = ptr.contents.raw

        expected = expected[offset:offset + size]
        self.assertEqual(expected, actual)