diff --git a/pyactiveresource/util.py b/pyactiveresource/util.py index 3c33783..f213a14 100644 --- a/pyactiveresource/util.py +++ b/pyactiveresource/util.py @@ -62,8 +62,9 @@ def date_parse(time_string): (r'(matr|vert|ind)(?:ix|ex)$', r'\1ices'), (r'(x|ch|ss|sh)$', r'\1es'), (r'([^aeiouy]|qu)y$', r'\1ies'), - (r'(hive)$', r'1s'), - (r'(?:([^f])fe|([lr])f)$', r'\1\2ves'), + (r'(hive)$', r'\1s'), + (r'([lr])f$', r'\1ves'), + (r'([^f])fe$', r'\1ves'), (r'sis$', r'ses'), (r'([ti])um$', r'\1a'), (r'(buffal|tomat)o$', r'\1oes'), diff --git a/test/util_test.py b/test/util_test.py index 8931f34..52f12b8 100644 --- a/test/util_test.py +++ b/test/util_test.py @@ -407,6 +407,44 @@ def test_camelize(self): result = util.camelize(noncamel_input) self.assertEquals(result, expected) + def test_regular_pluralize(self): + input_expected = { + "quiz": "quizzes", + "ox": "oxen", + "mouse": "mice", + "louse": "lice", + "matrix": "matrices", + "vertex": "vertices", + "index": "indices", + "sex": "sexes", + "torch": "torches", + "kiss": "kisses", + "brush": "brushes", + "colloquy": "colloquies", + "baby": "babies", + "hive": "hives", + "knife": "knives", + "wolf": "wolves", + "scarf": "scarves", + "stasis": "stases", + "ultimatum": "ultimata", + "stadium": "stadia", + "buffalo": "buffaloes", + "tomato": "tomatoes", + "aerobus": "aerobuses", + "alias": "aliases", + "status": "statuses", + "octopus": "octopi", + "virus": "viri", + "axis": "axes", + "testis": "testes", + "cup": "cups", + "giraffe": "giraffes", + } + for singular_input, expected in input_expected.items(): + result = util.pluralize(singular_input) + self.assertEquals(result, expected) + if __name__ == '__main__': unittest.main()