def testEmptyFilteredIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.addContainerFilter(self._PROPERTY_STRING_ID, 'aasdfasdfasdf', True, False) ic.sort([self._PROPERTY_STRING_ID], [True])
def testAddItemAtPerformance(self): times = list() for _ in range(self._REPEATS): c = IndexedContainer() start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAt(0) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS, times, "IndexedContainer.addItemAt()", self._ADD_ITEM_AT_FAIL_THRESHOLD)
def testFilteredIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.addContainerFilter(self._PROPERTY_STRING_ID, 'a', True, False) ic.sort([self._PROPERTY_STRING_ID], [True]) self.verifyOrder(ic, [self._ITEM_ANOTHER_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL])
def rebuild_editor ( self ): """ Rebuilds the editor after its definition is modified. """ control = self.control c = IndexedContainer() for name in self.names: c.addItem(name) control.setContainerDataSource(c) self.update_editor()
def testAddItemAtPerformance(self): times = list() for _ in range(self._REPEATS): c = IndexedContainer() start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAt(0) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS, times, 'IndexedContainer.addItemAt()', self._ADD_ITEM_AT_FAIL_THRESHOLD)
def getResolutionContainer(self): resolutionContainer = IndexedContainer() resolutionContainer.addContainerProperty(self.resolution_PROPERTY_NAME, str, None) for i, res in enumerate(self._resolutions): added = resolutionContainer.addItem(res) added.getItemProperty(self.resolution_PROPERTY_NAME).setValue( self._resolutionNames[i]) return resolutionContainer
def testAddItemAfterPerformance(self): initialId = "Item0" times = list() for _ in range(self._REPEATS): c = IndexedContainer() c.addItem(initialId) start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAfter(initialId) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS, times, "IndexedContainer.addItemAfter()", self._ADD_ITEM_AFTER_FAIL_THRESHOLD)
def getResolutionContainer(self): resolutionContainer = IndexedContainer() resolutionContainer.addContainerProperty( self.resolution_PROPERTY_NAME, str, None) for i, res in enumerate(self._resolutions): added = resolutionContainer.addItem(res) added.getItemProperty( self.resolution_PROPERTY_NAME).setValue( self._resolutionNames[i]) return resolutionContainer
def testIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.sort([self._PROPERTY_STRING_ID], [True]) self.verifyOrder(ic, [ self._ITEM_ANOTHER_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL, self._ITEM_STRING_1, self._ITEM_STRING_2, self._ITEM_STRING_NULL2 ]) ic.sort([ self._PROPERTY_INTEGER_NOT_NULL, self._PROPERTY_INTEGER_NULL2, self._PROPERTY_STRING_ID ], [True, False, True]) self.verifyOrder(ic, [ self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_ANOTHER_NULL, self._ITEM_STRING_NULL2, self._ITEM_STRING_1, self._ITEM_STRING_2 ]) ic.sort([ self._PROPERTY_INTEGER_NOT_NULL, self._PROPERTY_INTEGER_NULL2, self._PROPERTY_STRING_ID ], [True, True, True]) self.verifyOrder(ic, [ self._ITEM_DATA_MINUS2_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS1, self._ITEM_ANOTHER_NULL, self._ITEM_STRING_NULL2, self._ITEM_STRING_1, self._ITEM_STRING_2 ])
def getNameContainer(cls): contactContainer = IndexedContainer() contactContainer.addContainerProperty(cls.PERSON_PROPERTY_NAME, str, "") i = 0 while i < 50: fn = cls._firstnames[int(random() * len(cls._firstnames))] ln = cls._lastnames[int(random() * len(cls._lastnames))] idd = fn + ln item = contactContainer.addItem(idd) if item is not None: i += 1 v = fn + " " + ln item.getItemProperty(cls.PERSON_PROPERTY_NAME).setValue(v) return contactContainer
def getNameContainer(cls): contactContainer = IndexedContainer() contactContainer.addContainerProperty(cls.PERSON_PROPERTY_NAME, str, '') i = 0 while i < 50: fn = cls._firstnames[int(random() * len(cls._firstnames))] ln = cls._lastnames[int(random() * len(cls._lastnames))] idd = fn + ln item = contactContainer.addItem(idd) if item is not None: i += 1 v = fn + ' ' + ln item.getItemProperty(cls.PERSON_PROPERTY_NAME).setValue(v) return contactContainer
def createTestContainer(self): """Creates a testing container for the tests @return: A new container with test items """ container = IndexedContainer(['1', '2', '3', '4']) return container
def testIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.sort([self._PROPERTY_STRING_ID], [True]) self.verifyOrder(ic, [self._ITEM_ANOTHER_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL, self._ITEM_STRING_1, self._ITEM_STRING_2, self._ITEM_STRING_NULL2]) ic.sort([self._PROPERTY_INTEGER_NOT_NULL, self._PROPERTY_INTEGER_NULL2, self._PROPERTY_STRING_ID], [True, False, True]) self.verifyOrder(ic, [self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_ANOTHER_NULL, self._ITEM_STRING_NULL2, self._ITEM_STRING_1, self._ITEM_STRING_2]) ic.sort([self._PROPERTY_INTEGER_NOT_NULL, self._PROPERTY_INTEGER_NULL2, self._PROPERTY_STRING_ID], [True, True, True]) self.verifyOrder(ic, [self._ITEM_DATA_MINUS2_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS1, self._ITEM_ANOTHER_NULL, self._ITEM_STRING_NULL2, self._ITEM_STRING_1, self._ITEM_STRING_2])
def testIndedexContainerItemIds(self): ic = IndexedContainer() ic.addContainerProperty('prop1', str, None) idd = ic.addItem() ic.getItem(idd).getItemProperty('prop1').setValue('1') item2 = ic.addItem('item2') item2.getItemProperty('prop1').setValue('2') self.serializeAndDeserialize(ic)
def getOrderContainer(cls): container = IndexedContainer() # Create the container properties container.addContainerProperty(cls.ORDER_DESCRIPTION_PROPERTY_ID, str, '') container.addContainerProperty(cls.ORDER_QUANTITY_PROPERTY_ID, int, 0) container.addContainerProperty(cls.ORDER_UNITPRICE_PROPERTY_ID, str, '$0') container.addContainerProperty(cls.ORDER_ITEMPRICE_PROPERTY_ID, str, '$0') # Create some orders cls.addOrderToContainer(container, 'Domain Name', 3, 7.99) cls.addOrderToContainer(container, 'SSL Certificate', 1, 119.0) cls.addOrderToContainer(container, 'Web Hosting', 1, 19.95) cls.addOrderToContainer(container, 'Email Box', 20, 0.15) cls.addOrderToContainer(container, 'E-Commerce Setup', 1, 25.0) cls.addOrderToContainer(container, 'Technical Support', 1, 50.0) return container
def testAddItemsConstructorPerformance(self): items = list() for _ in range(self._ITEMS): items.append(object()) times = set() for _ in range(self._REPEATS): start = 1000 * time.time() IndexedContainer(items) times.add((1000 * time.time()) - start) self.checkMedian(self._ITEMS, times, 'IndexedContainer(Collection)', self._ADD_ITEMS_CONSTRUCTOR_FAIL_THRESHOLD)
def testEmptyFilteredIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.addContainerFilter(self._PROPERTY_STRING_ID, 'aasdfasdfasdf', True, False) ic.sort([self._PROPERTY_STRING_ID], [True])
def testAddItemAfterLastPerformance(self): # TODO running with less items because slow otherwise times = list() for _ in range(self._REPEATS): c = IndexedContainer() c.addItem() start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAfter(c.lastItemId()) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS / 3, times, 'IndexedContainer.addItemAfter(lastId)', self._ADD_ITEM_AFTER_LAST_FAIL_THRESHOLD)
def getLocaleContainer(cls): localeContainer = IndexedContainer() localeContainer.addContainerProperty(cls.locale_PROPERTY_LOCALE, Locale, None) localeContainer.addContainerProperty(cls.locale_PROPERTY_NAME, str, None) for i in range(len(cls._locales)): idd = cls._locales[i][2] item = localeContainer.addItem(idd) v = Locale(cls._locales[i][0], cls._locales[i][1]) item.getItemProperty(cls.locale_PROPERTY_LOCALE).setValue(v) v = cls._locales[i][2] item.getItemProperty(cls.locale_PROPERTY_NAME).setValue(v) return localeContainer
def testFilteredIndexedContainer(self): ic = IndexedContainer() self.addProperties(ic) self.populate(ic) ic.addContainerFilter(self._PROPERTY_STRING_ID, 'a', True, False) ic.sort([self._PROPERTY_STRING_ID], [True]) self.verifyOrder(ic, [ self._ITEM_ANOTHER_NULL, self._ITEM_DATA_MINUS1, self._ITEM_DATA_MINUS1_NULL, self._ITEM_DATA_MINUS2, self._ITEM_DATA_MINUS2_NULL ])
def setContainerDataSource(self, newDataSource): """Sets the IContainer that serves as the data source of the viewer. @see: L{container.Viewer.setContainerDataSource} """ if newDataSource is None: # Note: using wrapped IndexedContainer to match constructor # (super creates an IndexedContainer, which is then wrapped). newDataSource = ContainerHierarchicalWrapper(IndexedContainer()) # Assure that the data source is ordered by making unordered # containers ordered by wrapping them if issubclass(newDataSource.__class__, container.IHierarchical): super(Tree, self).setContainerDataSource(newDataSource) else: super(Tree, self).setContainerDataSource( ContainerHierarchicalWrapper(newDataSource))
def getLocaleContainer(cls): localeContainer = IndexedContainer() localeContainer.addContainerProperty(cls.locale_PROPERTY_LOCALE, Locale, None) localeContainer.addContainerProperty(cls.locale_PROPERTY_NAME, str, None) for i in range(len(cls._locales)): idd = cls._locales[i][2] item = localeContainer.addItem(idd) v = Locale(cls._locales[i][0], cls._locales[i][1]) item.getItemProperty(cls.locale_PROPERTY_LOCALE).setValue(v) v = cls._locales[i][2] item.getItemProperty(cls.locale_PROPERTY_NAME).setValue(v) return localeContainer
def testAddItemAfterPerformance(self): initialId = 'Item0' times = list() for _ in range(self._REPEATS): c = IndexedContainer() c.addItem(initialId) start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAfter(initialId) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS, times, 'IndexedContainer.addItemAfter()', self._ADD_ITEM_AFTER_FAIL_THRESHOLD)
def testAddItemAfterLastPerformance(self): # TODO running with less items because slow otherwise times = list() for _ in range(self._REPEATS): c = IndexedContainer() c.addItem() start = 1000 * time.time() for _ in range(self._ITEMS): c.addItemAfter(c.lastItemId()) times.append((1000 * time.time()) - start) self.checkMedian(self._ITEMS / 3, times, 'IndexedContainer.addItemAfter(lastId)', self._ADD_ITEM_AFTER_LAST_FAIL_THRESHOLD)
def createDummyData(cls): fnames = ['Peter', 'Alice', 'Joshua', 'Mike', 'Olivia', 'Nina', 'Alex', 'Rita', 'Dan', 'Umberto', 'Henrik', 'Rene', 'Lisa', 'Marge'] lnames = ['Smith', 'Gordon', 'Simpson', 'Brown', 'Clavel', 'Simons', 'Verne', 'Scott', 'Allison', 'Gates', 'Rowling', 'Barks', 'Ross', 'Schneider', 'Tate'] ic = IndexedContainer() for p in cls._fields: ic.addContainerProperty(p, str, '') for _ in range(1000): idd = ic.addItem() fname = fnames[int( len(fnames) * random() )] ic.getContainerProperty(idd, 'First Name').setValue(fname) lname = lnames[int( len(lnames) * random() )] ic.getContainerProperty(idd, 'Last Name').setValue(lname) return ic
def createDummyData(cls): fnames = [ 'Peter', 'Alice', 'Joshua', 'Mike', 'Olivia', 'Nina', 'Alex', 'Rita', 'Dan', 'Umberto', 'Henrik', 'Rene', 'Lisa', 'Marge' ] lnames = [ 'Smith', 'Gordon', 'Simpson', 'Brown', 'Clavel', 'Simons', 'Verne', 'Scott', 'Allison', 'Gates', 'Rowling', 'Barks', 'Ross', 'Schneider', 'Tate' ] ic = IndexedContainer() for p in cls._fields: ic.addContainerProperty(p, str, '') for _ in range(1000): idd = ic.addItem() fname = fnames[int(len(fnames) * random())] ic.getContainerProperty(idd, 'First Name').setValue(fname) lname = lnames[int(len(lnames) * random())] ic.getContainerProperty(idd, 'Last Name').setValue(lname) return ic
def getOrderContainer(cls): container = IndexedContainer() # Create the container properties container.addContainerProperty(cls.ORDER_DESCRIPTION_PROPERTY_ID, str, "") container.addContainerProperty(cls.ORDER_QUANTITY_PROPERTY_ID, int, 0) container.addContainerProperty(cls.ORDER_UNITPRICE_PROPERTY_ID, str, "$0") container.addContainerProperty(cls.ORDER_ITEMPRICE_PROPERTY_ID, str, "$0") # Create some orders cls.addOrderToContainer(container, "Domain Name", 3, 7.99) cls.addOrderToContainer(container, "SSL Certificate", 1, 119.0) cls.addOrderToContainer(container, "Web Hosting", 1, 19.95) cls.addOrderToContainer(container, "Email Box", 20, 0.15) cls.addOrderToContainer(container, "E-Commerce Setup", 1, 25.0) cls.addOrderToContainer(container, "Technical Support", 1, 50.0) return container
def createContainer(cls): """Creates a container with three properties "col1,col2,col3" with 100 items @return: Returns the created table """ container = IndexedContainer() container.addContainerProperty('col1', str, '') container.addContainerProperty('col2', str, '') container.addContainerProperty('col3', str, '') for i in range(100): item = container.addItem('item %d' % i) item.getItemProperty('col1').setValue('first%d' % i) item.getItemProperty('col2').setValue('middle%d' % i) item.getItemProperty('col3').setValue('last%d' % i) return container
def createContainer(cls): """Creates a container with three properties "col1,col2,col3" with 100 items @return: Returns the created table """ container = IndexedContainer() container.addContainerProperty('col1', str, '') container.addContainerProperty('col2', str, '') container.addContainerProperty('col3', str, '') for i in range(100): item = container.addItem('item %d' % i) item.getItemProperty('col1').setValue('first%d' % i) item.getItemProperty('col2').setValue('middle%d' % i) item.getItemProperty('col3').setValue('last%d' % i) return container
def testContainerOrdered(self): c = IndexedContainer() self._testContainerOrdered(c)
def testRemoveSubtree(self): container = ContainerHierarchicalWrapper(IndexedContainer()) self._testRemoveHierarchicalWrapperSubtree(container)
def getISO3166Container(cls): c = IndexedContainer() cls.fillIso3166Container(c) return c
def testItemSetChangeListeners(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) id1 = 'id1' id2 = 'id2' id3 = 'id3' self.initializeContainer(container) counter.reset() container.addItem() counter.assertOnce() container.addItem(id1) counter.assertOnce() self.initializeContainer(container) counter.reset() container.addItemAt(0) counter.assertOnce() container.addItemAt(0, id1) counter.assertOnce() container.addItemAt(0, id2) counter.assertOnce() container.addItemAt(len(container), id3) counter.assertOnce() # no notification if already in container container.addItemAt(0, id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.addItemAfter(None) counter.assertOnce() container.addItemAfter(None, id1) counter.assertOnce() container.addItemAfter(id1) counter.assertOnce() container.addItemAfter(id1, id2) counter.assertOnce() container.addItemAfter(container.firstItemId()) counter.assertOnce() container.addItemAfter(container.lastItemId()) counter.assertOnce() container.addItemAfter(container.lastItemId(), id3) counter.assertOnce() # no notification if already in container container.addItemAfter(0, id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.removeItem(self.sampleData[0]) counter.assertOnce() self.initializeContainer(container) counter.reset() # no notification for removing a non-existing item container.removeItem(id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.removeAllItems() counter.assertOnce() # already empty container.removeAllItems() counter.assertNone()
def testItemSetChangeListenersFiltering(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) counter.reset() container.addContainerFilter(self.FULLY_QUALIFIED_NAME, 'Test', True, False) # no real change, so no notification required counter.assertNone() id1 = 'com.example.Test1' id2 = 'com.example.Test2' id3 = 'com.example.Other' # perform operations while filtering container self.initializeContainer(container) counter.reset() # passes filter item = container.addItem(id1) # no event if filtered out counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() # passes filter but already in the container item = container.addItem(id1) counter.assertNone() self.initializeContainer(container) counter.reset() # passes filter after change item = container.addItemAt(0, id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() item = container.addItemAt(len(container), id2) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id2) counter.assertOnce() # passes filter but already in the container item = container.addItemAt(0, id1) counter.assertNone() item = container.addItemAt(len(container), id2) counter.assertNone() self.initializeContainer(container) counter.reset() # passes filter item = container.addItemAfter(None, id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() item = container.addItemAfter(container.lastItemId(), id2) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id2) counter.assertOnce() # passes filter but already in the container item = container.addItemAfter(None, id1) counter.assertNone() item = container.addItemAfter(container.lastItemId(), id2) counter.assertNone() # does not pass filter # TODO implement rest self.initializeContainer(container) counter.reset() item = container.addItemAfter(None, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAfter(container.firstItemId(), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAfter(container.lastItemId(), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(0, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(1, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(len(container), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() # passes filter self.initializeContainer(container) counter.reset() item = container.addItem(id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() container.removeItem(id1) counter.assertOnce() # already removed container.removeItem(id1) counter.assertNone() item = container.addItem(id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() # not visible container.removeItem(id3) counter.assertNone() # remove all self.initializeContainer(container) item = container.addItem(id1) item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.reset() container.removeAllItems() counter.assertOnce() # no visible items container.removeAllItems() counter.assertNone()
def testAddRemoveContainerFilter(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) # simply adding or removing container filters should cause events # (content changes) self.initializeContainer(container) counter.reset() container.addContainerFilter(self.SIMPLE_NAME, 'a', True, False) counter.assertOnce() container.removeContainerFilters(self.SIMPLE_NAME) counter.assertOnce() container.addContainerFilter(self.SIMPLE_NAME, 'a', True, False) counter.assertOnce() container.removeAllContainerFilters() counter.assertOnce()
def testItemSetChangeListenersFiltering(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) counter.reset() container.addContainerFilter(self.FULLY_QUALIFIED_NAME, 'Test', True, False) # no real change, so no notification required counter.assertNone() id1 = 'com.example.Test1' id2 = 'com.example.Test2' id3 = 'com.example.Other' # perform operations while filtering container self.initializeContainer(container) counter.reset() # passes filter item = container.addItem(id1) # no event if filtered out counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() # passes filter but already in the container item = container.addItem(id1) counter.assertNone() self.initializeContainer(container) counter.reset() # passes filter after change item = container.addItemAt(0, id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() item = container.addItemAt(len(container), id2) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id2) counter.assertOnce() # passes filter but already in the container item = container.addItemAt(0, id1) counter.assertNone() item = container.addItemAt(len(container), id2) counter.assertNone() self.initializeContainer(container) counter.reset() # passes filter item = container.addItemAfter(None, id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() item = container.addItemAfter(container.lastItemId(), id2) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id2) counter.assertOnce() # passes filter but already in the container item = container.addItemAfter(None, id1) counter.assertNone() item = container.addItemAfter(container.lastItemId(), id2) counter.assertNone() # does not pass filter # TODO implement rest self.initializeContainer(container) counter.reset() item = container.addItemAfter(None, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAfter(container.firstItemId(), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAfter(container.lastItemId(), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(0, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(1, id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() self.initializeContainer(container) counter.reset() item = container.addItemAt(len(container), id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() # passes filter self.initializeContainer(container) counter.reset() item = container.addItem(id1) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.assertOnce() container.removeItem(id1) counter.assertOnce() # already removed container.removeItem(id1) counter.assertNone() item = container.addItem(id3) counter.assertNone() item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id3) counter.assertNone() # not visible container.removeItem(id3) counter.assertNone() # remove all self.initializeContainer(container) item = container.addItem(id1) item.getItemProperty(self.FULLY_QUALIFIED_NAME).setValue(id1) counter.reset() container.removeAllItems() counter.assertOnce() # no visible items container.removeAllItems() counter.assertNone()
def testAddRemoveContainerFilter(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) # simply adding or removing container filters should cause events # (content changes) self.initializeContainer(container) counter.reset() container.addContainerFilter(self.SIMPLE_NAME, 'a', True, False) counter.assertOnce() container.removeContainerFilters(self.SIMPLE_NAME) counter.assertOnce() container.addContainerFilter(self.SIMPLE_NAME, 'a', True, False) counter.assertOnce() container.removeAllContainerFilters() counter.assertOnce()
def testBasicOperations(self): c = IndexedContainer() self._testBasicContainerOperations(c)
def testFiltering(self): c = IndexedContainer() self._testContainerFiltering(c)
def testSortingAndFiltering(self): c = IndexedContainer() self._testContainerSortingAndFiltering(c)
def testHierarchicalContainer(self): container = ContainerHierarchicalWrapper(IndexedContainer()) self._testHierarchicalContainer(container)
def testItemSetChangeListeners(self): container = IndexedContainer() counter = ItemSetChangeCounter() container.addListener(counter) id1 = 'id1' id2 = 'id2' id3 = 'id3' self.initializeContainer(container) counter.reset() container.addItem() counter.assertOnce() container.addItem(id1) counter.assertOnce() self.initializeContainer(container) counter.reset() container.addItemAt(0) counter.assertOnce() container.addItemAt(0, id1) counter.assertOnce() container.addItemAt(0, id2) counter.assertOnce() container.addItemAt(len(container), id3) counter.assertOnce() # no notification if already in container container.addItemAt(0, id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.addItemAfter(None) counter.assertOnce() container.addItemAfter(None, id1) counter.assertOnce() container.addItemAfter(id1) counter.assertOnce() container.addItemAfter(id1, id2) counter.assertOnce() container.addItemAfter(container.firstItemId()) counter.assertOnce() container.addItemAfter(container.lastItemId()) counter.assertOnce() container.addItemAfter(container.lastItemId(), id3) counter.assertOnce() # no notification if already in container container.addItemAfter(0, id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.removeItem(self.sampleData[0]) counter.assertOnce() self.initializeContainer(container) counter.reset() # no notification for removing a non-existing item container.removeItem(id1) counter.assertNone() self.initializeContainer(container) counter.reset() container.removeAllItems() counter.assertOnce() # already empty container.removeAllItems() counter.assertNone()
def testContainerIndexed(self): c = IndexedContainer() self._testContainerIndexed(c, self.sampleData[2], 2, True, 'newItemId', True)
def testBasicOperations(self): container = ContainerHierarchicalWrapper(IndexedContainer()) self._testBasicContainerOperations(container)