diff --git a/exercicios/para-casa/Biblioteca.py b/exercicios/para-casa/Biblioteca.py new file mode 100644 index 0000000..7f1ee4a --- /dev/null +++ b/exercicios/para-casa/Biblioteca.py @@ -0,0 +1,40 @@ +from Livro import Livro + +class Biblioteca: + def __init__(self): + self.livros = [] + + def adicionar_livro(self, livro: Livro): + if not isinstance(livro, Livro): + raise TypeError(f"Esperado Livro obtido valor {livro} do tipo {type(livro)}") + self.livros.append(livro) + + def exibir_livros(self): + return self.livros + + def emprestar_livro(self, nome_livro): + for livro in self.livros: + if livro.nome == nome_livro: + livro.esta_emprestado = True + return True + return False + + def remover_livro(self, nome_livro): + for livro in self.livros: + if livro.nome == nome_livro and not livro.esta_emprestado: + self.livros.remove(livro) + return + + def buscar_livro(self, nome_livro): + for livro in self.livros: + if livro.nome == nome_livro: + status = "emprestado" if livro.esta_emprestado else "disponível" + return f"Nome: {livro.nome}, Autor: {livro.autor}, Status: {status}" + return "Livro não encontrado" + + def devolver_livro(self, nome_livro): + for livro in self.livros: + if livro.nome == nome_livro: + livro.esta_emprestado = False + return + return "Livro não encontrado" \ No newline at end of file diff --git a/exercicios/para-casa/Livro.py b/exercicios/para-casa/Livro.py new file mode 100644 index 0000000..511863d --- /dev/null +++ b/exercicios/para-casa/Livro.py @@ -0,0 +1,5 @@ +class Livro: + def __init__(self, nome, autor): + self.nome = nome + self.autor = autor + self.esta_emprestado = False \ No newline at end of file diff --git a/exercicios/para-casa/__init__.py b/exercicios/para-casa/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/exercicios/para-casa/testBiblioteca.py b/exercicios/para-casa/testBiblioteca.py new file mode 100644 index 0000000..7043732 --- /dev/null +++ b/exercicios/para-casa/testBiblioteca.py @@ -0,0 +1,38 @@ +from unittest import TestCase +from Biblioteca import Biblioteca +from Livro import Livro + +class TestBiblioteca(TestCase): + def setUp(self): + self.biblioteca = Biblioteca() + + def test_exibir_livros_deve_retornar_lista_vazia_inicialmente(self): + # Assert + self.assertEqual([], self.biblioteca.exibir_livros()) + + def test_exibir_livros_deve_retornar_lista_com_livros_adicionados(self): + # Arrange + livro = Livro("O mito da beleza", "Naomi Wolf") + self.biblioteca.adicionar_livro(livro) + + # Act / Assert + self.assertEqual([livro], self.biblioteca.exibir_livros()) + + def test_emprestar_livro_deve_marcar_como_emprestado_se_encontrado(self): + # Arrange + livro = Livro("O mito da beleza", "Naomi Wolf") + self.biblioteca.adicionar_livro(livro) + + # Act + resultado = self.biblioteca.emprestar_livro("O mito da beleza") + + # Assert + self.assertTrue(resultado) + self.assertTrue(livro.esta_emprestado) + + def test_emprestar_livro_deve_retornar_False_se_livro_nao_encontrado(self): + # Act + resultado = self.biblioteca.emprestar_livro("Livro Inexistente") + + # Assert + self.assertFalse(resultado) \ No newline at end of file diff --git a/exercicios/para-casa/testLivro.py b/exercicios/para-casa/testLivro.py new file mode 100644 index 0000000..12f781d --- /dev/null +++ b/exercicios/para-casa/testLivro.py @@ -0,0 +1,16 @@ +from unittest import TestCase +from Livro import Livro + +class TestLivro(TestCase): + def test_init_deve_passar(self): + # Arrange + nome = "Calibã e a bruxa" + autor = "Silvia Federici" + + # Act + livro = Livro(nome, autor) + + # Assert + self.assertEqual(nome, livro.nome) + self.assertEqual(autor, livro.autor) + self.assertEqual(False, livro.esta_emprestado) \ No newline at end of file