def search(self, object=None, **kw): # , contexts=() ids = getUtility(IIntIds) query = dict(kw) # records for object if object is not None: if type(object) is not type({}): oid = ids.queryId(removeAllProxies(object)) if oid is None: return ResultSet(IFBTree(), getUtility(IAcknowledgements)) query['object'] = {'any_of': (oid, )} else: query['object'] = object # context # if not contexts: # contexts = (getSite(),) # c = [] # for context in contexts: # id = ids.queryId(removeAllProxies(context)) # if id is not None: # c.append(id) # query['contexts'] = {'any_of': c} return ResultSet(self.apply(query), getUtility(IAcknowledgements))
def test_many(self): import random from BTrees.IFBTree import IFBTree N = 15 # number of IFBTrees to feed in L = [] commonkey = N * 1000 allkeys = {commonkey: 1} for i in range(N): t = IFBTree() t[commonkey] = i for j in range(N - i): key = i + j allkeys[key] = 1 t[key] = N * i + j L.append((t, i + 1)) random.shuffle(L) allkeys = sorted(allkeys.keys()) expected = [] for key in allkeys: sum = 0 for t, w in L: if key in t: sum += t[key] * w expected.append((key, sum)) # print 'union', expected got = self._callFUT(L) self.assertEqual(expected, list(got.items()))
def test_scalar_multiply_tree(self): from BTrees.IFBTree import IFBTree x = IFBTree([(1, 2), (2, 3), (3, 4)]) allkeys = list(x.keys()) for factor in 0, 1, 5, 10: result = self._callFUT([(x, factor)]) self.assertEqual(allkeys, list(result.keys())) for key in x.keys(): self.assertEqual(result[key], x[key] * factor)
def test_pairs(self): from BTrees.IFBTree import IFBTree from BTrees.IFBTree import IFBucket t1 = IFBTree([(1, 10), (3, 30), (7, 70)]) t2 = IFBTree([(3, 30), (5, 50), (7, 7), (9, 90)]) allkeys = [1, 3, 5, 7, 9] b1 = IFBucket(t1) b2 = IFBucket(t2) for x in t1, t2, b1, b2: for key in x.keys(): self.assertEqual(key in allkeys, 1) for y in t1, t2, b1, b2: for w1, w2 in (0, 0), (1, 10), (10, 1), (2, 3): expected = [] for key in allkeys: if key in x and key in y: result = x[key] * w1 + y[key] * w2 expected.append((key, result)) expected.sort() got = self._callFUT([(x, w1), (y, w2)]) self.assertEqual(expected, list(got.items())) got = self._callFUT([(y, w2), (x, w1)]) self.assertEqual(expected, list(got.items()))
def _makeOne(self): from BTrees.IFBTree import IFBTree return IFBTree()
def setUp(self): self.t = IFBTree()
def test_identity_tree(self): from BTrees.IFBTree import IFBTree x = IFBTree([(1, 2)]) result = self._callFUT([(x, 1)]) self.assertEqual(len(result), 1) self.assertEqual(list(result.items()), list(x.items()))