import networkx as nx

from evrouting.graph_tools import node_convert, edge_convert
from evrouting.graph_tools import TemplateEdge as Edge
from evrouting.graph_tools import TemplateNode as Node

# List of configs
config_list = ['edge_case']

edge_case = {
    'b_0': 0,
    'b_t': 0,
    'U': 4,
    's': 0,
    't': 2,
    'nodes': [
        Node('s', charging_coeff=1),
        Node('a', charging_coeff=2),
        Node('t'),
    ],
    'edges': [
        Edge(0, 1, distance=1, consumption=1),
        Edge(0, 2, distance=1, consumption=4),
        Edge(1, 2, distance=1, consumption=1),
    ]
}


def get_graph(config):
    G = nx.Graph()

    for node_id, node in enumerate(config['nodes']):
        G.add_node(node_id, **node_convert(node))

    for edge in config['edges']:
        G.add_edge(edge.u, edge.v, **edge_convert(edge))

    return G