diff --git a/src/utils.py b/src/utils.py index 06a4a1e6c..8a13ac2f4 100755 --- a/src/utils.py +++ b/src/utils.py @@ -77,7 +77,8 @@ def abbrev(strings): if abbreviation not in d: d[abbreviation] = s else: - d[abbreviation] = None + if abbreviation not in strings: + d[abbreviation] = None removals = [] for key in d: if d[key] is None: diff --git a/test/utils_test.py b/test/utils_test.py index 09437569e..bffb165ed 100644 --- a/test/utils_test.py +++ b/test/utils_test.py @@ -62,3 +62,18 @@ class UtilsTest(unittest.TestCase): self.assertEqual(utils.distance('a', 'ab'), 1) self.assertEqual(utils.distance('foo', ''), 3) self.assertEqual(utils.distance('', 'foo'), 3) + + def testAbbrev(self): + L = ['abc', 'bcd', 'bbe', 'foo', 'fool'] + d = utils.abbrev(L) + def getItem(s): + return d[s] + self.assertRaises(KeyError, getItem, 'f') + self.assertRaises(KeyError, getItem, 'fo') + self.assertRaises(KeyError, getItem, 'b') + self.assertEqual(d['bb'], 'bbe') + self.assertEqual(d['bc'], 'bcd') + self.assertEqual(d['a'], 'abc') + self.assertEqual(d['ab'], 'abc') + self.assertEqual(d['fool'], 'fool') + self.assertEqual(d['foo'], 'foo')