def testFetchingResults(self): def got_hit(result): got_hit._results_.append(result.displayString) got_hit._results_ = [] context = QgsLocatorContext() # one filter l = QgsLocator() filter_a = test_filter('a') l.registerFilter(filter_a) l.foundResult.connect(got_hit) l.fetchResults('a', context) for i in range(100): sleep(0.002) QCoreApplication.processEvents() self.assertEqual(set(got_hit._results_), {'a0', 'a1', 'a2'}) # two filters filter_b = test_filter('b') l.registerFilter(filter_b) got_hit._results_ = [] l.fetchResults('a', context) for i in range(100): sleep(0.002) QCoreApplication.processEvents() self.assertEqual(set(got_hit._results_), {'a0', 'a1', 'a2', 'b0', 'b1', 'b2'})
def testDeleteWhileFetchingResults(self): """ Delete locator whilst fetching results """ def got_hit(result): got_hit._results_.append(result.displayString) got_hit._results_ = [] context = QgsLocatorContext() l = QgsLocator() filter_a = test_filter('a') l.registerFilter(filter_a) l.foundResult.connect(got_hit) l.fetchResults('a', context) del l
def testCancelWhileFetchingResults(self): """ Cancel locator whilst fetching results """ def got_hit(result): got_hit._results_.append(result.displayString) got_hit._results_ = [] context = QgsLocatorContext() l = QgsLocator() filter_a = test_filter('a') l.registerFilter(filter_a) l.foundResult.connect(got_hit) l.fetchResults('a', context) l.cancel()
def testRegisteringFilters(self): l = QgsLocator() filter_a = test_filter('a') filter_b = test_filter('b') l.registerFilter(filter_a) l.registerFilter(filter_b) self.assertEqual(set(l.filters()), {filter_a, filter_b}) # ownership should be transferred to locator del l self.assertTrue(sip.isdeleted(filter_a)) self.assertTrue(sip.isdeleted(filter_b)) # try manually deregistering l = QgsLocator() filter_c = test_filter('c') filter_d = test_filter('d') l.registerFilter(filter_c) l.registerFilter(filter_d) self.assertEqual(set(l.filters()), {filter_c, filter_d}) l.deregisterFilter(filter_c) self.assertTrue(sip.isdeleted(filter_c)) self.assertFalse(sip.isdeleted(filter_d)) self.assertEqual(l.filters(), [filter_d]) del l self.assertTrue(sip.isdeleted(filter_c)) self.assertTrue(sip.isdeleted(filter_d))