273
306
def test_add_node_bad_key(self):
274
builder = index.GraphIndexBuilder()
307
builder = _mod_index.GraphIndexBuilder()
275
308
for bad_char in '\t\n\x0b\x0c\r\x00 ':
276
self.assertRaises(errors.BadIndexKey, builder.add_node,
309
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
277
310
('a%skey' % bad_char, ), 'data')
278
self.assertRaises(errors.BadIndexKey, builder.add_node,
311
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
280
self.assertRaises(errors.BadIndexKey, builder.add_node,
313
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
281
314
'not-a-tuple', 'data')
282
315
# not enough length
283
self.assertRaises(errors.BadIndexKey, builder.add_node,
316
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
286
self.assertRaises(errors.BadIndexKey, builder.add_node,
319
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
287
320
('primary', 'secondary'), 'data')
288
321
# secondary key elements get checked too:
289
builder = index.GraphIndexBuilder(key_elements=2)
322
builder = _mod_index.GraphIndexBuilder(key_elements=2)
290
323
for bad_char in '\t\n\x0b\x0c\r\x00 ':
291
self.assertRaises(errors.BadIndexKey, builder.add_node,
324
self.assertRaises(_mod_index.BadIndexKey, builder.add_node,
292
325
('prefix', 'a%skey' % bad_char), 'data')
294
327
def test_add_node_bad_data(self):
295
builder = index.GraphIndexBuilder()
296
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
328
builder = _mod_index.GraphIndexBuilder()
329
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
298
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
331
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
301
334
def test_add_node_bad_mismatched_ref_lists_length(self):
302
builder = index.GraphIndexBuilder()
303
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
335
builder = _mod_index.GraphIndexBuilder()
336
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
304
337
'data aa', ([], ))
305
builder = index.GraphIndexBuilder(reference_lists=1)
306
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
338
builder = _mod_index.GraphIndexBuilder(reference_lists=1)
339
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
308
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
341
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
310
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
343
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
311
344
'data aa', ([], []))
312
builder = index.GraphIndexBuilder(reference_lists=2)
313
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
345
builder = _mod_index.GraphIndexBuilder(reference_lists=2)
346
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
315
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
348
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
316
349
'data aa', ([], ))
317
self.assertRaises(errors.BadIndexValue, builder.add_node, ('akey', ),
350
self.assertRaises(_mod_index.BadIndexValue, builder.add_node, ('akey', ),
318
351
'data aa', ([], [], []))
320
353
def test_add_node_bad_key_in_reference_lists(self):
321
354
# first list, first key - trivial
322
builder = index.GraphIndexBuilder(reference_lists=1)
323
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
355
builder = _mod_index.GraphIndexBuilder(reference_lists=1)
356
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
324
357
'data aa', ([('a key', )], ))
325
358
# references keys must be tuples too
326
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
359
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
327
360
'data aa', (['not-a-tuple'], ))
328
361
# not enough length
329
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
362
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
330
363
'data aa', ([()], ))
332
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
365
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
333
366
'data aa', ([('primary', 'secondary')], ))
334
367
# need to check more than the first key in the list
335
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
368
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
336
369
'data aa', ([('agoodkey', ), ('that is a bad key', )], ))
337
370
# and if there is more than one list it should be getting checked
339
builder = index.GraphIndexBuilder(reference_lists=2)
340
self.assertRaises(errors.BadIndexKey, builder.add_node, ('akey', ),
372
builder = _mod_index.GraphIndexBuilder(reference_lists=2)
373
self.assertRaises(_mod_index.BadIndexKey, builder.add_node, ('akey', ),
341
374
'data aa', ([], ['a bad key']))
343
376
def test_add_duplicate_key(self):
344
builder = index.GraphIndexBuilder()
377
builder = _mod_index.GraphIndexBuilder()
345
378
builder.add_node(('key', ), 'data')
346
self.assertRaises(errors.BadIndexDuplicateKey,
379
self.assertRaises(_mod_index.BadIndexDuplicateKey,
347
380
builder.add_node, ('key', ), 'data')
349
382
def test_add_duplicate_key_2_elements(self):
350
builder = index.GraphIndexBuilder(key_elements=2)
383
builder = _mod_index.GraphIndexBuilder(key_elements=2)
351
384
builder.add_node(('key', 'key'), 'data')
352
self.assertRaises(errors.BadIndexDuplicateKey, builder.add_node,
385
self.assertRaises(_mod_index.BadIndexDuplicateKey, builder.add_node,
353
386
('key', 'key'), 'data')
355
388
def test_add_key_after_referencing_key(self):
356
builder = index.GraphIndexBuilder(reference_lists=1)
389
builder = _mod_index.GraphIndexBuilder(reference_lists=1)
357
390
builder.add_node(('key', ), 'data', ([('reference', )], ))
358
391
builder.add_node(('reference', ), 'data', ([],))
360
393
def test_add_key_after_referencing_key_2_elements(self):
361
builder = index.GraphIndexBuilder(reference_lists=1, key_elements=2)
394
builder = _mod_index.GraphIndexBuilder(reference_lists=1, key_elements=2)
362
395
builder.add_node(('k', 'ey'), 'data', ([('reference', 'tokey')], ))
363
396
builder.add_node(('reference', 'tokey'), 'data', ([],))
365
398
def test_set_optimize(self):
366
builder = index.GraphIndexBuilder(reference_lists=1, key_elements=2)
399
builder = _mod_index.GraphIndexBuilder(reference_lists=1, key_elements=2)
367
400
builder.set_optimize(for_size=True)
368
401
self.assertTrue(builder._optimize_for_size)
369
402
builder.set_optimize(for_size=False)
1222
1255
([('ref', )], )),
1223
1256
(('ref', ), 'refdata', ([], ))])
1224
1257
idx2 = self.make_index('2', 1, nodes=[(('ref', ), 'refdata', ([], ))])
1225
idx = index.CombinedGraphIndex([idx1, idx2])
1258
idx = _mod_index.CombinedGraphIndex([idx1, idx2])
1226
1259
self.assertEqual({(idx1, ('name', ), 'data', ((('ref',),),)),
1227
1260
(idx1, ('ref', ), 'refdata', ((), ))},
1228
1261
set(idx.iter_entries([('name', ), ('ref', )])))
1230
1263
def test_iter_missing_entry_empty(self):
1231
idx = index.CombinedGraphIndex([])
1264
idx = _mod_index.CombinedGraphIndex([])
1232
1265
self.assertEqual([], list(idx.iter_entries([('a', )])))
1234
1267
def test_iter_missing_entry_one_index(self):
1235
1268
idx1 = self.make_index('1')
1236
idx = index.CombinedGraphIndex([idx1])
1269
idx = _mod_index.CombinedGraphIndex([idx1])
1237
1270
self.assertEqual([], list(idx.iter_entries([('a', )])))
1239
1272
def test_iter_missing_entry_two_index(self):
1240
1273
idx1 = self.make_index('1')
1241
1274
idx2 = self.make_index('2')
1242
idx = index.CombinedGraphIndex([idx1, idx2])
1275
idx = _mod_index.CombinedGraphIndex([idx1, idx2])
1243
1276
self.assertEqual([], list(idx.iter_entries([('a', )])))
1245
1278
def test_iter_entry_present_one_index_only(self):
1246
1279
idx1 = self.make_index('1', nodes=[(('key', ), '', ())])
1247
1280
idx2 = self.make_index('2', nodes=[])
1248
idx = index.CombinedGraphIndex([idx1, idx2])
1281
idx = _mod_index.CombinedGraphIndex([idx1, idx2])
1249
1282
self.assertEqual([(idx1, ('key', ), '')],
1250
1283
list(idx.iter_entries([('key', )])))
1251
1284
# and in the other direction
1252
idx = index.CombinedGraphIndex([idx2, idx1])
1285
idx = _mod_index.CombinedGraphIndex([idx2, idx1])
1253
1286
self.assertEqual([(idx1, ('key', ), '')],
1254
1287
list(idx.iter_entries([('key', )])))
1256
1289
def test_key_count_empty(self):
1257
1290
idx1 = self.make_index('1', nodes=[])
1258
1291
idx2 = self.make_index('2', nodes=[])
1259
idx = index.CombinedGraphIndex([idx1, idx2])
1292
idx = _mod_index.CombinedGraphIndex([idx1, idx2])
1260
1293
self.assertEqual(0, idx.key_count())
1262
1295
def test_key_count_sums_index_keys(self):