def test_maior_soma_lista_maior_soma_na_metade_algoritmo_linear():
    assert_equals(algoritmo_linear([-1,-1,-1,-1,1,1,1,1,1,1,1,1,-1,-1,-1,-1]),(8))
    for f in range(0,n):
        ini = time.time()                    
        for t in range(0,fator_de_teste_div_conq):
            a = lista_entrada(l[0:f])
        fim = time.time()
        tempo_div_conq.append((fim-ini)/fator_de_teste_div_conq)
        print f+1, tempo_div_conq[f]
print ""

# Medição do tempo de resposta do algoritmo linear
fator_de_teste_linear = m * 100
print "Tempo de Execucao Algoritmo Linear"
if n == 0:
    ini = time.time() 
    for t in range(0,fator_de_teste_linear):
        a = algoritmo_linear(l)
    fim = time.time()
    tempo_linear.append((fim-ini)/fator_de_teste_linear)
    print n, tempo_linear[n]
else:
    for f in range(0,n):
        ini = time.time()                    
        for t in range(0,fator_de_teste_linear):
            a = algoritmo_linear(l[0:f])
        fim = time.time()
        tempo_linear.append((fim-ini)/fator_de_teste_linear)
        print f+1, tempo_linear[f]

if n <> 0:
    x = [n for n in range(1, n+1)]
    grid(True)
def test_maior_soma_lista_com_1_elemento_positivo_algoritmo_linear():
    assert_equals(algoritmo_linear([1]),(1))
def test_maior_soma_lista_com_elementos_positivos_algoritmo_linear():
    assert_equals(algoritmo_linear([1,1,1,1,1,1,1,1]),(8))
def test_maior_soma_lista_com_elementos_negativos_algoritmo_linear():
    assert_equals(algoritmo_linear([-1,-1,-2]),(0))
def test_maior_soma_lista_com_2_elementos_zero_algoritmo_linear():
    assert_equals(algoritmo_linear([0,0]),(0))
def test_maior_soma_lista_com_1_elemento_negativo_algoritmo_linear():
    assert_equals(algoritmo_linear([-1]),(0))
def test_maior_soma_lista_vazia_algoritmo_linear():
    assert_equals(algoritmo_linear([]),(0))
    print "Qua", n[h], tempo_quadratico[h]

    # Medição do tempo de resposta do algoritmo divisao e conquista
    fator_de_teste_div_conq = m * 10
    ini = time.time()
    for v in range(0, fator_de_teste_div_conq):
        a = lista_entrada(l)
    fim = time.time()
    tempo_div_conq.append((fim - ini) / fator_de_teste_div_conq)
    print "Div", n[h], tempo_div_conq[h]

    # Medição do tempo de resposta do algoritmo linear
    fator_de_teste_linear = m * 1000
    ini = time.time()
    for v in range(0, fator_de_teste_linear):
        a = algoritmo_linear(l)
    fim = time.time()
    tempo_linear.append((fim - ini) / fator_de_teste_linear)
    print "Lin", n[h], tempo_linear[h]

print tempo_cubico
print tempo_quadratico
print tempo_div_conq
print tempo_linear

# Apresentação dos resultados de forma gráfica
ax = plt.subplot(111)
ax.plot(n, tempo_cubico, n, tempo_quadratico, n, tempo_div_conq, n, tempo_linear)
ax.legend(("Cubico", "Quadratico", "Div Conq", "Linear"), "upper left", shadow=True, fancybox=True)
ax.grid(True)
ax.set_title("Desempenho dos Algoritmos")