Пример #1
0
    def test_filtered_range_refilter (self):

        full_model = Model ()
        ranged_model = RangeFilteredLogModel (full_model)
        # FIXME: Call to .reset should not be needed.
        ranged_model.reset ()
        filtered_model = FilteredLogModel (ranged_model)

        row_list = self.__row_list
        rows = row_list (full_model)
        rows_ranged = row_list (ranged_model)
        rows_filtered = row_list (filtered_model)

        self.__dump_model (full_model, "full model")
        ## self.__dump_model (ranged_model, "ranged model")
        ## self.__dump_model (filtered_model, "filtered model")

        self.assertEquals (rows, rows_ranged)
        self.assertEquals (rows, rows_filtered)

        self.assertEquals ([ranged_model.line_index_from_super (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([ranged_model.line_index_to_super (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([ranged_model.line_index_from_top (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([ranged_model.line_index_to_top (i)
                            for i in range (20)],
                           range (20))

        self.assertEquals ([filtered_model.line_index_from_super (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([filtered_model.line_index_to_super (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([filtered_model.line_index_from_top (i)
                            for i in range (20)],
                           range (20))
        self.assertEquals ([filtered_model.line_index_to_top (i)
                            for i in range (20)],
                           range (20))

        ranged_model.set_range (5, 16)
        self.__dump_model (ranged_model, "ranged model (5, 16)")
        filtered_model.super_model_changed_range ()

        rows_ranged = row_list (ranged_model)
        self.assertEquals (rows_ranged, range (5, 16))

        self.__dump_model (filtered_model, "filtered model (nofilter, 5, 15)")

        rows_filtered = row_list (filtered_model)
        self.assertEquals (rows_ranged, rows_filtered)

        self.assertEquals ([ranged_model.line_index_from_super (i)
                            for i in range (5, 16)],
                           range (11))
        self.assertEquals ([ranged_model.line_index_to_super (i)
                            for i in range (11)],
                           range (5, 16))
        self.assertEquals ([ranged_model.line_index_from_top (i)
                            for i in range (5, 16)],
                           range (11))
        self.assertEquals ([ranged_model.line_index_to_top (i)
                            for i in range (11)],
                           range (5, 16))

        self.assertEquals ([filtered_model.line_index_from_super (i)
                            for i in range (11)],
                           range (11))
        self.assertEquals ([filtered_model.line_index_to_super (i)
                            for i in range (11)],
                           range (11))
        self.assertEquals ([filtered_model.line_index_from_top (i)
                            for i in range (5, 16)],
                           range (11))
        self.assertEquals ([filtered_model.line_index_to_top (i)
                            for i in range (11)],
                           range (5, 16))

        filtered_model.add_filter (CategoryFilter ("EVEN"),
                                   Common.Data.DefaultDispatcher ())
        rows_filtered = row_list (filtered_model)
        self.assertEquals (rows_filtered, range (5, 16, 2))

        self.__dump_model (filtered_model, "filtered model")

        self.assertEquals ([filtered_model.line_index_from_super (i)
                            for i in range (0, 11, 2)],
                           range (6))
        self.assertEquals ([filtered_model.line_index_from_top (i)
                            for i in range (5, 16, 2)],
                           range (6))

        ranged_model.set_range (7, 13)
        self.__dump_model (ranged_model, "ranged model (7, 13)")
        filtered_model.super_model_changed_range ()

        self.assertEquals (row_list (ranged_model), range (7, 13))
        self.assertEquals ([ranged_model.line_index_from_super (i)
                            for i in range (7, 13)],
                           range (6))
        self.assertEquals ([ranged_model.line_index_to_super (i)
                            for i in range (6)],
                           range (7, 13))
        self.assertEquals ([ranged_model.line_index_from_top (i)
                            for i in range (7, 13)],
                           range (6))
        self.assertEquals ([ranged_model.line_index_to_top (i)
                            for i in range (6)],
                           range (7, 13))

        self.__dump_model (filtered_model, "filtered model (ranged 7, 12)")
        self.assertEquals ([filtered_model.line_index_from_super (i)
                            for i in range (0, 6, 2)],
                           range (3))
        self.assertEquals ([filtered_model.line_index_to_super (i)
                            for i in range (3)],
                           range (0, 6, 2))
        self.assertEquals ([filtered_model.line_index_from_top (i)
                            for i in range (7, 12, 2)],
                           range (3))
        self.assertEquals ([filtered_model.line_index_to_top (i)
                            for i in range (3)],
                           range (7, 12, 2))

        rows_filtered = row_list (filtered_model)
        self.assertEquals (rows_filtered, range (7, 13, 2))
Пример #2
0
    def test_filtered_range_refilter(self):

        full_model = Model()
        ranged_model = RangeFilteredLogModel(full_model)
        # FIXME: Call to .reset should not be needed.
        ranged_model.reset()
        filtered_model = FilteredLogModel(ranged_model)

        row_list = self.__row_list
        rows = row_list(full_model)
        rows_ranged = row_list(ranged_model)
        rows_filtered = row_list(filtered_model)

        self.__dump_model(full_model, "full model")
        ## self.__dump_model (ranged_model, "ranged model")
        ## self.__dump_model (filtered_model, "filtered model")

        self.assertEquals(rows, rows_ranged)
        self.assertEquals(rows, rows_filtered)

        self.assertEquals(
            [ranged_model.line_index_from_super(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [ranged_model.line_index_to_super(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [ranged_model.line_index_from_top(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [ranged_model.line_index_to_top(i) for i in range(20)], range(20))

        self.assertEquals(
            [filtered_model.line_index_from_super(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [filtered_model.line_index_to_super(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [filtered_model.line_index_from_top(i) for i in range(20)],
            range(20))
        self.assertEquals(
            [filtered_model.line_index_to_top(i) for i in range(20)],
            range(20))

        ranged_model.set_range(5, 16)
        self.__dump_model(ranged_model, "ranged model (5, 16)")
        filtered_model.super_model_changed_range()

        rows_ranged = row_list(ranged_model)
        self.assertEquals(rows_ranged, range(5, 16))

        self.__dump_model(filtered_model, "filtered model (nofilter, 5, 15)")

        rows_filtered = row_list(filtered_model)
        self.assertEquals(rows_ranged, rows_filtered)

        self.assertEquals(
            [ranged_model.line_index_from_super(i) for i in range(5, 16)],
            range(11))
        self.assertEquals(
            [ranged_model.line_index_to_super(i) for i in range(11)],
            range(5, 16))
        self.assertEquals(
            [ranged_model.line_index_from_top(i) for i in range(5, 16)],
            range(11))
        self.assertEquals(
            [ranged_model.line_index_to_top(i) for i in range(11)],
            range(5, 16))

        self.assertEquals(
            [filtered_model.line_index_from_super(i) for i in range(11)],
            range(11))
        self.assertEquals(
            [filtered_model.line_index_to_super(i) for i in range(11)],
            range(11))
        self.assertEquals(
            [filtered_model.line_index_from_top(i) for i in range(5, 16)],
            range(11))
        self.assertEquals(
            [filtered_model.line_index_to_top(i) for i in range(11)],
            range(5, 16))

        filtered_model.add_filter(CategoryFilter("EVEN"),
                                  Common.Data.DefaultDispatcher())
        rows_filtered = row_list(filtered_model)
        self.assertEquals(rows_filtered, range(5, 16, 2))

        self.__dump_model(filtered_model, "filtered model")

        self.assertEquals(
            [filtered_model.line_index_from_super(i) for i in range(0, 11, 2)],
            range(6))
        self.assertEquals(
            [filtered_model.line_index_from_top(i) for i in range(5, 16, 2)],
            range(6))

        ranged_model.set_range(7, 13)
        self.__dump_model(ranged_model, "ranged model (7, 13)")
        filtered_model.super_model_changed_range()

        self.assertEquals(row_list(ranged_model), range(7, 13))
        self.assertEquals(
            [ranged_model.line_index_from_super(i) for i in range(7, 13)],
            range(6))
        self.assertEquals(
            [ranged_model.line_index_to_super(i) for i in range(6)],
            range(7, 13))
        self.assertEquals(
            [ranged_model.line_index_from_top(i) for i in range(7, 13)],
            range(6))
        self.assertEquals(
            [ranged_model.line_index_to_top(i) for i in range(6)],
            range(7, 13))

        self.__dump_model(filtered_model, "filtered model (ranged 7, 12)")
        self.assertEquals(
            [filtered_model.line_index_from_super(i) for i in range(0, 6, 2)],
            range(3))
        self.assertEquals(
            [filtered_model.line_index_to_super(i) for i in range(3)],
            range(0, 6, 2))
        self.assertEquals(
            [filtered_model.line_index_from_top(i) for i in range(7, 12, 2)],
            range(3))
        self.assertEquals(
            [filtered_model.line_index_to_top(i) for i in range(3)],
            range(7, 12, 2))

        rows_filtered = row_list(filtered_model)
        self.assertEquals(rows_filtered, range(7, 13, 2))