def req2(lst, function, criteria, n): t1_start = process_time() result = lt.newList('ARRAY_LIST') nombres = lt.newList('ARRAY_LIST') votos = lt.newList('ARRAY_LIST') sh.shellSort(lst, function, criteria) #sel.selectionSort(lst, function, criteria) #ins.insertionSort(lst,function,criteria) for i in range(n + 1): lt.addLast(result, lt.getElement(lst, i)) iterator = it.newIterator(result) while it.hasNext(iterator): element = it.next(iterator) lt.addLast(nombres, element['title']) lt.addLast(votos, element[criteria]) final = lt.newList('ARRAY_LIST') for i in range(n + 1): lt.addLast(final, (lt.getElement(nombres, i), lt.getElement(votos, i))) lt.addLast(final, lt.getElement(final, 0)) lt.removeFirst(final) lt.removeFirst(final) t1_stop = process_time() print('El tiempo fue de ', t1_stop - t1_start, ' segundos') return final
def req6(lst1, criteria1, column1, function, criteriaf, n): porgenero = lt.newList("ARRAY_LIST") iterator = it.newIterator(lst1) lt.addFirst(porgenero, '') while it.hasNext(iterator): element = it.next(iterator) if criteria1.lower() in element[column1].lower(): lt.addLast(porgenero, element) lt.removeFirst(porgenero) listado = req2(porgenero, function, criteriaf, n) return listado
def test_agregarYquitar(): """ Prueba que al hacer varios ordnamientos el orden debe mantenerse asi se cambien los elementos Se requiere tener la lista ordenada, luego desordenada y probar que genera excepcion """ lst = slt.newList(list_type) slt.addFirst(lst, book10) slt.addFirst(lst, book9) slt.addFirst(lst, book8) slt.addFirst(lst, book7) slt.addFirst(lst, book6) slt.addFirst(lst, book5) slt.addFirst(lst, book4) slt.addFirst(lst, book3) slt.addFirst(lst, book2) slt.addFirst(lst, book1) probarOrden(lst) #Prueba que al inicio la lista esté en orden slt.addFirst(lst, slt.removeLast(lst)) slt.addLast(lst, slt.removeFirst(lst)) slt.addFirst(lst, slt.removeLast(lst)) with pytest.raises(Exception): probarOrden(lst) sort.shellSort(lst, less) probarOrden(lst)
def test_ManyElements(): """ Con muchos elementos en la lista, en donde identificadores se repiten Deben aparecer consecutivos aquellos con id igual """ lst = slt.newList(list_type) slt.addFirst(lst, book5) slt.addFirst(lst, book6) slt.addFirst(lst, book14) slt.addFirst(lst, book3) slt.addFirst(lst, book13) slt.addFirst(lst, book10) slt.addFirst(lst, book1) slt.addFirst(lst, book12) slt.addFirst(lst, book2) slt.addFirst(lst, book8) slt.addFirst(lst, book4) slt.addFirst(lst, book11) slt.addFirst(lst, book7) slt.addFirst(lst, book9) print( "Repeated elements:----------------------------------------------------" ) iterator = it.newIterator(lst) while it.hasNext(iterator): element = it.next(iterator) result = "".join( str(key) + ": " + str(value) + ", " for key, value in element.items()) print(result) print("sorting ....") sort.shellSort(lst, less) assert slt.removeFirst(lst) == book1 assert slt.removeFirst(lst) == book2 assert slt.removeFirst(lst) == book3 assert slt.removeFirst(lst) == book4 assert slt.removeFirst(lst) == book5 assert slt.removeFirst(lst) == book6 assert slt.removeFirst(lst) == book7 assert slt.removeFirst(lst) == book11 assert slt.removeFirst(lst) == book8 assert slt.removeFirst(lst) == book12 assert slt.removeFirst(lst) == book13 assert slt.removeFirst(lst) == book9 assert slt.removeFirst(lst) == book10 assert slt.removeFirst(lst) != book14
def test_removeFirst(lstbooks, books): assert lt.size(lstbooks) == 5 lt.removeFirst(lstbooks) assert lt.size(lstbooks) == 4 book = lt.getElement(lstbooks, 1) assert book == books[1]
def test_removeFirst(lstmovies, movies): assert lst.size(lstmovies) == 5 lst.removeFirst(lstmovies) assert lst.size(lstmovies) == 4 movie = lst.getElement(lstmovies, 1) assert movie == movies[1]