def testAddCompositeWithParentTriggersNotificationByParent(self): self.registerObserver(self.composite.addChildEventType()) self.collection.append(self.composite) self.composite2.setParent(self.composite) self.collection.append(self.composite2) expectedEvent = patterns.Event(self.composite.addChildEventType(), self.composite, self.composite2) self.assertEqual([expectedEvent], self.events) def testRemoveChildFromCollectionRemovesChildFromParent(self): self.collection.extend([self.composite, self.composite2]) self.composite.addChild(self.composite2) self.collection.remove(self.composite2) self.failIf(self.composite.children()) def testRemoveChildFromCollectionTriggersNotificationByParent(self): self.registerObserver(self.composite.removeChildEventType()) self.collection.extend([self.composite, self.composite2]) self.composite.addChild(self.composite2) self.collection.remove(self.composite2) expectedEvent = patterns.Event(self.composite.removeChildEventType(), self.composite, self.composite2) self.assertEqual([expectedEvent], self.events) def testRemoveCompositeWithChildRemovesChildToo(self): self.composite.addChild(self.composite2) grandChild = patterns.ObservableComposite() self.composite2.addChild(grandChild) self.collection.append(self.composite) self.collection.remove(self.composite2) self.assertEqual([self.composite], self.collection) def testRemoveCompositeAndChildRemovesBoth(self): self.composite.addChild(self.composite2) grandChild = patterns.ObservableComposite() self.composite2.addChild(grandChild) self.collection.append(self.composite) self.collection.removeItems([self.composite2, grandChild]) self.assertEqual([self.composite], self.collection) def testRemoveChildWithChildren_CollectionNotificationContainsParentAndChild(self): self.registerObserver(self.collection.removeItemEventType()) self.composite.addChild(self.composite2) grandChild = patterns.ObservableComposite() self.composite2.addChild(grandChild) self.collection.append(self.composite) self.collection.remove(self.composite2) self.assertEqualLists([self.composite2, grandChild], self.events[0].values(type=self.collection.removeItemEventType()))