def test_flattened_model_with_empty_master_item_closes_properly(self): l = ListModel.ListModel("as") bs1 = ListModel.ListModel("bs") bs1.append_item("11") bs2 = ListModel.ListModel("bs") bs3 = ListModel.ListModel("bs") bs3.append_item("31") l.append_item(bs1) l.append_item(bs2) l.append_item(bs3) f = ListModel.FlattenedListModel(container=l, master_items_key="as", child_items_key="bs", items_key="cs") with contextlib.closing(f): pass
def test_flattened_model_initializes_properly(self): l = ListModel.ListModel("as") bs1 = ListModel.ListModel("bs") bs1.append_item("11") bs1.append_item("12") bs2 = ListModel.ListModel("bs") bs3 = ListModel.ListModel("bs") bs3.append_item("31") bs3.append_item("32") bs3.append_item("33") l.append_item(bs1) l.append_item(bs2) l.append_item(bs3) f = ListModel.FlattenedListModel(container=l, master_items_key="as", child_items_key="bs", items_key="cs") self.assertEqual(["11", "12", "31", "32", "33"], f.cs)
def test_flattened_model_removes_child_item_properly(self) -> None: l = ListModel.ListModel[typing.Any]("as") bs1 = ListModel.ListModel[typing.Any]("bs") bs1.append_item("11") bs1.append_item("12") bs2 = ListModel.ListModel[typing.Any]("bs") bs3 = ListModel.ListModel[typing.Any]("bs") bs3.append_item("31") bs3.append_item("32") bs3.append_item("33") l.append_item(bs1) l.append_item(bs2) l.append_item(bs3) f = ListModel.FlattenedListModel(container=l, master_items_key="as", child_items_key="bs", items_key="cs") bs1.remove_item(1) self.assertEqual(["11", "31", "32", "33"], f.cs)
def test_refcounts(self) -> None: # list model model = ListModel.ListModel[typing.Any]("items") model_ref = weakref.ref(model) del model self.assertIsNone(model_ref()) # filtered model l = ListModel.ListModel[typing.Any]("items") model2 = ListModel.FilteredListModel(container=l, items_key="items") model_ref2 = weakref.ref(model2) del model2 self.assertIsNone(model_ref2()) # nested filtered model l = ListModel.ListModel[typing.Any]("items") l2 = ListModel.FilteredListModel(container=l, items_key="items") model3 = ListModel.FilteredListModel(container=l2, items_key="items") model_ref3 = weakref.ref(model3) del model3 self.assertIsNone(model_ref3()) # filtered model with item changed event l = ListModel.ListModel[typing.Any]("items") l.append_item(C()) model4 = ListModel.FilteredListModel(container=l, items_key="items") model_ref4 = weakref.ref(model4) del model4 self.assertIsNone(model_ref4()) # mapped model l = ListModel.ListModel[typing.Any]("items") model5 = ListModel.MappedListModel(container=l, master_items_key="items", items_key="items") model_ref5 = weakref.ref(model5) del model5 self.assertIsNone(model_ref5()) # mapped model of filtered model l = ListModel.ListModel[typing.Any]("items") l2 = ListModel.FilteredListModel(container=l, items_key="items") model6 = ListModel.MappedListModel(container=l2, master_items_key="items", items_key="items") model_ref6 = weakref.ref(model6) del model6 self.assertIsNone(model_ref6()) # flattened model l = ListModel.ListModel[typing.Any]("items") model7 = ListModel.FlattenedListModel(container=l, master_items_key="items", child_items_key="items", items_key="items") model_ref7 = weakref.ref(model7) del model7 self.assertIsNone(model_ref7()) # flattened model with items l = ListModel.ListModel[typing.Any]("items") l.append_item(ListModel.ListModel[typing.Any]("items")) model8 = ListModel.FlattenedListModel(container=l, master_items_key="items", child_items_key="items", items_key="items") model_ref8 = weakref.ref(model8) del model8 self.assertIsNone(model_ref8()) # list property model l = ListModel.ListModel[typing.Any]("items") model9 = ListModel.ListPropertyModel(l) model_ref9 = weakref.ref(model9) del model9 self.assertIsNone(model_ref9())