コード例 #1
0
class TestSinglyLinkedList(unittest.TestCase):
    def setUp(self):
        self.list = SinglyLinkedList()

    def add_elements(self, quantity, shift=0):
        for i in range(quantity):
            self.list.insert_last(f"element {i+1+shift}")

    def remove_elements(self, quantity):
        for _ in range(quantity):
            self.list.remove_last()

    def test_is_empty(self):
        self.assertTrue(self.list.is_empty())
        self.add_elements(1)
        self.assertFalse(self.list.is_empty())

    def test_size(self):
        self.assertEqual(self.list.size(), 0)
        self.add_elements(3)
        self.assertEqual(self.list.size(), 3)
        self.remove_elements(3)
        self.assertEqual(self.list.size(), 0)

    def test_get_first(self):
        with self.assertRaises(EmptyListException):
            self.list.get_first()
        self.add_elements(3)
        self.assertEqual(self.list.get_first(), "element 1")

    def test_get_last(self):
        with self.assertRaises(EmptyListException):
            self.list.get_last()
        self.add_elements(3)
        self.assertEqual(self.list.get_last(), "element 3")

    def test_get(self):
        with self.assertRaises(EmptyListException):
            self.list.get(0)
        self.add_elements(5)
        self.assertEqual(self.list.get(2), "element 3")

    def test_find(self):
        self.assertEqual(self.list.find("empty list"), -1)
        self.add_elements(5)
        self.assertEqual(self.list.find("element 3"), 2)
        self.assertEqual(self.list.find("missing element"), -1)

    def test_insert_first(self):
        self.list.insert_first("element")
        self.assertEqual(self.list.get_first(), "element")
        self.list.make_empty()
        self.add_elements(5)
        self.assertNotEqual(self.list.get_first(), "element")
        self.list.insert_first("element")
        self.assertEqual(self.list.get_first(), "element")

    def test_insert_last(self):
        self.list.insert_first("element")
        self.assertEqual(self.list.get_last(), "element")
        self.list.make_empty()
        self.add_elements(5)
        self.assertNotEqual(self.list.get_last(), "element")
        self.list.insert_last("element")
        self.assertEqual(self.list.get_last(), "element")

    def test_insert(self):
        with self.assertRaises(InvalidPositionException):
            self.list.insert("element X", 42)
        self.list.insert("element 1", 0)
        self.assertEqual(self.list.get_first(), "element 1")
        self.add_elements(4, shift=1)
        self.list.insert("element X", 2)
        self.assertEqual(self.list.get(2), "element X")
        self.list.insert("last element", self.list.size())
        self.assertEqual(self.list.get_last(), "last element")
        with self.assertRaises(InvalidPositionException):
            self.list.insert("element bean", 42)

    def test_remove_first(self):
        with self.assertRaises(EmptyListException):
            self.list.remove_first()
        self.add_elements(5)
        self.list.remove_first()
        self.assertEqual(self.list.get_first(), "element 2")

    def test_remove_first_single_element(self):
        self.add_elements(1)
        self.assertEqual(self.list.remove_first(), "element 1")

        with self.assertRaises(EmptyListException):
            self.list.remove_first()

        with self.assertRaises(EmptyListException):
            self.list.get(0)

        with self.assertRaises(EmptyListException):
            self.list.get_last()

        with self.assertRaises(EmptyListException):
            self.list.get_first()

        self.assertTrue(self.list.is_empty())

        self.assertEqual(self.list.find("element 1"), -1)

        self.add_elements(1)
        self.assertEqual(self.list.get_first(), "element 1")
        self.assertEqual(self.list.get_last(), "element 1")
        self.assertEqual(self.list.remove_first(), "element 1")

    def test_remove_last(self):
        with self.assertRaises(EmptyListException):
            self.list.remove_last()
        self.add_elements(5)
        self.list.remove_last()
        self.assertEqual(self.list.get_last(), "element 4")

    def test_remove_last_two_elements(self):
        self.add_elements(2)
        self.assertEqual(self.list.remove_last(), "element 2")

    def test_remove_last_single_element(self):
        self.list.make_empty()
        self.add_elements(1)
        self.assertEqual(self.list.remove_last(), "element 1")

        with self.assertRaises(EmptyListException):
            self.list.remove_last()

        with self.assertRaises(EmptyListException):
            self.list.get(0)

        with self.assertRaises(EmptyListException):
            self.list.get_last()

        with self.assertRaises(EmptyListException):
            self.list.get_first()

        self.assertTrue(self.list.is_empty())

        self.assertEqual(self.list.find("element 1"), -1)

        self.add_elements(1)
        self.assertEqual(self.list.get_first(), "element 1")
        self.assertEqual(self.list.get_last(), "element 1")
        self.assertEqual(self.list.remove_last(), "element 1")

    def test_remove(self):
        with self.assertRaises(InvalidPositionException):
            self.list.remove(1)
        self.add_elements(5)
        with self.assertRaises(InvalidPositionException):
            self.list.remove(6)
        self.assertEqual(self.list.remove(0), "element 1")
        self.assertEqual(self.list.remove(2), "element 4")
        self.assertEqual(self.list.remove(2), "element 5")

    def test_remove_single_element(self):
        self.list.make_empty()
        self.add_elements(1)
        self.assertEqual(self.list.remove(0), "element 1")

        with self.assertRaises(InvalidPositionException):
            self.list.remove(0)

        with self.assertRaises(EmptyListException):
            self.list.get(0)

        with self.assertRaises(EmptyListException):
            self.list.get_last()

        with self.assertRaises(EmptyListException):
            self.list.get_first()

        self.assertTrue(self.list.is_empty())

        self.assertEqual(self.list.find("element 1"), -1)

        self.add_elements(1)
        self.assertEqual(self.list.get_first(), "element 1")
        self.assertEqual(self.list.get_last(), "element 1")
        self.assertEqual(self.list.remove(0), "element 1")

    def test_make_empty(self):
        self.assertTrue(self.list.is_empty())
        self.add_elements(5)
        self.assertFalse(self.list.is_empty())
        self.list.make_empty()
        self.assertTrue(self.list.is_empty())

    def test_iterator(self):
        self.assertIsInstance(self.list.iterator(), Iterator)
        self.assertIsInstance(self.list.iterator(), SinglyLinkedListIterator)
