def test_should_not_stop_fetching_if_forward_fetch_returns_fewer_records( self): buf = ScreenBuffer(page_size=2, buffer_size=5) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(14, 7) buf.get_records(drv) buf.go_to_previous_line() self.queue.push(None) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() self.queue.push_backward_records(7, 7) buf.get_records(drv) buf.go_to_previous_page() cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('6', cur[0].message) self.assertEqual('7', 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_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_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_timeout_if_backward_fetch_returns_fewer_records(self): buf = ScreenBuffer(2, buffer_size=5, timeout=13) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(14, 7) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() self.queue.push_backward_records(7, 4) self.assertIsNone(buf.get_records(drv))
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_not_get_timeout_if_backward_fetch_returns_fewer_records( self): buf = ScreenBuffer(2, buffer_size=5, timeout=13) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(14, 7) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() self.queue.push_backward_records(7, 4) self.assertIsNone(buf.get_records(drv))
def test_should_change_page_size_before_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.go_to_previous_page() buf.page_size = 3 cur = buf.get_current_lines() self.assertEqual(3, len(cur)) self.assertEqual('7', cur[0].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)
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_stop_fetching_if_fetch_returns_less_records_than_asked(self): buf = ScreenBuffer(page_size=2, buffer_size=5) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(6, 6) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() buf.get_records(drv) cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('1', cur[0].message) self.assertEqual('2', cur[1].message)
def test_should_stop_fetching_if_fetch_returns_less_records_than_asked( self): buf = ScreenBuffer(page_size=2, buffer_size=5) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(6, 6) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() buf.get_records(drv) cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('1', cur[0].message) self.assertEqual('2', cur[1].message)
def test_should_not_stop_fetching_if_fetch_returns_correct_number_of_records(self): buf = ScreenBuffer(page_size=2, buffer_size=5) drv = ScreenBufferTest.FakeDriver(self.queue) self.queue.push_backward_records(14, 7) buf.get_records(drv) buf.go_to_previous_page() buf.go_to_previous_page() self.queue.push_backward_records(7, 7) buf.get_records(drv) buf.go_to_previous_page() cur = buf.get_current_lines() self.assertEqual(2, len(cur)) self.assertEqual('7', cur[0].message) self.assertEqual('8', cur[1].message)