def test_error_dequeue():
    """
    Este test busca comprobar que es imposible eliminar un objeto de
    una cola vacia
    """
    queue = q.newQueue(list_type)
    assert (q.size(queue) == 0)
    assert(q.isEmpty(queue))

    with pytest.raises(Exception):
        q.dequeue(queue)
def convertQueueToStr(queue):
    """
    Toma la cola con la ruta más corta
    y la convierte a un string
    """
    size = qu.size(queue)
    strRoute = ""
    for i in range(0, size):
        stat = qu.dequeue(queue)
        strRoute = strRoute + str(stat['vertexA']) + " - "
    strRoute = strRoute + stat['vertexB']
    return strRoute
def test_sizeQueue():
    """
    Se prueba la creacion de una cola y la relacion con el tamaño al
    ingresar datos
    """

    queue = q.newQueue(list_type)
    assert (q.size(queue) == 0)
    assert (q.isEmpty(queue))
    queue = q.newQueue(list_type)

    q.enqueue(queue, book5)
    q.enqueue(queue, book6)
    q.enqueue(queue, book3)
    q.enqueue(queue, book10)
    q.enqueue(queue, book1)
    q.enqueue(queue, book2)
    q.enqueue(queue, book8)
    q.enqueue(queue, book4)
    q.enqueue(queue, book7)
    q.enqueue(queue, book9)
    assert q.size(queue) == 10
示例#4
0
def test_peek_dequeue(queue, books):
    """
    Este test prueba la creacion de una cola y que el orden de salida
    sea el correcto para la estructura en cuestion, y que el tamaño
    se reduzca para cada salida de objeto
    """

    q.enqueue(queue, books[5])
    q.enqueue(queue, books[6])
    q.enqueue(queue, books[3])
    q.enqueue(queue, books[10])
    q.enqueue(queue, books[1])
    q.enqueue(queue, books[2])
    q.enqueue(queue, books[8])
    q.enqueue(queue, books[4])
    q.enqueue(queue, books[7])

    total = q.size(queue)
    while not (q.isEmpty(queue)):
        peek = q.peek(queue)
        assert (q.dequeue(queue) == peek)
        total -= 1
        assert (total == q.size(queue))
示例#5
0
def getBestRoute(analyzer, originArea, destinArea, initPos, endPos):
    """
    Busca la mejor ruta entre dos estaciones
    """
    lst = analyzer["hours"]
    menorTime = float("inf")
    menorRoute = ""
    hour = 0
    for i in range(initPos,(endPos+1)):
        dict = lt.getElement(lst, i)
        if (gr.containsVertex(dict["grafo"], originArea)) and (gr.containsVertex(dict["grafo"], destinArea)):
            if destinArea == originArea:
                edge = gr.getEdge(dict["grafo"],originArea,destinArea)
                if edge is not None:
                    time = edge['weight']
                    if time < menorTime:
                        menorTime = time
                        menorRoute = originArea+"-"+destinArea
                        hour = dict["hora"]
            else:
                search = djk.Dijkstra(dict["grafo"],originArea)
                queuePath = djk.pathTo(search, destinArea)
                size = -1
                if queuePath is not None:
                    size = qu.size(queuePath)
                strRoute = ""
                time = 0
                for i in range(0,size):
                    stat = qu.dequeue(queuePath)
                    strRoute = strRoute + str(stat['vertexA'])+ " - "
                    time += stat['weight']
                strRoute = strRoute + stat['vertexB']
                if (time < menorTime) and (queuePath is not None):
                    menorTime = time
                    menorRoute = strRoute
                    hour = dict["hora"]
    return (menorTime,menorRoute,hour)
