Beispiel #1
0
    def pair_must_have_only_either_member_of_last_pair(
            self, last_pairs: Pairs,
            pair_trees: List[PairTree]) -> List[PairTree]:
        if not last_pairs:
            return pair_trees

        return [
            PairTree(
                tree.pair,
                self.pair_must_have_only_either_member_of_last_pair(
                    last_pairs.tail(), tree.remainder)) for tree in pair_trees
            if tree.pair.only_has_either(last_pairs[0]) and (
                not last_pairs.tail() or (last_pairs.tail(
                ) and self.pair_must_have_only_either_member_of_last_pair(
                    last_pairs.tail(), tree.remainder)))
        ]
Beispiel #2
0
class PairsTest(TestCase):
    def setUp(self):
        self.pairs = Pairs(
            [Pair(Member('a'), Member('b')),
             Pair(Member('c'), None)])

        self.one_pairs = Pairs([Pair(Member('a'), Member('b'))])

        self.empty_pairs = Pairs([])

    def test_getitem__pairs(self):
        self.assertEqual(self.pairs[1], Pair(Member('c'), None))

    def test_tail__pairs(self):
        self.assertEqual(self.pairs.tail(), Pairs([Pair(Member('c'), None)]))

    def test_tail__one_pairs(self):
        self.assertEqual(self.one_pairs.tail(), Pairs([]))

    def test_tail__empty_pairs(self):
        self.assertEqual(self.one_pairs.tail(), Pairs([]))

    def test_in__pairs(self):
        self.assertTrue(Pair(Member('c'), None) in self.pairs)

    def test_have_same__pairs(self):
        self.assertTrue(
            self.pairs.have_same(
                Pairs(
                    [Pair(Member('x'), Member('y')),
                     Pair(Member('c'), None)])))

    def test_have_same__pairs2(self):
        self.assertTrue(not self.pairs.have_same(
            Pairs([Pair(Member('x'), Member('y')),
                   Pair(Member('z'), None)])))