Пример #1
0
    def test_sorted_filtered_model_updates_when_data_item_enters_filter(self):
        def sort_by_date_key(data_item):
            return data_item.created

        document_model = DocumentModel.DocumentModel()
        with contextlib.closing(document_model):
            filtered_data_items = ListModel.FilteredListModel(
                items_key="data_items")
            filtered_data_items.container = document_model
            filtered_data_items.filter = ListModel.EqFilter("is_live", True)
            filtered_data_items.sort_key = sort_by_date_key
            for _ in range(4):
                data_item = DataItem.DataItem(
                    numpy.zeros((16, 16), numpy.uint32))
                document_model.append_data_item(data_item)
            self.assertEqual(len(filtered_data_items.items), 0)
            with document_model.data_item_live(document_model.data_items[0]):
                document_model.data_items[0].data_item_changed_event.fire()
                self.assertEqual(len(filtered_data_items.items), 1)
                with document_model.data_item_live(
                        document_model.data_items[2]):
                    document_model.data_items[2].data_item_changed_event.fire()
                    self.assertEqual(len(filtered_data_items.items), 2)
                    self.assertTrue(
                        filtered_data_items.items.index(
                            document_model.data_items[0]) < filtered_data_items
                        .items.index(document_model.data_items[2]))
Пример #2
0
 def test_filtered_model_updates_when_source_model_has_data_item_that_updates(
         self):
     document_model = DocumentModel.DocumentModel()
     with contextlib.closing(document_model):
         filtered_data_items = ListModel.FilteredListModel(
             items_key="data_items")
         filtered_data_items.container = document_model
         for _ in range(4):
             data_item = DataItem.DataItem(
                 numpy.zeros((16, 16), numpy.uint32))
             document_model.append_data_item(data_item)
         self.assertEqual(len(filtered_data_items.items), 4)
         selection = Selection.IndexedSelection()
         filtered_data_items2 = ListModel.FilteredListModel(
             items_key="data_items",
             container=filtered_data_items,
             selection=selection)
         filtered_data_items2.filter = ListModel.EqFilter("is_live", True)
         self.assertEqual(len(filtered_data_items2.items), 0)
         with document_model.data_item_live(document_model.data_items[0]):
             document_model.data_items[0].data_item_changed_event.fire()
             self.assertEqual(len(filtered_data_items.items),
                              4)  # verify assumption
             self.assertEqual(len(filtered_data_items2.items),
                              1)  # verify assumption
             self.assertTrue(
                 document_model.data_items[0] in filtered_data_items2.items)
Пример #3
0
 def test_sorted_filtered_model_updates_when_data_item_exits_filter(self):
     def sort_by_date_key(data_item):
         return data_item.created
     with TestContext.create_memory_context() as test_context:
         document_model = test_context.create_document_model()
         filtered_data_items = ListModel.FilteredListModel(items_key="data_items")
         filtered_data_items.container = document_model
         filtered_data_items.filter = ListModel.NotFilter(ListModel.EqFilter("is_live", True))
         filtered_data_items.sort_key = sort_by_date_key
         for _ in range(4):
             data_item = DataItem.DataItem(numpy.zeros((16, 16), numpy.uint32))
             document_model.append_data_item(data_item)
         self.assertEqual(len(filtered_data_items.items), 4)
         with document_model.data_item_live(document_model.data_items[0]):
             document_model.data_items[0].data_item_changed_event.fire()
             self.assertEqual(len(filtered_data_items.items), 3)