def test_infoElements():
    """
    Este test busca confirmar que los datos se almacenen de forma
    correcta y que sean los valores correctos en el orden apropiado
    de la estructura.
    """
    queue = q.newQueue(list_type)
    assert (q.size(queue) == 0)
    assert (q.isEmpty(queue))
    queue = q.newQueue(list_type)

    q.enqueue(queue, book5)
    q.enqueue(queue, book6)
    q.enqueue(queue, book3)
    q.enqueue(queue, book10)
    q.enqueue(queue, book1)
    q.enqueue(queue, book2)
    q.enqueue(queue, book8)
    q.enqueue(queue, book4)
    q.enqueue(queue, book7)
    q.enqueue(queue, book9)

    elem = q.peek(queue)
    assert (q.size(queue) == 10)
    assert (elem == book5)

    elem = q.dequeue(queue)
    assert (q.size(queue) == 9)
    assert (elem == book5)

    elem = q.dequeue(queue)
    assert (q.size(queue) == 8)
    assert (elem == book6)

    elem = q.peek(queue)
    assert (q.size(queue) == 8)
    assert (elem == book3)

    q.enqueue(queue, book9)
    assert (q.size(queue) == 9)
    elem = q.peek(queue)
    assert (elem == book3)
示例#7
0
def test_enqueue_dequeue(queue, books):
    """
    Este test prueba que la cola pueda manejar inserciones y eliminaciones
    de forma correcta siguiendo un orden establecido, y que no quede
    referencia al objeto sacado despues de haberlo removido de la
    cola
    """

    q.enqueue(queue, books[5])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[6])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[3])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[10])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[1])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[2])
    assert (q.size(queue) == 1)
    assert (q.peek(queue) == q.dequeue(queue))
    assert (q.size(queue) == 0)

    q.enqueue(queue, books[8])
    q.enqueue(queue, books[4])
    q.enqueue(queue, books[7])
    q.enqueue(queue, books[9])

    assert (q.size(queue) == 4)
    assert books[8] == q.dequeue(queue)
    assert books[4] == q.dequeue(queue)
    assert books[7] == q.dequeue(queue)
    assert books[9] == q.dequeue(queue)

    assert (q.size(queue) == 0)
def test_enqueue_dequeue():
    """
    Este test prueba que la cola pueda manejar inserciones y eliminaciones
    de forma correcta siguiendo un orden establecido, y que no quede
    referencia al objeto sacado despues de haberlo removido de la
    cola
    """
    queue = q.newQueue(list_type)
    assert (q.size(queue) == 0)
    assert (q.isEmpty(queue))

    q.enqueue(queue, book5)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book6)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book3)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book10)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book1)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book2)
    assert(q.size(queue) == 1)
    assert(q.peek(queue) == q.dequeue(queue))
    assert(q.size(queue) == 0)

    q.enqueue(queue, book8)
    q.enqueue(queue, book4)
    q.enqueue(queue, book7)
    q.enqueue(queue, book9)

    assert (q.size(queue) == 4)
    assert book8 == q.dequeue(queue)
    assert book4 == q.dequeue(queue)
    assert book7 == q.dequeue(queue)
    assert book9 == q.dequeue(queue)

    assert (q.size(queue) == 0)
示例#9
0
def req4(analyzer):
    search=prim.PrimMST(analyzer['connections_normal'])
    distance=prim.weightMST(analyzer['connections_normal'],search)
    mst=search['mst']
    numberofnodes=qu.size(mst)
    return(distance,numberofnodes)
示例#10
0
def greater(key1, key2):
    if key1['t'] == key2['t']:
        return 0
    elif key1['t'] < key2['t']:
        return -1
    else:
        return 1


cola_de_espera = queue.newQueue()

minpq = pq.newMinPQ(greater)
pq.insert(minpq, {'t': 0, 'evento': 'llegada'})
pq.insert(minpq, {'t': 5, 'evento': 'fin'})

iters = 0
while not pq.isEmpty(minpq) and iters < 100:
    p = pq.delMin(minpq)

    if p['evento'] == 'llegada':
        queue.enqueue(cola_de_espera, 1)
        pq.insert(minpq, {'t': p['t'] + 1, 'evento': 'llegada'})
        print('llegada')

    if p['evento'] == 'fin':
        break
    iters = iters + 1

print(queue.size(cola_de_espera))