def test_should_get_buffer_instructions_if_both_buffers_are_below_threshold(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(11))
        buf.append_record(self._get_line(12))

        self.assertEqual(((12, False, 5), (11, True, 5)),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_append_record_on_non_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)
        self.assertEqual('3', cur[1].message)
示例#3
0
    def test_should_append_record_on_non_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)
        self.assertEqual('3', cur[1].message)
示例#4
0
    def test_should_append_multi_line_record_spanning_over_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(1))
        buf.append_record(self._get_line(2, 'a\nb'))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('a', cur[0].message)
        self.assertEqual('b', cur[1].message)
    def test_should_append_multi_line_record_spanning_over_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(1))
        buf.append_record(self._get_line(2, 'a\nb'))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('a', cur[0].message)
        self.assertEqual('b', cur[1].message)
示例#6
0
    def test_should_append_record_on_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.add_observer(self.observer.notify)
        buf.append_record(self._get_line(2))
        self.assertEqual(1, self.observer.count)

        cur = buf.get_current_lines()
        self.assertEqual(1, len(cur))
        self.assertEqual('2', cur[0].message)
示例#7
0
    def test_should_get_buffer_instructions_if_both_buffers_are_below_threshold(
            self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(11))
        buf.append_record(self._get_line(12))

        self.assertEqual(
            ((12, False, 5), (11, True, 5)),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_get_buffer_instructions_for_backward_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10, 20):
            buf.append_record(self._get_line(i + 1))
        for i in range(0, 3):
            buf.go_to_previous_page()

        self.assertEqual(((11, True, 5),),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
示例#9
0
    def test_should_go_to_next_page_with_less_lines_than_page_size(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(1))

        buf.go_to_next_page()

        cur = buf.get_current_lines()
        self.assertEqual(1, len(cur))
        self.assertEqual('1', cur[0].message)
    def test_should_go_to_next_page_with_less_lines_than_page_size(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(1))

        buf.go_to_next_page()

        cur = buf.get_current_lines()
        self.assertEqual(1, len(cur))
        self.assertEqual('1', cur[0].message)
    def test_should_append_record_on_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.add_observer(self.observer.notify)
        buf.append_record(self._get_line(2))
        self.assertEqual(1, self.observer.count)

        cur = buf.get_current_lines()
        self.assertEqual(1, len(cur))
        self.assertEqual('2', cur[0].message)
示例#12
0
    def test_should_get_buffer_instructions_for_backward_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10, 20):
            buf.append_record(self._get_line(i + 1))
        for i in range(0, 3):
            buf.go_to_previous_page()

        self.assertEqual(
            ((11, True, 5), ),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_not_get_buffer_instructions_for_backward_buffer_if_below_threshold(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10, 20):
            buf.append_record(self._get_line(i + 1))
        buf.go_to_previous_page()
        buf.go_to_previous_page()
        buf.go_to_previous_line()

        self.assertEqual(tuple(),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_prepend_record_on_buffer_not_at_end_of_screen(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        buf.append_record(self._get_line(4))
        buf.go_to_previous_line()
        buf.prepend_record(self._get_line(1))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)
        self.assertEqual('3', cur[1].message)
    def test_should_go_to_next_line(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10):
            buf.append_record(self._get_line(i + 1))

        buf.go_to_previous_page()
        buf.go_to_next_line()

        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('8', cur[0].message)
示例#16
0
    def test_should_go_to_next_line(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10):
            buf.append_record(self._get_line(i + 1))

        buf.go_to_previous_page()
        buf.go_to_next_line()

        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('8', cur[0].message)
示例#17
0
    def test_should_prepend_record_on_buffer_not_at_end_of_screen(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        buf.append_record(self._get_line(4))
        buf.go_to_previous_line()
        buf.prepend_record(self._get_line(1))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)
        self.assertEqual('3', cur[1].message)
示例#18
0
    def test_should_not_get_buffer_instructions_for_backward_buffer_if_below_threshold(
            self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        for i in range(10, 20):
            buf.append_record(self._get_line(i + 1))
        buf.go_to_previous_page()
        buf.go_to_previous_page()
        buf.go_to_previous_line()

        self.assertEqual(
            tuple(),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_auto_scroll_on_append_if_screen_is_at_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))

        buf.add_observer(self.observer.notify)
        buf.append_record(self._get_line(4))

        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('3', cur[0].message)
        self.assertEqual('4', cur[1].message)

        self.assertEqual(1, self.observer.count)
示例#20
0
    def test_should_auto_scroll_on_append_if_screen_is_at_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))

        buf.add_observer(self.observer.notify)
        buf.append_record(self._get_line(4))

        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('3', cur[0].message)
        self.assertEqual('4', cur[1].message)

        self.assertEqual(1, self.observer.count)
    def test_should_auto_scroll_after_manual_scroll(self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(13)
        self.queue.push(None)
        self.queue.push_forward_records(13, 7)
        self.queue.push_forward_records(12, 5)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        buf.get_records(drv)
        buf.go_to_next_page()
        buf.go_to_next_page()
        buf.go_to_next_line()
        buf.append_record(self._get_line(20))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('19', cur[0].message)
        self.assertEqual('20', cur[1].message)
示例#22
0
    def test_should_auto_scroll_after_manual_scroll(self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(13)
        self.queue.push(None)
        self.queue.push_forward_records(13, 7)
        self.queue.push_forward_records(12, 5)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        buf.get_records(drv)
        buf.go_to_next_page()
        buf.go_to_next_page()
        buf.go_to_next_line()
        buf.append_record(self._get_line(20))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('19', cur[0].message)
        self.assertEqual('20', cur[1].message)
示例#23
0
    def test_should_not_auto_scroll_if_not_at_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        buf.append_record(self._get_line(4))
        buf.go_to_previous_line()

        buf.add_observer(self.observer.notify)

        buf.append_record(self._get_line(5))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)

        self.assertEqual(0, self.observer.count)
    def test_should_not_auto_scroll_if_not_at_end_of_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        buf.append_record(self._get_line(2))
        buf.append_record(self._get_line(3))
        buf.append_record(self._get_line(4))
        buf.go_to_previous_line()

        buf.add_observer(self.observer.notify)

        buf.append_record(self._get_line(5))
        cur = buf.get_current_lines()
        self.assertEqual(2, len(cur))
        self.assertEqual('2', cur[0].message)

        self.assertEqual(0, self.observer.count)