class Pila(object): def __init__(self): self._datos = ListaConPyLista() def __str__(self): return str(self._datos) def __repr__(self): return self.__str__() def poner(self, elem): """ Agrega elem a la pila. Args: elem (Object): dato """ tamanio = self._datos.getTamanio() self._datos.agregar(elem, tamanio) def sacar(self): """ Elimina y devuelve el elemento en el tope de la pila. Returns: Object: elemento en el tope de la lista. """ tamanio = self._datos.getTamanio() elem = self.tope() self._datos.eliminar(tamanio - 1) return elem def tope(self): """ Devuelve el elemento en el tope de la pila sin eliminarlo. Returns: Object: elemento en el tope de la lista. """ tamanio = self._datos.getTamanio() elem = self._datos.elemento(tamanio -1) return elem def esVacia(self): """ Metodo para saber si la lista esta vacia o no. Returns: bool: True si la pila esta vacia y False si no lo esta. """ return self._datos.esVacia()
class TestListaConPyListas(unittest.TestCase): def setUp(self): self.lista = ListaConPyLista() def test_lista_inicio_none(self): self.assertEqual([], self.lista._datos) def test_lista_vacia_si(self): self.assertTrue(self.lista.esVacia()) def test_lista_vacia_no(self): self.lista._datos = [1, 2, 3, 4] self.lista._tamanio = 4 self.assertFalse(self.lista.esVacia()) def test_str(self): self.assertEqual("[]", str(self.lista)) self.lista._datos = [1, 2, 3, 4] self.lista._tamanio = 4 self.assertEqual("[1, 2, 3, 4]", str(self.lista)) def test_elemento_lista_vacia(self): self.assertRaises(IndexError, self.lista.elemento, 0) self.assertRaises(IndexError, self.lista.elemento, 2) def test_elemento_pos_menor_cero(self): self.assertRaises(IndexError, self.lista.elemento, -1) def test_elemento_en_posiciones_ordenadas(self): self.lista._datos = ["dummy_0", "dummy_1", "dummy_2", "dummy_3"] self.lista._tamanio = 4 self.assertEqual("dummy_0", self.lista.elemento(0)) self.assertEqual("dummy_1", self.lista.elemento(1)) self.assertEqual("dummy_2", self.lista.elemento(2)) self.assertEqual("dummy_3", self.lista.elemento(3)) def test_elemento_en_posiciones_desordenadas(self): self.lista._datos = ["dummy_0", "dummy_1", "dummy_2", "dummy_3"] self.lista._tamanio = 4 self.assertEqual("dummy_3", self.lista.elemento(3)) self.assertEqual("dummy_1", self.lista.elemento(1)) self.assertEqual("dummy_0", self.lista.elemento(0)) self.assertEqual("dummy_2", self.lista.elemento(2)) def test_agregar_a_lista_pos_menor_0(self): self.assertRaises(IndexError, self.lista.agregar, "dummy", -1) def test_agregar_a_lista_pos_mayor_tamanio_lista(self): self.assertRaises(IndexError, self.lista.agregar, "dummy", 1) self.lista._tamanio = 1 self.assertRaises(IndexError, self.lista.agregar, "dummy", 2) def test_agregar_a_lista_nueva(self): self.lista.agregar("dummy_0", 0) self.assertEqual("dummy_0", self.lista.elemento(0)) self.lista.agregar("dummy_1", 1) self.assertEqual("dummy_1", self.lista.elemento(1)) self.lista.agregar("dummy_2", 0) self.assertEqual("dummy_2", self.lista.elemento(0)) self.assertEqual("dummy_0", self.lista.elemento(1)) self.assertEqual("dummy_1", self.lista.elemento(2)) def test_incluye_lista_vacia(self): self.assertFalse(self.lista.incluye("dummy_0")) def test_incluye_existe(self): self.lista._datos = ["dummy_0", "dummy_1", "dummy_2", "dummy_3"] self.lista._tamanio = 4 self.assertTrue(self.lista.incluye("dummy_0")) self.assertTrue(self.lista.incluye("dummy_1")) self.assertTrue(self.lista.incluye("dummy_2")) self.assertTrue(self.lista.incluye("dummy_3")) def test_incluye_no_existe(self): self.lista._datos = ["dummy_0", "dummy_1", "dummy_2", "dummy_3"] self.assertFalse(self.lista.incluye("dummy_4")) self.assertFalse(self.lista.incluye("dummy_5")) def test_eliminar_index_error(self): lista = ListaEnlazada() lista.agregar("dummy_0", 0) lista.agregar("dummy_1", 1) lista.agregar("dummy_2", 2) lista.agregar("dummy_3", 3) def test_eliminar_ok(self): self.lista._datos = ["dummy_0"] self.lista._tamanio = 1 self.lista.eliminar(0) self.assertTrue(self.lista.esVacia()) self.assertFalse(self.lista.incluye("dummy0")) self.lista._datos = ["dummy_0", "dummy_1", "dummy_2", "dummy_3"] self.lista._tamanio = 4 tamanio = self.lista.getTamanio() self.lista.eliminar(2) self.assertEqual(tamanio - 1, self.lista.getTamanio()) self.assertFalse(self.lista.incluye("dummy2")) self.lista.eliminar(2) self.assertEqual(tamanio - 2, self.lista.getTamanio()) self.assertFalse(self.lista.incluye("dummy3")) self.lista.eliminar(0) self.assertEqual(tamanio - 3, self.lista.getTamanio()) self.assertFalse(self.lista.incluye("dummy0")) self.lista.eliminar(0) self.assertEqual(tamanio - 4, self.lista.getTamanio()) self.assertFalse(self.lista.incluye("dummy1")) def test_eliminar_pos_error(self): self.lista._datos = ["dummy_0", "dummy_1", "dummy_2"] self.lista._tamanio = 34 tamanio = self.lista.getTamanio() self.assertRaises(IndexError, self.lista.eliminar, 3) self.assertRaises(IndexError, self.lista.eliminar, 4) self.assertRaises(IndexError, self.lista.eliminar, -1) self.assertEqual(tamanio, self.lista.getTamanio()) self.assertTrue(self.lista.incluye("dummy_0")) self.assertTrue(self.lista.incluye("dummy_1")) self.assertTrue(self.lista.incluye("dummy_2"))
class TestListaConPyListas(unittest.TestCase): def setUp(self): self.lista = ListaConPyLista() def test_lista_inicio_none(self): self.assertEqual([], self.lista._datos) def test_lista_vacia_si(self): self.assertTrue(self.lista.esVacia()) def test_lista_vacia_no(self): self.lista._datos = [1, 2, 3, 4] self.lista._tamanio = 4 self.assertFalse(self.lista.esVacia()) def test_str(self): self.assertEqual("[]", str(self.lista)) self.lista._datos = [1, 2, 3, 4] self.lista._tamanio = 4 self.assertEqual("[1, 2, 3, 4]", str(self.lista)) def test_elemento_lista_vacia(self): self.assertRaises(IndexError, self.lista.elemento, 0) self.assertRaises(IndexError, self.lista.elemento, 2) def test_elemento_pos_menor_cero(self): self.assertRaises(IndexError, self.lista.elemento, -1) def test_elemento_en_posiciones_ordenadas(self): self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2', 'dummy_3'] self.lista._tamanio = 4 self.assertEqual('dummy_0', self.lista.elemento(0)) self.assertEqual('dummy_1', self.lista.elemento(1)) self.assertEqual('dummy_2', self.lista.elemento(2)) self.assertEqual('dummy_3', self.lista.elemento(3)) def test_elemento_en_posiciones_desordenadas(self): self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2', 'dummy_3'] self.lista._tamanio = 4 self.assertEqual('dummy_3', self.lista.elemento(3)) self.assertEqual('dummy_1', self.lista.elemento(1)) self.assertEqual('dummy_0', self.lista.elemento(0)) self.assertEqual('dummy_2', self.lista.elemento(2)) def test_agregar_a_lista_pos_menor_0(self): self.assertRaises(IndexError, self.lista.agregar, 'dummy', -1) def test_agregar_a_lista_pos_mayor_tamanio_lista(self): self.assertRaises(IndexError, self.lista.agregar, 'dummy', 1) self.lista._tamanio = 1 self.assertRaises(IndexError, self.lista.agregar, 'dummy', 2) def test_agregar_a_lista_nueva(self): self.lista.agregar('dummy_0', 0) self.assertEqual('dummy_0', self.lista.elemento(0)) self.lista.agregar('dummy_1', 1) self.assertEqual('dummy_1', self.lista.elemento(1)) self.lista.agregar('dummy_2', 0) self.assertEqual('dummy_2', self.lista.elemento(0)) self.assertEqual('dummy_0', self.lista.elemento(1)) self.assertEqual('dummy_1', self.lista.elemento(2)) def test_incluye_lista_vacia(self): self.assertFalse(self.lista.incluye('dummy_0')) def test_incluye_existe(self): self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2', 'dummy_3'] self.lista._tamanio = 4 self.assertTrue(self.lista.incluye('dummy_0')) self.assertTrue(self.lista.incluye('dummy_1')) self.assertTrue(self.lista.incluye('dummy_2')) self.assertTrue(self.lista.incluye('dummy_3')) def test_incluye_no_existe(self): self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2', 'dummy_3'] self.assertFalse(self.lista.incluye('dummy_4')) self.assertFalse(self.lista.incluye('dummy_5')) def test_eliminar_index_error(self): lista = ListaEnlazada() lista.agregar('dummy_0', 0) lista.agregar('dummy_1', 1) lista.agregar('dummy_2', 2) lista.agregar('dummy_3', 3) def test_eliminar_ok(self): self.lista._datos = ['dummy_0'] self.lista._tamanio = 1 self.lista.eliminar(0) self.assertTrue(self.lista.esVacia()) self.assertFalse(self.lista.incluye('dummy0')) self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2', 'dummy_3'] self.lista._tamanio = 4 tamanio = self.lista.getTamanio() self.lista.eliminar(2) self.assertEqual(tamanio - 1, self.lista.getTamanio()) self.assertFalse(self.lista.incluye('dummy2')) self.lista.eliminar(2) self.assertEqual(tamanio - 2, self.lista.getTamanio()) self.assertFalse(self.lista.incluye('dummy3')) self.lista.eliminar(0) self.assertEqual(tamanio - 3, self.lista.getTamanio()) self.assertFalse(self.lista.incluye('dummy0')) self.lista.eliminar(0) self.assertEqual(tamanio - 4, self.lista.getTamanio()) self.assertFalse(self.lista.incluye('dummy1')) def test_eliminar_pos_error(self): self.lista._datos = ['dummy_0', 'dummy_1', 'dummy_2'] self.lista._tamanio = 34 tamanio = self.lista.getTamanio() self.assertRaises(IndexError, self.lista.eliminar, 3) self.assertRaises(IndexError, self.lista.eliminar, 4) self.assertRaises(IndexError, self.lista.eliminar, -1) self.assertEqual(tamanio, self.lista.getTamanio()) self.assertTrue(self.lista.incluye('dummy_0')) self.assertTrue(self.lista.incluye('dummy_1')) self.assertTrue(self.lista.incluye('dummy_2'))