예제 #1
0
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()
예제 #2
0
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"))
예제 #3
0
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'))