Пример #1
0
def test_peek_dequeue():
    """
    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
    """

    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)
    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))
Пример #2
0
    def test_kosaraju(self):

        graph = g.newGraph(12, self.comparenames, directed=True)
        idscc = m.newMap(12,
                         maptype='PROBING',
                         comparefunction=self.comparenames)

        pre = q.newQueue()
        post = q.newQueue()
        reversepost = s.newStack()
        marked = m.newMap(12, comparefunction=self.comparenames)

        grmarked = m.newMap(12,
                            maptype='PROBING',
                            comparefunction=self.comparenames)
        grpre = q.newQueue()
        grpost = q.newQueue()
        grreversepost = s.newStack()

        # se inicializa el grafo
        self.loadgraph(graph)
        self.assertEqual(g.numVertex(graph), 12)
        self.assertEqual(g.numEdges(graph), 14)

        # Se calcula el grafo reverso de G
        greverse = self.reverse(graph)
        self.assertEqual(g.numVertex(greverse), 12)
        self.assertEqual(g.numEdges(greverse), 14)

        # Se recorre el grafor reverso de G, utilizando DepthFirstOrder.
        self.dfo(greverse, grmarked, grpre, grpost, grreversepost)
        lst = self.lstReversePost(grreversepost)

        #lst contiene los vertices retornados por reversepost (G-reverso)
        #Se recorre el grafo en el orden dado por reverspost (G-reverso)
        iterlst = it.newIterator(lst)
        scc = 1
        while (it.hasNext(iterlst)):
            vert = it.next(iterlst)
            if not m.contains(marked, vert):
                self.sccCount(graph, vert, marked, idscc, scc)
                scc += 1

        self.assertTrue(self.stronglyConnected(idscc, 'Pedro', 'Maria'))
        self.assertTrue(self.stronglyConnected(idscc, 'Martin', 'Gloria'))
        self.assertTrue(self.stronglyConnected(idscc, 'Susana', 'Tere'))

        self.assertFalse(self.stronglyConnected(idscc, 'Pedro', 'Gloria'))
        self.assertFalse(self.stronglyConnected(idscc, 'Camila', 'Jose'))
        self.assertFalse(self.stronglyConnected(idscc, 'Gloria', 'Luz'))
Пример #3
0
    def test_infoElements(self):
        """
        """
        self.queue = q.newQueue(self.list_type)
        self.assertEqual(q.size(self.queue), 0)
        self.assertTrue(q.isEmpty(self.queue))
        q.enqueue(self.queue, self.movie5)
        q.enqueue(self.queue, self.movie6)
        q.enqueue(self.queue, self.movie3)
        q.enqueue(self.queue, self.movie10)
        q.enqueue(self.queue, self.movie1)
        q.enqueue(self.queue, self.movie2)
        q.enqueue(self.queue, self.movie8)
        q.enqueue(self.queue, self.movie4)
        q.enqueue(self.queue, self.movie7)
        q.enqueue(self.queue, self.movie9)

        elem = q.dequeue(self.queue)
        self.assertEqual(q.size(self.queue), 9)
        self.assertDictEqual(elem, self.movie5)

        elem = q.dequeue(self.queue)
        self.assertEqual(q.size(self.queue), 8)
        self.assertDictEqual(elem, self.movie6)

        elem = q.peek(self.queue)
        self.assertEqual(q.size(self.queue), 8)
        self.assertDictEqual(elem, self.movie3)

        q.enqueue(self.queue, self.movie5)
        self.assertEqual(q.size(self.queue), 9)

        elem = q.peek(self.queue)
        self.assertDictEqual(elem, self.movie3)
Пример #4
0
    def test_infoElements (self):
        """
        """
        self.queue = q.newQueue(self.list_type)
        self.assertEqual (q.size(self.queue), 0)
        self.assertTrue (q.isEmpty(self.queue))
        q.enqueue  (self.queue, self.book5)
        q.enqueue  (self.queue, self.book6)
        q.enqueue  (self.queue, self.book3)
        q.enqueue  (self.queue, self.book10)
        q.enqueue  (self.queue, self.book1)
        q.enqueue  (self.queue, self.book2)
        q.enqueue  (self.queue, self.book8)
        q.enqueue  (self.queue, self.book4)
        q.enqueue  (self.queue, self.book7)
        q.enqueue  (self.queue, self.book9)

        elem = q.dequeue (self.queue)
        self.assertEqual (q.size(self.queue), 9)
        self.assertDictEqual (elem, self.book5)

        elem = q.dequeue (self.queue)
        self.assertEqual (q.size(self.queue), 8)
        self.assertDictEqual (elem, self.book6)

        elem = q.peek (self.queue)
        self.assertEqual (q.size(self.queue), 8)
        self.assertDictEqual (elem, self.book3)

        q.enqueue  (self.queue, self.book5)
        self.assertEqual (q.size(self.queue), 9)
        
        elem = q.peek (self.queue)
        self.assertDictEqual (elem, self.book3)
