Ejemplo n.º 1
0
 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)
Ejemplo n.º 3
0
 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])
Ejemplo n.º 4
0
 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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
    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
        ])
Ejemplo n.º 10
0
 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
Ejemplo n.º 11
0
 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
Ejemplo n.º 12
0
    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
Ejemplo n.º 13
0
    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])
Ejemplo n.º 14
0
 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)
Ejemplo n.º 15
0
    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)
Ejemplo n.º 17
0
 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)
Ejemplo n.º 19
0
 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
Ejemplo n.º 20
0
 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
     ])
Ejemplo n.º 21
0
    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))
Ejemplo n.º 22
0
 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)
Ejemplo n.º 25
0
    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
Ejemplo n.º 26
0
    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
Ejemplo n.º 27
0
    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
Ejemplo n.º 28
0
    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
Ejemplo n.º 29
0
    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
Ejemplo n.º 30
0
 def testContainerOrdered(self):
     c = IndexedContainer()
     self._testContainerOrdered(c)
Ejemplo n.º 31
0
 def testRemoveSubtree(self):
     container = ContainerHierarchicalWrapper(IndexedContainer())
     self._testRemoveHierarchicalWrapperSubtree(container)
Ejemplo n.º 32
0
 def getISO3166Container(cls):
     c = IndexedContainer()
     cls.fillIso3166Container(c)
     return c
Ejemplo n.º 33
0
    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()
Ejemplo n.º 34
0
    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()
Ejemplo n.º 35
0
    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()
Ejemplo n.º 36
0
    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()
Ejemplo n.º 37
0
    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()
Ejemplo n.º 38
0
 def testBasicOperations(self):
     c = IndexedContainer()
     self._testBasicContainerOperations(c)
Ejemplo n.º 39
0
 def testFiltering(self):
     c = IndexedContainer()
     self._testContainerFiltering(c)
Ejemplo n.º 40
0
 def testSortingAndFiltering(self):
     c = IndexedContainer()
     self._testContainerSortingAndFiltering(c)
Ejemplo n.º 41
0
 def testHierarchicalContainer(self):
     container = ContainerHierarchicalWrapper(IndexedContainer())
     self._testHierarchicalContainer(container)
Ejemplo n.º 42
0
    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()
Ejemplo n.º 43
0
 def testContainerIndexed(self):
     c = IndexedContainer()
     self._testContainerIndexed(c, self.sampleData[2], 2, True, 'newItemId',
                                True)
Ejemplo n.º 44
0
 def testBasicOperations(self):
     container = ContainerHierarchicalWrapper(IndexedContainer())
     self._testBasicContainerOperations(container)