def test_should_stop_observing(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.add_observer(self.observer.notify) buf.prepend_record(self._get_line(2)) buf.remove_observer(self.observer.notify) buf.prepend_record(self._get_line(1)) self.assertEqual(1, self.observer.count)
def test_should_get_buffer_instructions_for_forward_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) self.assertEqual(((10, False, 5),), buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
def test_should_stop_observing(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.add_observer(self.observer.notify) buf.prepend_record(self._get_line(2)) buf.remove_observer(self.observer.notify) buf.prepend_record(self._get_line(1)) self.assertEqual(1, self.observer.count)
def test_should_get_buffer_instructions_for_forward_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) self.assertEqual( ((10, False, 5), ), buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
def test_should_change_page_size_at_end_of_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.page_size = 3 cur = buf.get_current_lines() self.assertEqual(3, len(cur)) self.assertEqual('8', cur[0].message)
def test_should_go_to_previous_page_with_less_lines_than_page_size(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(1)) buf.go_to_previous_page() cur = buf.get_current_lines() self.assertEqual(1, len(cur)) self.assertEqual('1', cur[0].message)
def test_should_prepend_multi_line_record_on_non_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(3)) buf.prepend_record(self._get_line(2)) buf.prepend_record(self._get_line(1, 'a\nb')) 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_prepend_multi_line_record_on_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(1, 'a\nb')) cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('a', cur[0].message) self.assertEqual(False, cur[0].is_continuation) self.assertEqual('b', cur[1].message) self.assertEqual(True, cur[1].is_continuation)
def test_should_prepend_record_on_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.add_observer(self.observer.notify) buf.prepend_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)
def test_should_prepend_record_on_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.add_observer(self.observer.notify) buf.prepend_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)
def test_should_change_page_size_at_end_of_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.page_size = 3 cur = buf.get_current_lines() self.assertEqual(3, len(cur)) self.assertEqual('8', cur[0].message)
def test_should_prepend_multi_line_record_on_non_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(3)) buf.prepend_record(self._get_line(2)) buf.prepend_record(self._get_line(1, 'a\nb')) 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_previous_page_with_less_lines_than_page_size(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(1)) buf.go_to_previous_page() cur = buf.get_current_lines() self.assertEqual(1, len(cur)) self.assertEqual('1', cur[0].message)
def test_should_prepend_multi_line_record_on_empty_buffer(self): buf = ScreenBuffer(page_size=2, buffer_size=5) buf.prepend_record(self._get_line(1, 'a\nb')) cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('a', cur[0].message) self.assertEqual(False, cur[0].is_continuation) self.assertEqual('b', cur[1].message) self.assertEqual(True, cur[1].is_continuation)
def test_should_go_to_previous_line(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.go_to_previous_line() cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('8', cur[0].message)
def test_should_go_to_previous_line(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.go_to_previous_line() cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('8', cur[0].message)
def test_should_not_get_buffer_instructions_for_forward_buffer_if_below_threshold(self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.go_to_previous_line() buf.go_to_previous_line() 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_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_not_get_buffer_instructions_for_forward_buffer_if_below_threshold( self): buf = ScreenBuffer(page_size=2, buffer_size=5) for i in range(10, 0, -1): buf.prepend_record(self._get_line(i)) buf.go_to_previous_line() buf.go_to_previous_line() buf.go_to_previous_line() self.assertEqual( tuple(), buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))