Пример #5
0
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)
Пример #6
0
    def test_topological(self):

        graph = g.newGraph(10, self.comparenames, directed=True)
        pre = q.newQueue()
        post = q.newQueue()
        reversepost = s.newStack()
        marked = m.newMap(10, comparefunction=self.comparenames)

        g.insertVertex(graph, 'Calculo1')
        g.insertVertex(graph, 'Calculo2')
        g.insertVertex(graph, 'Diseno1')
        g.insertVertex(graph, 'Diseno2')
        g.insertVertex(graph, 'Electiva')
        g.insertVertex(graph, 'Fisica1')
        g.insertVertex(graph, 'Ingles')
        g.insertVertex(graph, 'IP1')
        g.insertVertex(graph, 'IP2')
        g.insertVertex(graph, 'ProyectoFinal')

        g.addEdge(graph, 'Calculo1', 'Calculo2')
        g.addEdge(graph, 'Calculo2', 'IP2')
        g.addEdge(graph, 'Calculo2', 'Fisica1')
        g.addEdge(graph, 'Diseno1', 'Diseno2')
        g.addEdge(graph, 'Diseno2', 'ProyectoFinal')
        g.addEdge(graph, 'Electiva', 'ProyectoFinal')
        g.addEdge(graph, 'Fisica1', 'Diseno2')
        g.addEdge(graph, 'Ingles', 'ProyectoFinal')
        g.addEdge(graph, 'IP1', 'Diseno1')
        g.addEdge(graph, 'IP1', 'IP2')

        self.assertEqual(g.numEdges(graph), 10)
        self.assertEqual(g.numVertex(graph), 10)

        #DFO

        lstvert = g.vertices(graph)
        vertiterator = it.newIterator(lstvert)
        while it.hasNext(vertiterator):
            vert = it.next(vertiterator)
            if not (m.contains(marked, vert)):
                self.dfs(graph, vert, marked, pre, post, reversepost)
        self.printTopological(reversepost)
