Example #1
0
    def test_split(self):
        mem = MockMemory(self.unit * 4)
        chunk = memory._Chunk(mem, 0, mem.size, self.stream_ptr)
        tail = chunk.split(self.unit * 2)
        self.assertEqual(chunk.ptr(), mem.ptr)
        self.assertEqual(chunk.offset, 0)
        self.assertEqual(chunk.size, self.unit * 2)
        self.assertEqual(chunk.prev, None)
        self.assertEqual(chunk.next.ptr(), tail.ptr())
        self.assertEqual(chunk.stream_ptr, self.stream_ptr)
        self.assertEqual(tail.ptr(), mem.ptr + self.unit * 2)
        self.assertEqual(tail.offset, self.unit * 2)
        self.assertEqual(tail.size, self.unit * 2)
        self.assertEqual(tail.prev.ptr(), chunk.ptr())
        self.assertEqual(tail.next, None)
        self.assertEqual(tail.stream_ptr, self.stream_ptr)

        tail_of_head = chunk.split(self.unit)
        self.assertEqual(chunk.ptr(), mem.ptr)
        self.assertEqual(chunk.offset, 0)
        self.assertEqual(chunk.size, self.unit)
        self.assertEqual(chunk.prev, None)
        self.assertEqual(chunk.next.ptr(), tail_of_head.ptr())
        self.assertEqual(chunk.stream_ptr, self.stream_ptr)
        self.assertEqual(tail_of_head.ptr(), mem.ptr + self.unit)
        self.assertEqual(tail_of_head.offset, self.unit)
        self.assertEqual(tail_of_head.size, self.unit)
        self.assertEqual(tail_of_head.prev.ptr(), chunk.ptr())
        self.assertEqual(tail_of_head.next.ptr(), tail.ptr())
        self.assertEqual(tail_of_head.stream_ptr, self.stream_ptr)

        tail_of_tail = tail.split(self.unit)
        self.assertEqual(tail.ptr(), chunk.ptr() + self.unit * 2)
        self.assertEqual(tail.offset, self.unit * 2)
        self.assertEqual(tail.size, self.unit)
        self.assertEqual(tail.prev.ptr(), tail_of_head.ptr())
        self.assertEqual(tail.next.ptr(), tail_of_tail.ptr())
        self.assertEqual(tail.stream_ptr, self.stream_ptr)
        self.assertEqual(tail_of_tail.ptr(), mem.ptr + self.unit * 3)
        self.assertEqual(tail_of_tail.offset, self.unit * 3)
        self.assertEqual(tail_of_tail.size, self.unit)
        self.assertEqual(tail_of_tail.prev.ptr(), tail.ptr())
        self.assertEqual(tail_of_tail.next, None)
        self.assertEqual(tail_of_tail.stream_ptr, self.stream_ptr)
Example #2
0
    def test_split(self):
        mem = MockMemory(self.unit * 4)
        chunk = memory._Chunk(mem, 0, mem.size, self.stream_ptr)
        tail = chunk.split(self.unit * 2)
        assert chunk.ptr() == mem.ptr
        assert chunk.offset == 0
        assert chunk.size == self.unit * 2
        assert chunk.prev is None
        assert chunk.next.ptr() == tail.ptr()
        assert chunk.stream_ptr == self.stream_ptr
        assert tail.ptr() == mem.ptr + self.unit * 2
        assert tail.offset == self.unit * 2
        assert tail.size == self.unit * 2
        assert tail.prev.ptr() == chunk.ptr()
        assert tail.next is None
        assert tail.stream_ptr == self.stream_ptr

        tail_of_head = chunk.split(self.unit)
        assert chunk.ptr() == mem.ptr
        assert chunk.offset == 0
        assert chunk.size == self.unit
        assert chunk.prev is None
        assert chunk.next.ptr() == tail_of_head.ptr()
        assert chunk.stream_ptr == self.stream_ptr
        assert tail_of_head.ptr() == mem.ptr + self.unit
        assert tail_of_head.offset == self.unit
        assert tail_of_head.size == self.unit
        assert tail_of_head.prev.ptr() == chunk.ptr()
        assert tail_of_head.next.ptr() == tail.ptr()
        assert tail_of_head.stream_ptr == self.stream_ptr

        tail_of_tail = tail.split(self.unit)
        assert tail.ptr() == chunk.ptr() + self.unit * 2
        assert tail.offset == self.unit * 2
        assert tail.size == self.unit
        assert tail.prev.ptr() == tail_of_head.ptr()
        assert tail.next.ptr() == tail_of_tail.ptr()
        assert tail.stream_ptr == self.stream_ptr
        assert tail_of_tail.ptr() == mem.ptr + self.unit * 3
        assert tail_of_tail.offset == self.unit * 3
        assert tail_of_tail.size == self.unit
        assert tail_of_tail.prev.ptr() == tail.ptr()
        assert tail_of_tail.next is None
        assert tail_of_tail.stream_ptr == self.stream_ptr
