def test_simple_haus_kabel(): haus = Haus() yaml = simple_haus.define_testcase() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) read_kabel(haus, yaml["kabel"]) autogenerate_kabel(haus) create_nodes_from_walls(haus) create_nodes_from_connectors(haus) associate_objects_to_walls_and_nodes(haus) calc_wires(haus) create_roombook(haus) assert len(haus.kabel) == 7 # explicit cable assert haus.kabel[0].start == "1.1.1" assert len(haus.kabel[0].end) == 3 assert haus.kabel[0].end[0] == "2.2.3" assert haus.kabel[0].end[1] == "2.2.4" assert haus.kabel[0].end[2] == "2.2.5" assert haus.kabel[0].length == approx(9.4) # impicit definde cabels assert haus.kabel[1].start == "1.1.1" assert len(haus.kabel[1].end) == 1 assert haus.kabel[1].end[0] == "1.1.2" assert haus.kabel[1].type == KabelType.NYM5x15 assert haus.kabel[1].length == approx(3.4) assert haus.kabel[2].length == approx(3.6) assert haus.kabel[3].end[0] == "2.1.1" # directly above it assert haus.kabel[3].length == approx(2.8) assert haus.kabel[4].length == approx(5.6)
def test_cable_with_connector(): haus = ( simple_haus.HausCreator() .geschoss() .wall(0, 0, 40, 400) .wall(0, 0, 400, 40) .wall(360, 0, 40, 400) .con(0, 250, 0, 400, 0, 0) .room() .Steckdose(40, 200) .Steckdose(360, 200) .get_house() ) haus2 = copy.deepcopy(haus) create_nodes_from_walls(haus) assert len(haus.nodes) == 12 associate_objects_to_walls_and_nodes(haus) assert len(haus.nodes) == 12 + 3 * 2 autogenerate_kabel(haus) assert len(haus.kabel) == 1 calc_wires(haus) assert haus.kabel[-1].length > 7.9 create_nodes_from_walls(haus2) associate_objects_to_walls_and_nodes(haus2) autogenerate_kabel(haus2) create_nodes_from_connectors(haus2) assert len(haus2.nodes) == 12 + 3 * 2 + 2 calc_wires(haus2) assert haus2.kabel[-1].length < 7.9
def read_setup(yaml_file): with open(yaml_file, "r") as stream: data = yaml.safe_load(stream) # print("Reading Setup for {}".format(data["config"]["name"])) folder = os.path.dirname(os.path.abspath(yaml_file)) + "/" file_anschluesse = folder + data["config"]["anschluesse"] file_struktur = folder + data["config"]["struktur"] file_kabel = folder + data["config"]["kabel"] if not os.path.isfile(file_struktur): raise RuntimeError("File not found: {}".format(file_struktur)) if not os.path.isfile(file_anschluesse): raise RuntimeError("File not found: {}".format(file_anschluesse)) if not os.path.isfile(file_kabel): raise RuntimeError("File not found: {}".format(file_kabel)) haus = Haus() # Read YAML filess with open(file_struktur, "r") as stream: yaml_struktur = yaml.safe_load(stream) with open(file_anschluesse, "r") as stream: yaml_anschluesse = yaml.safe_load(stream) with open(file_kabel, "r") as stream: yaml_kabel = yaml.safe_load(stream) read_struktur(haus, yaml_struktur) read_anschluesse(haus, yaml_anschluesse) read_kabel(haus, yaml_kabel) autogenerate_kabel(haus) create_nodes_from_walls(haus) create_nodes_from_connectors(haus) return haus
def test_single_wall_kabel(): haus = Haus() yaml = simple_haus.single_wall() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) associate_objects_to_walls_and_nodes(haus) autogenerate_kabel(haus, False) calc_wires(haus)
def test_single_wall(): haus = Haus() yaml = simple_haus.single_wall() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) associate_objects_to_walls_and_nodes(haus) assert len(haus.nodes) == 10 for g in haus.geschosse: for r in g.rooms: for o in r.objects: assert o.associated_node != None
def test_connector_waagrecht(): haus = (simple_haus.HausCreator().geschoss().wall(0, 0, 40, 400).wall( 0, 0, 400, 40).wall(360, 0, 40, 400).con(0, 250, 0, 400, 0, 0).room().Steckdose(40, 200).Steckdose(360, 200).get_house()) create_nodes_from_walls(haus) assert len(haus.nodes) == 12 create_nodes_from_connectors(haus) assert len(haus.nodes) == 14 assert haus.geschosse[-1].nodes[13].is_connected( haus.geschosse[-1].nodes[12])
def test_autogen_kabel_with_astar_len_calc(): haus = Haus() yaml = simple_haus.define_testcase() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) # read_kabel(haus,yaml["kabel"]) autogenerate_kabel(haus) create_nodes_from_walls(haus) assert len(haus.nodes) == 8 + 16 haus.geschosse[0].nodes[4].connect(haus.geschosse[1].nodes[0]) associate_objects_to_walls_and_nodes(haus) calc_wires(haus) create_roombook(haus)
def test_decke(): haus = ( simple_haus.HausCreator() .geschoss() .wall(0, 0, 40, 400) .wall(0, 0, 400, 40) .wall(200, 0, 40, 400) .wall(360, 0, 40, 400) .room() .Steckdose(0, 200) .Steckdose(40, 200) .Lampe(300, 200) .get_house() ) create_nodes_from_walls(haus) associate_objects_to_walls_and_nodes(haus)
def test_connector_senkrecht(): haus = (simple_haus.HausCreator().geschoss().wall( 0, 0, 40, 400).room().Steckdose(40, 200).geschoss().wall( 0, 0, 40, 400).room().Steckdose(40, 200).con(0, 250, 100, 0, 0, 300).get_house()) create_nodes_from_walls(haus) assert len(haus.nodes) == 8 create_nodes_from_connectors(haus) assert len(haus.nodes) == 10 assert len(haus.geschosse[0].walls[0].nodes) == 5 assert len(haus.geschosse[0].walls[0].nodes[4].get_connected_nodes()) == 3 assert (haus.geschosse[0].walls[0].nodes[4].is_connected( haus.geschosse[0].walls[0].nodes[2])) assert (haus.geschosse[0].walls[0].nodes[4].is_connected( haus.geschosse[0].walls[0].nodes[3])) assert len(haus.geschosse[1].walls[0].nodes) == 5
def test_single_wall_with_obj_at_diff_sides_of_wall_same_pos(): haus = ( simple_haus.HausCreator() .geschoss() .wall(0, 0, 40, 400) .room() .Steckdose(0, 200) .Steckdose(40, 200) .get_house() ) assert len(haus.geschosse) == 1 assert len(haus.geschosse[-1].rooms) == 1 assert len(haus.geschosse[-1].walls) == 1 assert len(haus.geschosse[-1].rooms[-1].objects) == 2 create_nodes_from_walls(haus) assert len(haus.nodes) == 4 associate_objects_to_walls_and_nodes(haus) assert len(haus.nodes) == 10
def test_simple_haus_kabel(): haus = Haus() yaml = simple_haus.define_testcase_simple1() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) associate_objects_to_walls_and_nodes(haus) assert ( haus.geschosse[0].rooms[0].objects[0].associated_wall == haus.geschosse[0].walls[1] ) assert ( haus.geschosse[0].rooms[0].objects[1].associated_wall == haus.geschosse[0].walls[0] ) # object 2 is added first becaus eit is on wall 1 assert haus.geschosse[0].rooms[0].objects[1].associated_node.id == haus.nodes[10].id assert haus.geschosse[0].rooms[0].objects[0].associated_node.id == haus.nodes[13].id assert len(haus.geschosse[0].walls[0].nodes) == 7 # 2 ---------- 5 --------- 3 # | | | # | | | # | 6 | # | | | # | | | # 0 ---------- 4 --------- 1 nodes = haus.geschosse[0].walls[0].nodes # connection to the new edge on the "floor" assert nodes[0].get_connected_nodes()[0].id == nodes[4].id # connection to the upper egde assert nodes[0].get_connected_nodes()[2].id == nodes[2].id # new edge on floor is connected to object edge assert nodes[4].get_connected_nodes()[2].id == nodes[6].id assert nodes[6].get_connected_nodes()[0].id == nodes[4].id assert nodes[6].get_connected_nodes()[1].id == nodes[5].id
def test_astar(): haus = Haus() yaml = simple_haus.define_testcase_simple1() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) associate_objects_to_walls_and_nodes(haus) autogenerate_kabel(haus) assert len(haus.kabel) == 1 get_kabel_objects(haus, haus.kabel[0]) path = calc_kabel_len(haus.kabel[0]) assert len(path) == 6 for e in path: print("EDGE: {}".format(e)) assert haus.kabel[0].length == approx( (40 + 240 + 2 * sqrt(10**2 + 30**2)) * 0.01)
def test_indirect_connection(): haus = Haus() yaml = simple_haus.define_testcase() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) assert len(haus.nodes) == 8 + 16 assert len(haus.geschosse[0].nodes) == 8 assert len(haus.geschosse[1].nodes) == 16 associate_objects_to_walls_and_nodes(haus) haus.kabel.append(Kabel("2.1.2", "2.2.2")) calc_wires(haus) create_roombook(haus) assert haus.kabel[0].start == "2.1.2" assert haus.kabel[0].end[0] == "2.2.2" # assert haus.kabel[0].length == approx(1 + 1.5) # path = calc_kabel_len(haus, haus.kabel[0]) # for e in path: # print(e) # assert len(path) == 8 print(haus.kabel[0]) assert haus.kabel[0].length == approx(2.4 + 1.0 + 0.9 + 1.0)
def test_read_struktur(): haus = Haus() yaml = simple_haus.define_testcase() read_struktur(haus, yaml["struktur"]) read_anschluesse(haus, yaml["anschluesse"]) create_nodes_from_walls(haus) create_svg(haus) assert len(haus.nodes) == 24 assert len(haus.geschosse) == 2 assert len(haus.geschosse[0].walls) == 2 nodes = haus.geschosse[0].nodes assert len(nodes) == 8 # for e in nodes: # print("Edge: {}".format(e)) # for c in e.get_connected_nodes(): # print("-- connected to {}".format(c)) assert len(nodes[0].get_connected_nodes()) == 3 assert nodes[0].get_connected_nodes()[0] == nodes[1] assert nodes[0].get_connected_nodes()[1] == nodes[2] assert nodes[0].get_connected_nodes()[2] == nodes[4] assert len(nodes[1].get_connected_nodes()) == 2 assert nodes[1].get_connected_nodes()[0] == nodes[0] assert nodes[1].get_connected_nodes()[1] == nodes[5] assert len(nodes[2].get_connected_nodes()) == 3 assert nodes[2].get_connected_nodes()[0] == nodes[3] assert nodes[2].get_connected_nodes()[1] == nodes[0] assert nodes[2].get_connected_nodes()[2] == nodes[6] assert len(nodes[3].get_connected_nodes()) == 2 assert nodes[3].get_connected_nodes()[0] == nodes[2] assert nodes[3].get_connected_nodes()[1] == nodes[7] # upper nodes assert len(nodes[4].get_connected_nodes()) == 3 assert nodes[4].get_connected_nodes()[0] == nodes[0] assert nodes[4].get_connected_nodes()[1] == nodes[5] assert nodes[4].get_connected_nodes()[2] == nodes[6] assert len(nodes[5].get_connected_nodes()) == 2 assert nodes[5].get_connected_nodes()[0].id == nodes[4].id assert nodes[5].get_connected_nodes()[1].id == nodes[1].id assert len(nodes[6].get_connected_nodes()) == 3 assert nodes[6].get_connected_nodes()[0] == nodes[4] assert nodes[6].get_connected_nodes()[1] == nodes[2] assert nodes[6].get_connected_nodes()[2] == nodes[7] assert len(nodes[7].get_connected_nodes()) == 2 assert nodes[7].get_connected_nodes()[0] == nodes[6] assert nodes[7].get_connected_nodes()[1] == nodes[3] ## obergeschoss assert len(haus.geschosse[1].walls) == 4 nodes = haus.geschosse[1].nodes assert len(nodes) == 16 for i, e in enumerate(nodes): print("Node: {}".format(e)) for c in e.get_connected_nodes(): print("-- connected to {}".format(c)) if i < 8: # nodes at bottom of the wall assert e.z == 250 else: # nodes at top of the wall assert e.z == 550 assert len(nodes[0].get_connected_nodes()) == 3 assert nodes[0].get_connected_nodes()[0].id == nodes[1].id assert nodes[0].get_connected_nodes()[1].id == nodes[2].id assert nodes[0].get_connected_nodes()[2].id == nodes[8].id assert len(nodes[1].get_connected_nodes()) == 2 assert nodes[1].get_connected_nodes()[0].id == nodes[0].id assert nodes[1].get_connected_nodes()[1].id == nodes[9].id assert len(nodes[2].get_connected_nodes()) == 3 assert nodes[2].get_connected_nodes()[0].id == nodes[6].id assert nodes[2].get_connected_nodes()[1].id == nodes[0].id assert nodes[2].get_connected_nodes()[2].id == nodes[10].id assert len(nodes[3].get_connected_nodes()) == 3 assert nodes[3].get_connected_nodes()[0].id == nodes[4].id assert nodes[3].get_connected_nodes()[1].id == nodes[6].id assert nodes[3].get_connected_nodes()[2].id == nodes[11].id assert len(nodes[4].get_connected_nodes()) == 3 assert nodes[4].get_connected_nodes()[0].id == nodes[5].id assert nodes[4].get_connected_nodes()[1].id == nodes[3].id assert nodes[4].get_connected_nodes()[2].id == nodes[13].id assert len(nodes[5].get_connected_nodes()) == 2 assert nodes[5].get_connected_nodes()[0].id == nodes[4].id assert nodes[5].get_connected_nodes()[1].id == nodes[14].id assert len(nodes[6].get_connected_nodes()) == 4 assert nodes[6].get_connected_nodes()[0].id == nodes[7].id assert nodes[6].get_connected_nodes()[1].id == nodes[2].id assert nodes[6].get_connected_nodes()[2].id == nodes[3].id assert nodes[6].get_connected_nodes()[3].id == nodes[12].id assert len(nodes[7].get_connected_nodes()) == 2 assert nodes[7].get_connected_nodes()[0].id == nodes[6].id assert nodes[7].get_connected_nodes()[1].id == nodes[15].id # upper nodes assert len(nodes[8].get_connected_nodes()) == 3 assert nodes[8].get_connected_nodes()[0].id == nodes[0].id assert nodes[8].get_connected_nodes()[1].id == nodes[9].id assert nodes[8].get_connected_nodes()[2].id == nodes[10].id assert len(nodes[9].get_connected_nodes()) == 2 assert nodes[9].get_connected_nodes()[0].id == nodes[8].id assert nodes[9].get_connected_nodes()[1].id == nodes[1].id assert len(nodes[10].get_connected_nodes()) == 3 assert nodes[10].get_connected_nodes()[0].id == nodes[8].id assert nodes[10].get_connected_nodes()[1].id == nodes[2].id assert nodes[10].get_connected_nodes()[2].id == nodes[12].id assert len(nodes[11].get_connected_nodes()) == 3 assert nodes[11].get_connected_nodes()[0].id == nodes[3].id assert nodes[11].get_connected_nodes()[1].id == nodes[12].id assert nodes[11].get_connected_nodes()[2].id == nodes[13].id assert len(nodes[12].get_connected_nodes()) == 4 assert nodes[12].get_connected_nodes()[0].id == nodes[10].id assert nodes[12].get_connected_nodes()[1].id == nodes[11].id assert nodes[12].get_connected_nodes()[2].id == nodes[6].id assert nodes[12].get_connected_nodes()[3].id == nodes[15].id assert len(nodes[13].get_connected_nodes()) == 3 assert nodes[13].get_connected_nodes()[0].id == nodes[11].id assert nodes[13].get_connected_nodes()[1].id == nodes[4].id assert nodes[13].get_connected_nodes()[2].id == nodes[14].id assert len(nodes[14].get_connected_nodes()) == 2 assert nodes[14].get_connected_nodes()[0].id == nodes[13].id assert nodes[14].get_connected_nodes()[1].id == nodes[5].id assert len(nodes[15].get_connected_nodes()) == 2 assert nodes[15].get_connected_nodes()[0].id == nodes[12].id assert nodes[15].get_connected_nodes()[1].id == nodes[7].id