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
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))
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)
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)
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)
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))