~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_index.py

Also add iter_key_prefix support to InMemoryGraphIndex.

Show diffs side-by-side

added added

removed removed

Lines of Context:
635
635
 
636
636
class TestInMemoryGraphIndex(TestCaseWithMemoryTransport):
637
637
 
638
 
    def make_index(self, ref_lists=0, nodes=[]):
639
 
        result = InMemoryGraphIndex(ref_lists)
 
638
    def make_index(self, ref_lists=0, key_elements=1, nodes=[]):
 
639
        result = InMemoryGraphIndex(ref_lists, key_elements=key_elements)
640
640
        result.add_nodes(nodes)
641
641
        return result
642
642
 
694
694
            (('ref', ), 'refdata', ((), ))]),
695
695
            set(index.iter_entries([('name', ), ('ref', )])))
696
696
 
 
697
    def test_iter_key_prefix_1_key_element_no_refs(self):
 
698
        index = self.make_index( nodes=[
 
699
            (('name', ), 'data'),
 
700
            (('ref', ), 'refdata')])
 
701
        self.assertEqual(set([(('name', ), 'data'),
 
702
            (('ref', ), 'refdata')]),
 
703
            set(index.iter_entries_prefix([('name', ), ('ref', )])))
 
704
 
 
705
    def test_iter_key_prefix_1_key_element_refs(self):
 
706
        index = self.make_index(1, nodes=[
 
707
            (('name', ), 'data', ([('ref', )], )),
 
708
            (('ref', ), 'refdata', ([], ))])
 
709
        self.assertEqual(set([(('name', ), 'data', ((('ref',),),)),
 
710
            (('ref', ), 'refdata', ((), ))]),
 
711
            set(index.iter_entries_prefix([('name', ), ('ref', )])))
 
712
 
 
713
    def test_iter_key_prefix_2_key_element_no_refs(self):
 
714
        index = self.make_index(key_elements=2, nodes=[
 
715
            (('name', 'fin1'), 'data'),
 
716
            (('name', 'fin2'), 'beta'),
 
717
            (('ref', 'erence'), 'refdata')])
 
718
        self.assertEqual(set([(('name', 'fin1'), 'data'),
 
719
            (('ref', 'erence'), 'refdata')]),
 
720
            set(index.iter_entries_prefix([('name', 'fin1'), ('ref', 'erence')])))
 
721
        self.assertEqual(set([(('name', 'fin1'), 'data'),
 
722
            (('name', 'fin2'), 'beta')]),
 
723
            set(index.iter_entries_prefix([('name', None)])))
 
724
 
 
725
    def test_iter_key_prefix_2_key_element_refs(self):
 
726
        index = self.make_index(1, key_elements=2, nodes=[
 
727
            (('name', 'fin1'), 'data', ([('ref', 'erence')], )),
 
728
            (('name', 'fin2'), 'beta', ([], )),
 
729
            (('ref', 'erence'), 'refdata', ([], ))])
 
730
        self.assertEqual(set([(('name', 'fin1'), 'data', ((('ref', 'erence'),),)),
 
731
            (('ref', 'erence'), 'refdata', ((), ))]),
 
732
            set(index.iter_entries_prefix([('name', 'fin1'), ('ref', 'erence')])))
 
733
        self.assertEqual(set([(('name', 'fin1'), 'data', ((('ref', 'erence'),),)),
 
734
            (('name', 'fin2'), 'beta', ((), ))]),
 
735
            set(index.iter_entries_prefix([('name', None)])))
 
736
 
697
737
    def test_iter_nothing_empty(self):
698
738
        index = self.make_index()
699
739
        self.assertEqual([], list(index.iter_entries([])))