예제 #1
0
    def test_multiple_cycles_2(self):
        conf = {
            0: [1, 4],
            1: [2],
            2: [0, 3],
            3: [4, 5],
            4: [1, 2],
            5: [4]
        }

        cyc = []
        for i in range(6):
            cyc = utils.walk(
                i,
                functools.partial(WalkTestCase._out, conf),
                cyc
            )

        self.assertEqual(sorted(cyc), sorted([
            [0, 1, 2, 0],
            [0, 4, 1, 2, 0],
            [0, 4, 2, 0],
            [1, 2, 3, 4, 1],
            [1, 2, 3, 5, 4, 1],
            [2, 3, 5, 4, 2],
            [2, 3 ,4, 2]
            ]))
예제 #2
0
    def test_multiple_cycles(self):
        conf = {
            0: [6],
            1: [6],
            2: [0],
            3: [1],
            4: [4],
            5: [3],
            6: [3],
            7: [4],
            8: [0]
        }

        cyc = []
        for i in range(9):
            cyc = utils.walk(
                i,
                functools.partial(WalkTestCase._out, conf),
                cyc
            )

        self.assertEqual(cyc, [
            [1, 6, 3, 1],
            [4, 4]
            ])
예제 #3
0
    def test_cycles_share_border(self):
        conf = {0: [1], 1: [2], 2: [3], 3: [0, 5], 4: [2], 5: [4]}

        cyc = []
        for i in range(6):
            cyc = utils.walk(i, functools.partial(WalkTestCase._out, conf),
                             cyc)

        self.assertEqual(cyc, [[0, 1, 2, 3, 0], [2, 3, 5, 4, 2]])
예제 #4
0
    def test_1_long_cycle(self):
        conf = {0: [1], 1: [2], 2: [3], 3: [4], 4: [5], 5: [1]}

        cyc = []
        for i in range(6):
            cyc = utils.walk(i, functools.partial(WalkTestCase._out, conf),
                             cyc)

        self.assertEqual(cyc, [[1, 2, 3, 4, 5, 1]])
예제 #5
0
    def test_self_cycle(self):
        conf = {
            0: [0]
        }

        cyc = utils.walk(
            0, functools.partial(WalkTestCase._out, conf)
        )
        self.assertEqual(cyc, [[0, 0]])
예제 #6
0
    def test_no_cycle(self):
        conf = {
            0: [1, 2],
            1: [2, 3],
            2: [3, 4],
            3: [4, 5],
            4: [5, 6],
            5: [6, 7],
            6: [7],
            7: []
        }

        cyc = []
        for i in range(8):
            cyc = utils.walk(i, functools.partial(WalkTestCase._out, conf),
                             cyc)

        self.assertEqual(cyc, [])
예제 #7
0
    def test_1_long_cycle(self):
        conf = {
            0: [1],
            1: [2],
            2: [3],
            3: [4],
            4: [5],
            5: [1]
        }

        cyc = []
        for i in range(6):
            cyc = utils.walk(
                i,
                functools.partial(WalkTestCase._out, conf),
                cyc
            )

        self.assertEqual(cyc, [[1, 2, 3, 4, 5, 1]])
예제 #8
0
    def test_no_cycle(self):
        conf = {
            0: [1, 2],
            1: [2, 3],
            2: [3, 4],
            3: [4, 5],
            4: [5, 6],
            5: [6, 7],
            6: [7],
            7: []
        }

        cyc = []
        for i in range(8):
            cyc = utils.walk(
                i,
                functools.partial(WalkTestCase._out, conf),
                cyc
            )

        self.assertEqual(cyc, [])
예제 #9
0
    def test_cycles_share_border(self):
        conf = {
            0: [1],
            1: [2],
            2: [3],
            3: [0, 5],
            4: [2],
            5: [4]
        }

        cyc = []
        for i in range(6):
            cyc = utils.walk(
                i,
                functools.partial(WalkTestCase._out, conf),
                cyc
            )

        self.assertEqual(cyc, [
            [0, 1, 2, 3, 0],
            [2, 3, 5, 4, 2]
            ])