def test_add_lowercase_tuple(self): """add_lowercase should deal with tuples correctly""" d = {("A", "B"): "C", ("D", "e"): "F", ("b", "c"): "H"} add_lowercase(d) self.assertEqual( d, { ("A", "B"): "C", ("a", "b"): "c", ("D", "e"): "F", ("d", "e"): "f", ("b", "c"): "H", }, )
def test_add_lowercase(self): """add_lowercase should add lowercase version of each key w/ same val""" d = { "a": 1, "b": "test", "A": 5, "C": 123, "D": [], "AbC": "XyZ", None: "3", "$": "abc", 145: "5", } add_lowercase(d) assert d["d"] is d["D"] d["D"].append(3) self.assertEqual(d["D"], [3]) self.assertEqual(d["d"], [3]) self.assertNotEqual(d["a"], d["A"]) self.assertEqual( d, { "a": 1, "b": "test", "A": 5, "C": 123, "c": 123, "D": [3], "d": [3], "AbC": "XyZ", "abc": "xyz", None: "3", "$": "abc", 145: "5", }, ) # should work with strings d = "ABC" self.assertEqual(add_lowercase(d), "ABCabc") # should work with tuples d = tuple("ABC") self.assertEqual(add_lowercase(d), tuple("ABCabc")) # should work with lists d = list("ABC") self.assertEqual(add_lowercase(d), list("ABCabc")) # should work with sets d = set("ABC") self.assertEqual(add_lowercase(d), set("ABCabc")) # ...even frozensets d = frozenset("ABC") self.assertEqual(add_lowercase(d), frozenset("ABCabc"))
def _add_lowercase(self): """Adds lowercase versions of keys and vals to each internal dict.""" for name in [ "alphabet", "degenerates", "gaps", "complements", "pairs", "matches", ]: curr = getattr(self, name) # temp hack to get around re-ordering if isinstance(curr, Alphabet): curr = tuple(curr) new = add_lowercase(curr) setattr(self, name, new)