def test_multikey_sorting_with_list_of_dicts(self): expected_result = [ {'name': 'abc', 'version': '1.2.10'}, {'name': 'abc', 'version': '1.2.2'}, {'name': 'abc', 'version': '1.3.2'}, {'name': 'def', 'version': '1.2.10'}, {'name': 'def', 'version': '1.2.2'}, ] assert(natural_sort._multi_key_sort(self.dicts_to_sort, ('name', 'version')) == expected_result)
def test_multikey_sorting_with_list_of_dicts_and_normalizing_functions(self): expected_result = [ {'name': 'abc', 'version': '1.2.2'}, {'name': 'abc', 'version': '1.2.10'}, {'name': 'abc', 'version': '1.3.2'}, {'name': 'def', 'version': '1.2.2'}, {'name': 'def', 'version': '1.2.10'}, ] def convert(text): try: return int(text) except ValueError: return text functions = { 'name': lambda x: x, 'version': lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ] } result = natural_sort._multi_key_sort(self.dicts_to_sort, ('name', 'version'), functions) assert(result == expected_result)