コード例 #2
0
class Utente(Pessoa, Tad_Utente):
    def __init__(self, nome, Faixa_Etaria):
        Pessoa.__init__(self, nome)
        self.faixa_etaria = Faixa_Etaria
        self.lista_de_cuidados = SinglyLinkedList()
        self.familia = None  # Sting nome familia
        self.profissionais_in = HashTable()
        self.serviços_in = HashTable()  # todos os serviços dentro de utente

    def get_faixa_etaria(self):
        return self.faixa_etaria

    def get_cuidados(self):
        return self.lista_de_cuidados

    def add_to_cuidados(self, cuidado):
        self.lista_de_cuidados.insert_last(cuidado)

    def remove_cuidados(self):
        self.lista_de_cuidados.make_empty()
        self.remove_profissional_in()
        self.remove_serviços_in()

    def get_familia(self):
        return self.familia

    def remove_familia(self):
        self.familia = None

    def set_familia(self, NomeFamila):
        self.familia = NomeFamila

    def has_familia(self):  # Returns true if the utente is in a familia
        if self.get_familia():
            return True
        return False

    def has_cuidados(self):
        return self.get_cuidados().is_empty()

    def add_to_cuidados(self, cuidado):
        self.get_cuidados.insert_last(cuidado)

    def get_profissionais_in(self):
        return self.profissionais_in.keys(
        )  # List with all the profissionais in utente

    def add_profissional_in(self, nome_profissional):
        if not self.profissionais_in.has_key(nome_profissional):
            self.profissionais_in.insert(nome_profissional, None)

    def remove_profissional_in(self):
        profissionais_in = self.profissionais_in.keys().iterator()
        while profissionais_in.has_next():
            self.profissionais_in.remove(profissionais_in.next())

    def get_servicos_in(self):
        return self.serviços_in.keys()  # List with all the serviços in utente

    def add_servicos_in(self, name_serviço):
        if not self.serviços_in.has_key(name_serviço):
            self.serviços_in.insert(name_serviço, None)

    def remove_servicos_in(self):
        serviços_in = self.serviços_in.keys().iterator()
        while serviços_in.has_next():
            self.serviços_in.remove(serviços_in.next())