def test_select_and_sort_1(self): os = OverloadSelector() os.append(1, (types.Any, types.Boolean)) os.append(2, (types.Boolean, types.Integer)) os.append(3, (types.Boolean, types.Any)) os.append(4, (types.Boolean, types.Boolean)) compats = os._select_compatible((types.boolean, types.boolean)) self.assertEqual(len(compats), 3) ordered, scoring = os._sort_signatures(compats) self.assertEqual(len(ordered), 3) self.assertEqual(len(scoring), 3) self.assertEqual(ordered[0], (types.Boolean, types.Boolean)) self.assertEqual(scoring[types.Boolean, types.Boolean], 0) self.assertEqual(scoring[types.Boolean, types.Any], 1) self.assertEqual(scoring[types.Any, types.Boolean], 1)
def test_select_and_sort_2(self): os = OverloadSelector() os.append(1, (types.Container,)) os.append(2, (types.Sequence,)) os.append(3, (types.MutableSequence,)) os.append(4, (types.List,)) compats = os._select_compatible((types.List,)) self.assertEqual(len(compats), 4) ordered, scoring = os._sort_signatures(compats) self.assertEqual(len(ordered), 4) self.assertEqual(len(scoring), 4) self.assertEqual(ordered[0], (types.List,)) self.assertEqual(scoring[(types.List,)], 0) self.assertEqual(scoring[(types.MutableSequence,)], 1) self.assertEqual(scoring[(types.Sequence,)], 2) self.assertEqual(scoring[(types.Container,)], 3)