Пример #1
0
import configuration.configuration_factory as configuration_factory
import configuration.node as node
import configuration.configuration as configuration
import graph.graph_generator as graph_generator
import algorithm.dijkstra as dijkstra

if __name__ == "__main__":

    node_list = ([
        node.Node(0, 2, is_center=False),  # top line
        node.Node(1, 2, is_center=False),  # top line
        node.Node(2, 2, is_center=False),  # top line
        node.Node(0, 1, is_center=True),  # middle line
        node.Node(1, 1, is_center=True),  # middle line
        node.Node(2, 1, is_center=True),  # middle line
        node.Node(0, 0, is_center=False),  # bottom line
        node.Node(1, 0, is_center=True),  # bottom line
        node.Node(2, 0, is_center=False),  # bottom line
        node.Node(1, -1, is_center=False)
    ])  # ultra bottom line

    num_active_nodes = 6

    # generate all possible configurations (combinations of 6 element active out of a total of 10)
    configurations = configuration_factory.ConfigurationFactory(
    ).get_configurations(node_list, num_active_nodes)
    # config_map = {}
    # for c in configurations:
    #     config_map[c.get_signature()] = c

    # calculate each possible rotations for each configuration
    def test__given_unknown_central_node__when_rotation__then_exception(self):
        node_list = [
            node.Node(0, 2, is_center=False, is_active=False),  # top line
            node.Node(1, 2, is_center=False, is_active=False),  # top line
            node.Node(2, 2, is_center=False, is_active=False),  # top line
            node.Node(0, 1, is_center=True, is_active=True),  # middle line
            node.Node(1, 1, is_center=True, is_active=True),  # middle line
            node.Node(2, 1, is_center=True, is_active=True),  # middle line
            node.Node(0, 0, is_center=False, is_active=False),  # bottom line
            node.Node(1, 0, is_center=True, is_active=True),  # bottom line
            node.Node(2, 0, is_center=False, is_active=True),  # bottom line
            node.Node(1, -1, is_center=False, is_active=True)
        ]  # ultra bottom line

        central_node = node.Node(6, 1)  # unknown node

        conf = configuration.Configuration(node_list)
        with self.assertRaises(ValueError):
            conf.get_rotated_configuration(central_node)
    def test__given_west_rotation_and_south_active__then_rotate(self):
        node_list = [
            node.Node(0, 2, is_center=False, is_active=False),  # top line
            node.Node(1, 2, is_center=False, is_active=False),  # top line
            node.Node(2, 2, is_center=False, is_active=True),  # top line
            node.Node(0, 1, is_center=True, is_active=True),  # middle line
            node.Node(1, 1, is_center=True, is_active=False),  # middle line
            node.Node(2, 1, is_center=True, is_active=True),  # middle line
            node.Node(0, 0, is_center=False, is_active=True),  # bottom line
            node.Node(1, 0, is_center=True, is_active=False),  # bottom line
            node.Node(2, 0, is_center=False, is_active=True),  # bottom line
            node.Node(1, -1, is_center=False, is_active=True)
        ]  # ultra bottom line

        central_node = node.Node(0, 1, is_center=True, is_active=True)

        conf = configuration.Configuration(node_list)
        rotated_conf = conf.get_rotated_configuration(central_node)

        self.assertEqual(True, (node.Node(0, 1, is_center=True, is_active=True)
                                in rotated_conf.nodes))  # center
        self.assertEqual(True,
                         (node.Node(0, 2, is_center=False, is_active=True)
                          in rotated_conf.nodes))  # north
        self.assertEqual(True,
                         (node.Node(1, 1, is_center=True, is_active=False)
                          in rotated_conf.nodes))  # east
        self.assertEqual(True,
                         (node.Node(0, 0, is_center=False, is_active=False)
                          in rotated_conf.nodes))  # south
    def test__given_middle_rotation_and_north_east_active__then_rotate(self):
        node_list = ([
            node.Node(0, 2, is_center=False, is_active=False),
            node.Node(1, 2, is_center=False, is_active=True),
            node.Node(2, 2, is_center=False, is_active=True),
            node.Node(0, 1, is_center=True, is_active=False),
            node.Node(1, 1, is_center=True, is_active=True),
            node.Node(2, 1, is_center=True, is_active=True),
            node.Node(0, 0, is_center=False, is_active=True),
            node.Node(1, 0, is_center=True, is_active=False),
            node.Node(2, 0, is_center=False, is_active=False),
            node.Node(1, -1, is_center=False, is_active=True)
        ])

        central_node = node.Node(1, 1, is_center=True, is_active=True)

        conf = configuration.Configuration(node_list)
        rotated_conf = conf.get_rotated_configuration(central_node)

        self.assertEqual(True, (node.Node(1, 1, is_center=True, is_active=True)
                                in rotated_conf.nodes))  # center
        self.assertEqual(True,
                         (node.Node(1, 2, is_center=False, is_active=False)
                          in rotated_conf.nodes))  # north
        self.assertEqual(True, (node.Node(2, 1, is_center=True, is_active=True)
                                in rotated_conf.nodes))  # east
        self.assertEqual(True, (node.Node(1, 0, is_center=True, is_active=True)
                                in rotated_conf.nodes))  # south
        self.assertEqual(True,
                         (node.Node(0, 1, is_center=True, is_active=False)
                          in rotated_conf.nodes))  # west