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_fallback_to_default_buffer_instructions_if_record_with_given_date_is_not_found(self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(None)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        self.assertEqual(((None, True, 7),), buf.get_buffer_instructions(drv))
    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_fallback_to_default_buffer_instructions_if_record_with_given_date_is_not_found(
            self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(None)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        self.assertEqual(((None, True, 7), ), buf.get_buffer_instructions(drv))
    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_get_buffer_instructions_for_given_date(self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(13)
        self.queue.push(None)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        self.assertEqual(((12, False, 7), (13, True, 5)),
                         buf.get_buffer_instructions(drv))
    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_given_date(self):
        dt = datetime.datetime.utcnow()
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.queue.push(13)
        self.queue.push(None)
        drv = ScreenBufferTest.FakeDriver(self.queue, dt)

        self.assertEqual(((12, False, 7), (13, True, 5)),
            buf.get_buffer_instructions(drv))
    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_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_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_get_buffer_instructions_for_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.assertEqual(
            ((None, True, 7), ),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))
    def test_should_get_buffer_instructions_for_empty_buffer(self):
        buf = ScreenBuffer(page_size=2, buffer_size=5)

        self.assertEqual(((None, True, 7),),
            buf.get_buffer_instructions(ScreenBufferTest.NullDriver()))