def test_remove_by_first_or_second(self): """ Tests for removing elements from the biDict """ pair_first = (1, 'one') pair_second = (2, 'two') bidict = BiDict(pair_first, pair_second) bidict._remove_by_first(pair_first[0]) bidict._remove_by_second(pair_second[1]) missing_first = 0 missing_second = 0 try: bidict._get_by_first(pair_first[0]) except KeyError: missing_first += 1 try: bidict._get_by_first(pair_second[0]) except KeyError: missing_first += 1 try: bidict._get_by_second(pair_first[1]) except KeyError: missing_second += 1 try: bidict._get_by_second(pair_second[1]) except KeyError: missing_second += 1 self.assertEqual(missing_first, 2) self.assertEqual(missing_second, 2)
def test_add_and_gets(self): """ Test for the __init__, _get_by_first, _get_by_second function """ pairs = [(uuid.uuid4(), uuid.uuid4()) for a in xrange(10)] bidict = BiDict(*pairs) for pair in pairs: self.assertEqual(bidict._get_by_first(pair[0]), pair[1]) self.assertEqual(bidict._get_by_second(pair[1]), pair[0])
def __init__(self, *triplets): ''' Creates the TwoKeyDict and optionally populates it with some data @param triplets: tuples for populating the TwoKeyDict. Format: ((key1, key2, data_to_store), ...) ''' super(TwoKeyDict, self).__init__() self._key_to_key_bidict = BiDict() self._primary_to_value = {} for triplet in triplets: self.add(triplet)