def testes_remover():
    grafo = grafoPronto()
    grafo.remover('AM')

    assert contemApenas((pe_mt_pe, pe_rn, pe_rj), grafo.incidentesDe('PE'))
    assert contemApenas((pe_mt_pe, sp_pe, pb_pe), grafo.incidentesEm('PE'))
    assert 'AM' not in grafo

    grafo.remover('RJ')

    assert 'RJ' not in grafo
    assert grafo.incidentesDe('SP') == (sp_pe, )
    assert vazio(grafo.incidentesEm('SP'))
    assert pe_rj not in grafo.incidentesDe('PE')

    grafo.remover('PB')

    assert 'PB' not in grafo
    assert contemApenas((mt_rn1, mt_rn2, mt_rn3, pe_rn),
                        grafo.incidentesEm('RN'))
    assert grafo.incidentesDe('RN') == (rn_mt, )
    assert contemApenas((pe_mt_pe, sp_pe), grafo.incidentesEm('PE'))

    grafo.remover('MT')

    assert 'MT' not in grafo
    assert vazio(grafo.incidentesDe('RN'))
    assert grafo.incidentesEm('RN') == (pe_rn, )
    assert grafo.incidentesDe('PE') == (pe_rn, )
    assert grafo.incidentesEm('PE') == (sp_pe, )
def testes_desligar_naoRemoveraALigacaoDeBParaAMesmoQueElaPasassePeloFiltro():
    grafo = novoGrafo('AM', 'PE')
    grafo.ligar('PE', 'AM', nome='BR10', ano=65)
    grafo.ligar('AM', 'PE', nome='BR10', ano=65)
    grafo.desligar('PE', 'AM')

    assert grafo.incidentesEm('PE') == grafo.incidentesDe('AM') == \
           ({'nome':'BR10', 'ano':65}, )
    assert vazio(grafo.incidentesDe('PE'))
    assert vazio(grafo.incidentesEm('AM'))
def testes_inserir():
    grafo = Grafo()
    grafo.inserir('AM')
    grafo.inserir('PE', 'AM', **pe_am)

    assert grafo.incidentesDe('PE') == grafo.incidentesEm('AM') == (pe_am, )
    assert vazio(grafo.incidentesDe('AM'))
    assert vazio(grafo.incidentesEm('PE'))

    grafo.inserir('SP', 'PE')

    assert grafo.incidentesEm('PE') == grafo.incidentesDe('SP') == ({}, )
    assert vazio(grafo.incidentesEm('SP'))
def testes_desligar_removeTodasAsLigacoesDeAParaBSeOFiltroNaoForInformado():
    grafo = novoGrafo('PE', 'RJ')
    grafo.ligar('PE', 'RJ')
    grafo.ligar('PE', 'RJ', NAO_ORIENTADA)
    grafo.ligar('PE', 'RJ', nome='BR101', comp=63, ano=56)
    grafo.ligar('PE', 'RJ', NAO_ORIENTADA, nome='BR105', km=77, idade=33)
    grafo.ligar('PE', 'RJ', id=44)
    grafo.ligar('PE', 'RJ', estado='em construção')
    grafo.ligar('PE', 'RJ', estado='finalizada', ano=2017)
    grafo.ligar('PE', 'RJ', NAO_ORIENTADA, categoria='rodoviaria')
    grafo.ligar('PE', 'RJ', categoria='aerea')
    grafo.ligar('PE', 'RJ', categoria='aquatica')  # 10 ligações

    grafo.desligar('PE', 'RJ')

    assert vazio(grafo.incidentesDe('PE'))
    assert vazio(grafo.incidentesEm('PE'))
    assert vazio(grafo.incidentesDe('RJ'))
    assert vazio(grafo.incidentesEm('RJ'))
def testes_caminhosMinimos_retornaraUmaListaVaziaSeAsDistanciasDeTodosOsCaminhosDeAparaBForemIndefinidas(
):
    grafo = novoGrafo('PE', 'SP', 'RJ', 'MT')
    grafo.ligar('PE', 'SP', distancia=800, id='010')
    grafo.ligar('SP', 'MT', id='015')
    grafo.ligar('SP', 'RJ', id='020')
    grafo.ligar('RJ', 'MT', distancia=400, id='025')
    grafo.ligar('PE', 'MT', id='030')

    assert vazio(grafo.caminhosMinimos('PE', 'MT'))
def testes_ligacoes():
    ligacoes = grafo.ligacoes('MT', 'RN')
    assert len(ligacoes) is 3
    assert mt_rn1 in ligacoes
    assert mt_rn2 in ligacoes
    assert mt_rn3 in ligacoes

    assert grafo.ligacoes('RN', 'MT') == (rn_mt, )

    assert vazio(grafo.ligacoes('PB', 'AM'))

    assert grafo.ligacoes('AM', 'AM') == (am_am, )
def testes_inserir_iraIgnorarOTerceiroParametroSeBNaoForInformado():
    grafo = Grafo()
    grafo.inserir('PE', id=5, nome='BR101')
    grafo.inserir('AM', id=5, nome='BR101')
    grafo.inserir('SP', id=5, nome='BR101')
    grafo.inserir('RJ', id=5, nome='BR101')

    assert vazio(grafo.incidentesEm('PE'))
    assert vazio(grafo.incidentesDe('PE'))
    assert vazio(grafo.incidentesEm('AM'))
    assert vazio(grafo.incidentesDe('AM'))
    assert vazio(grafo.incidentesEm('SP'))
    assert vazio(grafo.incidentesDe('SP'))
    assert vazio(grafo.incidentesEm('RJ'))
    assert vazio(grafo.incidentesDe('RJ'))
def testes_ligacoes_retornaraUmaTuplaVaziaSe_b_naoForLocalizado():
    assert vazio(grafo.ligacoes('PE', '-'))
def testes_incidentesDe_comUmItemQueNaoPossuiNenhumaLigacaoIncidente():
    assert vazio(grafo.incidentesDe('KW'))
def testes_incidentesEm_retornaUmaTuplaVaziaSeOItemNaoForLocalizado():
    assert vazio(grafo.incidentesEm('-'))
def testes_caminhos_retornaUmaListaVaziaSeNaoHouverCaminhoDeAParaB():
    assert vazio(grafo.caminhos('AM', 'PE'))
def testes_rotas_retornaUmConjuntoVazioSeNaoHouverCaminhoDeAParaB():
    assert vazio(grafo.rotas('AM', 'SP'))
def testes_caminhosMinimos_retornaraUmaListaVaziaSeNaoHouverCaminhoDeAparaB():
    assert vazio(grafo.caminhosMinimos('AM', 'SP'))