def test_read_b01(self):
        diretorio_dados = path.join("datasets", "ORLibrary")
        arquivo_dados = "steinb1.txt"
        arquivo = path.join(diretorio_dados, arquivo_dados)

        reader = ReaderORLibrary()

        stp = reader.parser(arquivo)
        terminais = [48, 49, 22, 35, 27, 12, 37, 34, 24]

        self.assertEqual(stp.nro_nodes,50)
        self.assertEqual(stp.nro_edges,63)
        self.assertEqual(stp.nro_terminals,9)
        self.assertEqual(sorted(stp.terminals),sorted(terminais))

        self.assertEqual(stp.graph[17][42],6)
        self.assertEqual(stp.graph[20][40],10)
        #Ordem inversa ao que aparece no arquivo
        self.assertEqual(stp.graph[6][42],9)
        self.assertEqual(stp.graph[13][50],1)

        self.assertIsInstance(stp.nro_nodes,int)
        self.assertIsInstance(stp.nro_edges,int)
        self.assertIsInstance(stp.nro_terminals,int)
        self.assertIsInstance(stp.terminals,set)
        self.assertIsInstance(stp.graph,Graph)

        self.assertEqual(len(stp.graph.vertices), stp.nro_nodes)

        self.assertEqual(stp.name,'B1')
        self.assertEqual(stp.remark,'Sparse graph with random weights')
        self.assertEqual(stp.creator,'J. E. Beasley')
        self.assertEqual(stp.file_name, arquivo_dados)
    def test_GenerateUndirectEdges(self):
        diretorio_dados = path.join("datasets", "ORLibrary")
        arquivo_dados = "steinb1.txt"
        arquivo = path.join(diretorio_dados, arquivo_dados)

        reader = ReaderORLibrary()

        stp = reader.parser(arquivo)

        graph = stp.graph

        edges = set()

        for e in graph.gen_undirect_edges():
            edges.add(e)

        self.assertEqual(len(edges),stp.nro_edges)
    'nickname': 'SPHPrim'
}, {
    'function': shortest_path_with_origin,
    'nickname': 'SPHO'
}]

reader = ReaderORLibrary()
results = list()
results.append(['instance_problem', 'heuristic', 'start_node', 'cost'])

for item in heuristics:
    heuristic = item['function']
    name_heuristic = item['nickname']

    for name in instances:
        STPG = reader.parser(path.join(instance_folder, name))
        graph = STPG.graph
        terminals = STPG.terminals.copy()
        vertices = list(graph.vertices)

        for v in vertices:
            print(
                f"{name_heuristic.upper()} -- {name.upper()} -- start node: {v}"
                .ljust(100),
                end='\r')
            _, cost = heuristic(graph, v, terminals)
            results.append([name, name_heuristic, v, cost])
print(" " * 100)
output_file = path.join(output_folder, "resultados3.csv")
with open(output_file, "w", newline='') as file:
    writer = csv.writer(file, delimiter=',')