Example #1
0
    def test_shown(self):
        pages = 50
        tests = [{'label': 'left edge', 'current': 0, 'expect': [[
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            ], [47, 48, 49]]}, {'label': 'middle', 'current': 25,
                                'expect': [[0, 1, 2], [
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            27,
            28,
            29,
            ], [47, 48, 49]]}, {'label': 'right edge', 'current': 49,
                                'expect': [[0, 1, 2], [
            41,
            42,
            43,
            44,
            45,
            46,
            47,
            48,
            49,
            ]]}]

        for test in tests:
            page_list = PageList(pages, current_page=test['current'])
            self.assertEqual(page_list.shown(), test['expect'])
        return
Example #2
0
    def test_is_shown(self):

        # rules:
        # left and right edge have a minimum 3
        # left edge: if current page <= 9, and i <= 9 show
        # right edge: if current page > pages - 9 and i >= pages - 9 show
        # middle: if abs(current page - i ) <= 9/2 show

        # If the number of pages is 9 or less, then all page numbers are shown
        # regardless of the current page

        pages = 9
        expect_true = [
            0,
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            ]

        for current_page in range(-2, pages + 2):
            page_list = PageList(pages, current_page)
            shown_true = []

            # The range intentionally extends prior and beyond normal page
            # numbers.

            for page in range(-2, pages + 2):
                if page_list.is_shown(page):
                    shown_true.append(page)
            self.assertEqual(expect_true, shown_true)

        # Ensure the left edge is always 3 or more
        # Ensure the right edge is always 3 or more

        pages = 50
        left_edge = [0, 1, 2]
        right_edge = [47, 48, 49]

        for current_page in range(-2, pages + 2):
            page_list = PageList(pages, current_page)
            shown_true = []

            # The range intentionally extends prior and beyond normal page
            # numbers.

            for page in range(-2, pages + 2):
                if page_list.is_shown(page):
                    shown_true.append(page)

            min_len = page_list.min_edge + page_list.surround
            self.assertEqual(left_edge, shown_true[0:3])
            self.assertEqual(right_edge, shown_true[-3:])
            self.assertTrue(len(shown_true) >= min_len)

        # Ensure the surround is always at least 9.

        pages = 50
        for current_page in range(-2, pages + 2):
            page_list = PageList(pages, current_page)
            shown_true = []

            # The range intentionally extends prior and beyond normal page
            # numbers.

            for page in range(-2, pages + 2):
                if page_list.is_shown(page):
                    shown_true.append(page)
            start = current_page - 1 - page_list.surround / 2
            if start < 0:
                start = 0
            end = current_page + page_list.surround / 2
            if end >= pages:
                end = page - 1
            surround_range = range(start, end)
            self.assertTrue(set(surround_range).issubset(set(shown_true)))
        return