Example #3
0
    def test_merge(self):
        mem = MockMemory(self.unit * 4)
        chunk = memory._Chunk(mem, 0, mem.size, self.stream_ptr)
        chunk_ptr = chunk.ptr()
        chunk_offset = chunk.offset
        chunk_size = chunk.size

        tail = chunk.split(self.unit * 2)
        head = chunk
        head_ptr = head.ptr()
        head_offset = head.offset
        head_size = head.size
        tail_ptr = tail.ptr()
        tail_offset = tail.offset
        tail_size = tail.size

        tail_of_head = head.split(self.unit)
        tail_of_tail = tail.split(self.unit)

        head.merge(tail_of_head)
        self.assertEqual(head.ptr(), head_ptr)
        self.assertEqual(head.offset, head_offset)
        self.assertEqual(head.size, head_size)
        self.assertEqual(head.prev, None)
        self.assertEqual(head.next.ptr(), tail_ptr)
        self.assertEqual(head.stream_ptr, self.stream_ptr)

        tail.merge(tail_of_tail)
        self.assertEqual(tail.ptr(), tail_ptr)
        self.assertEqual(tail.offset, tail_offset)
        self.assertEqual(tail.size, tail_size)
        self.assertEqual(tail.prev.ptr(), head_ptr)
        self.assertEqual(tail.next, None)
        self.assertEqual(tail.stream_ptr, self.stream_ptr)

        head.merge(tail)
        self.assertEqual(head.ptr(), chunk_ptr)
        self.assertEqual(head.offset, chunk_offset)
        self.assertEqual(head.size, chunk_size)
        self.assertEqual(head.prev, None)
        self.assertEqual(head.next, None)
        self.assertEqual(head.stream_ptr, self.stream_ptr)
Example #4
0
    def test_merge(self):
        mem = MockMemory(self.unit * 4)
        chunk = memory._Chunk(mem, 0, mem.size, self.stream_ptr)
        chunk_ptr = chunk.ptr()
        chunk_offset = chunk.offset
        chunk_size = chunk.size

        tail = chunk.split(self.unit * 2)
        head = chunk
        head_ptr = head.ptr()
        head_offset = head.offset
        head_size = head.size
        tail_ptr = tail.ptr()
        tail_offset = tail.offset
        tail_size = tail.size

        tail_of_head = head.split(self.unit)
        tail_of_tail = tail.split(self.unit)

        head.merge(tail_of_head)
        assert head.ptr() == head_ptr
        assert head.offset == head_offset
        assert head.size == head_size
        assert head.prev is None
        assert head.next.ptr() == tail_ptr
        assert head.stream_ptr == self.stream_ptr

        tail.merge(tail_of_tail)
        assert tail.ptr() == tail_ptr
        assert tail.offset == tail_offset
        assert tail.size == tail_size
        assert tail.prev.ptr() == head_ptr
        assert tail.next is None
        assert tail.stream_ptr == self.stream_ptr

        head.merge(tail)
        assert head.ptr() == chunk_ptr
        assert head.offset == chunk_offset
        assert head.size == chunk_size
        assert head.prev is None
        assert head.next is None
        assert head.stream_ptr == self.stream_ptr