Пример #7
0
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)
Пример #8
0
def test_sizeStack():
    """
    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
Пример #9
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)
Пример #10
0
def bfs(search, source):
    queue = q.newQueue()
    q.enqueue(queue, source)
    while not (q.isEmpty(queue)):
        v = q.dequeue(queue)
        adj_v = g.adjacents(search['graph'], v)
        adj_it = it.newIterator(adj_v)
        while it.hasNext(adj_it):
            w = it.next(adj_it)
            visited_w = map.get(search['visitedMap'], w)
            if visited_w == None:
                map.put(search['visitedMap'], w, {'marked': True, 'edgeTo': v})
                q.enqueue(queue, w)
Пример #11
0
    def test_emptyQueue(self):
        """
        """
        self.queue = q.newQueue(self.list_type)
        self.assertEqual(q.size(self.queue), 0)
        self.assertTrue(q.isEmpty(self.queue))
        q.enqueue(self.queue, self.movie5)
        q.enqueue(self.queue, self.movie6)
        q.enqueue(self.queue, self.movie3)
        q.enqueue(self.queue, self.movie1)
        q.enqueue(self.queue, self.movie2)
        q.enqueue(self.queue, self.movie4)

        self.assertEqual(q.size(self.queue), 6)
Пример #12
0
def bfs(search, source):
    queue = q.newQueue()
    q.enqueue(queue, source)
    while not (q.isEmpty(queue)):
        v = q.dequeue(queue)
        list_ad = g.adjacents(search['graph'], v)
        for i in range(1, (lt.size(list_ad) + 1)):
            w = lt.getElement(list_ad, i)
            if map.get(search['visitedMap'], w) == None:
                map.put(search['visitedMap'], w, {
                    'marked': True,
                    'edgeTo': None,
                    'nodo': w
                })
                q.enqueue(queue, w)
Пример #13
0
 def test_emptyQueue (self):
     """
     """
     self.queue = q.newQueue(self.list_type)
     self.assertEqual (q.size(self.queue), 0)
     self.assertTrue (q.isEmpty(self.queue))
     q.enqueue  (self.queue, self.book5)
     q.enqueue  (self.queue, self.book6)
     q.enqueue  (self.queue, self.book3)
     q.enqueue  (self.queue, self.book10)
     q.enqueue  (self.queue, self.book1)
     q.enqueue  (self.queue, self.book2)
     q.enqueue  (self.queue, self.book8)
     q.enqueue  (self.queue, self.book4)
     q.enqueue  (self.queue, self.book7)
     q.enqueue  (self.queue, self.book9)
     self.assertEqual (q.size(self.queue), 10)
Пример #14
0
def bfs(search, source):
    queue = q.newQueue()
    q.enqueue(queue, source)
    while not (q.isEmpty(queue)):
        v = q.dequeue(queue)
        visited_v = map.get(search['visitedMap'], v)['value']
        adjs = g.adjacents(search['graph'], v)
        adjs_iter = it.newIterator(adjs)
        while (it.hasNext(adjs_iter)):
            w = it.next(adjs_iter)
            visited_w = map.get(search['visitedMap'], w)
            if visited_w == None:
                map.put(search['visitedMap'], w, {
                    'marked': True,
                    'edgeTo': v,
                    'distTo': visited_v['distTo'] + 1
                })
                q.enqueue(queue, w)
Пример #15
0
    def test_enqueueElements(self):
        """
        """
        self.queue = q.newQueue(self.list_type)
        q.enqueue(self.queue, self.movie5)
        q.enqueue(self.queue, self.movie6)
        q.enqueue(self.queue, self.movie3)
        q.enqueue(self.queue, self.movie1)
        q.enqueue(self.queue, self.movie2)
        q.enqueue(self.queue, self.movie4)

        iterator = it.newIterator(self.queue)
        while it.hasNext(iterator):
            element = it.next(iterator)
            result = "".join(
                str(key) + ": " + str(value) + ",  "
                for key, value in element.items())
            print(result)
Пример #16
0
    def test_enqueueElements (self):
        """
        """
        self.queue = q.newQueue(self.list_type)
        q.enqueue  (self.queue, self.book5)
        q.enqueue  (self.queue, self.book6)
        q.enqueue  (self.queue, self.book3)
        q.enqueue  (self.queue, self.book10)
        q.enqueue  (self.queue, self.book1)
        q.enqueue  (self.queue, self.book2)
        q.enqueue  (self.queue, self.book8)
        q.enqueue  (self.queue, self.book4)
        q.enqueue  (self.queue, self.book7)
        q.enqueue  (self.queue, self.book9)

        iterator = it.newIterator(self.queue)
        while  it.hasNext(iterator):
            element = it.next(iterator)
            result = "".join(str(key) + ": " + str(value) + ",  " for key, value in element.items())
            print (result)
Пример #17
0
def test_queueElements():
    """
    Se prueba la creacion de una nueva cola, se agregan todos los datos creados por sistema y se imprime su valor
    """
    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)
    iterator = it.newIterator(queue)
    while it.hasNext(iterator):
        element = it.next(iterator)
        result = "".join(str(key) + ": " + str(value) + ",  " for key, value in element.items())
        print(result)
Пример #18
0
from ADT import queue as q
from  DataStructures import listiterator as it


def loadCSVFile (file, queue):
    input_file = csv.DictReader(open(file))
    for row in input_file:  
        q.enqueue(queue,row)

def printQueue (queue):
    iterator = it.newIterator(queue)
    while  it.hasNext(iterator):
        element = it.next(iterator)
        print (element)
print ('Creating movies queue')
lst_movies= q.newQueue()

print ('Creating movies casting queue')
lst_movie_casting= q.newQueue()


print ('Loading movies')
moviesfile = cf.data_dir + 'themoviesdb/SmallMoviesDetailsCleaned.csv'
loadCSVFile (moviesfile, lst_movies)
print (lst_movies['size'])
printQueue (lst_movies)


print ('Loading tags')
moviecastingfile = cf.data_dir + 'themoviesdb/MoviesCastingRaw-small.csv'
loadCSVFile (moviecastingfile, lst_tags)
Пример #19
0
def bfs (search, source):
    queue = q.newQueue()
    q.enqueue(queue, source)
    while not (q.isEmpty(queue)):
        v = q.dequeue (queue)
        visited_v = map.get(search['visitedMap'], v)['value']
Пример #20
0
from  DataStructures import listiterator as it


def loadCSVFile (file, queue):
    input_file = csv.DictReader(open(file))
    for row in input_file:  
        q.enqueue(queue,row)

def printQueue (queue):
    iterator = it.newIterator(queue)
    while  it.hasNext(iterator):
        element = it.next(iterator)
        print (element)

print ('Creating books queue')
lst_books= q.newQueue()

print ('Creating tag queue')
lst_tags=  q.newQueue('ARRAY_LIST')

print ('Creating books-tag queue')
lst_book_tags= q.newQueue()

print ('Creating ratings queue')
lst_ratings= q.newQueue()

print ('Creating to-read queue')
lst_to_read= q.newQueue()

print ('Loading books')
booksfile = cf.data_dir + 'GoodReads/books.csv'