From 54fec57ce515b63e2d1c83da02d9349df370fbff Mon Sep 17 00:00:00 2001 From: Nalla Cloviel Date: Wed, 27 Sep 2023 18:55:30 -0300 Subject: [PATCH 1/3] Projeto Guiado II - Nargylla Cloviel --- exercicios/para-casa/Biblioteca.py | 34 +++++++++++++ exercicios/para-casa/livro.py | 5 ++ exercicios/para-casa/testBiblioteca.py | 70 ++++++++++++++++++++++++++ exercicios/para-casa/testLivro.py | 16 ++++++ 4 files changed, 125 insertions(+) create mode 100644 exercicios/para-casa/Biblioteca.py create mode 100644 exercicios/para-casa/livro.py create mode 100644 exercicios/para-casa/testBiblioteca.py create mode 100644 exercicios/para-casa/testLivro.py diff --git a/exercicios/para-casa/Biblioteca.py b/exercicios/para-casa/Biblioteca.py new file mode 100644 index 0000000..18ff695 --- /dev/null +++ b/exercicios/para-casa/Biblioteca.py @@ -0,0 +1,34 @@ +from livro import Livro + +class Biblioteca : + def __init__(self): + self.livros = [] + + #Adicionando o livro + def adicionar_livro(self, livro: Livro): + if (not isinstance(livro, Livro)): + raise TypeError(f"Esoerado Livro obtido valor {livro} do tipo {type(livro)}") + + self.livros.append(livro) + + #Removendo o livro + def remover_livro(self, nome_livro): + livro_removido = False + for livro in self.livros: + if livro.nome == nome_livro: + self.livros.remove(livro) + livro_removido = True + + if not livro_removido: + raise ValueError (f"O livro {nome_livro} não existe na biblioteca!") + + #Pesquisar livro + def pesquisar_livro(self, nome_livro): + for livro in self.livros: + if livro.nome == nome_livro: + return livro + + + + + \ 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..e7bd2c3 --- /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/testBiblioteca.py b/exercicios/para-casa/testBiblioteca.py new file mode 100644 index 0000000..f2c9bea --- /dev/null +++ b/exercicios/para-casa/testBiblioteca.py @@ -0,0 +1,70 @@ +from unittest import TestCase +from Biblioteca import Biblioteca +from livro import Livro + +class TestBiblioteca(TestCase): + def test_init_deve_passar(self): + # Arrange / Act + biblioteca = Biblioteca() + + # Assert + self.assertIsInstance(biblioteca.livros, list) + +class TestBiblioteca(TestCase): + def test_init_deve_passar(self): + # Arrange / Act + biblioteca = Biblioteca() + + # Assert + self.assertIsInstance(biblioteca.livros, list) + + def test_adicionar_livro_deve_passar(self): + # Arrange + biblioteca = Biblioteca() + nome_livro = "Dom Casmurro" + autor_livro = "Machado de Assis" + livro = Livro(nome_livro, autor_livro) + + # Act + biblioteca.adicionar_livro(livro) + + # Assert + self.assertEqual(1, len(biblioteca.livros)) + + def test_adicionar_livro_nao_deve_inserir_numero(self): + #Arrange + biblioteca = Biblioteca + livro = 1988 + #act/assert + with self.assertRaises(TypeError): + biblioteca.adicionar_livro(livro) + + def test_remover_livro_deve_passar(self): + #Arrange + biblioteca = Biblioteca() + nome_livro = "Dom Casmurro" + autor_livro = "Machado de Assis" + livro = Livro(nome_livro, autor_livro) + biblioteca.adicionar_livro(livro) + + # Act + biblioteca.remover_livro(nome_livro) + + # Assert + self.assertEqual(0, len(biblioteca.livros)) + + + def test_pesquisar_livro_deve_passar(self): + #Arrange + biblioteca = Biblioteca() + nome_livro = "Dom Casmurro" + autor_livro = "Machado de Assis" + livro = Livro(nome_livro, autor_livro) + biblioteca.adicionar_livro(livro) + + #Act + livro_pesquisa = "Dom Casmurro" + livro_encontrado = biblioteca.pesquisar_livro(livro_pesquisa) + + # Act/#Assert + self.assertEqual("Dom Casmurro", livro_encontrado.nome) \ 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..2a1cda2 --- /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 = "O Alquimista" + autor = "Paulo Coelho" + + #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 From 84f259c564bc0b7620c027243ab63172642d2db2 Mon Sep 17 00:00:00 2001 From: Nalla Cloviel Date: Thu, 28 Sep 2023 17:32:27 -0300 Subject: [PATCH 2/3] Biblioteca.py --- exercicios/para-casa/Biblioteca.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/exercicios/para-casa/Biblioteca.py b/exercicios/para-casa/Biblioteca.py index 18ff695..9f5b9f8 100644 --- a/exercicios/para-casa/Biblioteca.py +++ b/exercicios/para-casa/Biblioteca.py @@ -10,7 +10,14 @@ def adicionar_livro(self, livro: Livro): raise TypeError(f"Esoerado Livro obtido valor {livro} do tipo {type(livro)}") self.livros.append(livro) - + + #exibir livro + def exibir_livros(self): + lista_livros = [] + for livro in self.livros: + lista_livros.append(f'{livro.nome} por {livro.autor}') + return lista_livros + #Removendo o livro def remover_livro(self, nome_livro): livro_removido = False @@ -31,4 +38,4 @@ def pesquisar_livro(self, nome_livro): - \ No newline at end of file + From 503d70a2f8fb8aa6cf9936d971ed071b042f97ae Mon Sep 17 00:00:00 2001 From: Nalla Cloviel Date: Thu, 28 Sep 2023 17:37:04 -0300 Subject: [PATCH 3/3] Update testBiblioteca.py --- exercicios/para-casa/testBiblioteca.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/exercicios/para-casa/testBiblioteca.py b/exercicios/para-casa/testBiblioteca.py index f2c9bea..0eaedd5 100644 --- a/exercicios/para-casa/testBiblioteca.py +++ b/exercicios/para-casa/testBiblioteca.py @@ -38,6 +38,18 @@ def test_adicionar_livro_nao_deve_inserir_numero(self): #act/assert with self.assertRaises(TypeError): biblioteca.adicionar_livro(livro) + + def test_exibir_livros_listados_deve_passar(self): + + #Arrange + biblioteca = Biblioteca() + #Act + livro1 = Livro("Dom Casmurro", "Machado de Assis") + biblioteca.adicionar_livro(livro1) + lista_de_livros = biblioteca.exibir_livros() + + #Assert + self.assertIn("Dom Casmurro por Machado de Assis", lista_de_livros) def test_remover_livro_deve_passar(self): #Arrange @@ -67,4 +79,4 @@ def test_pesquisar_livro_deve_passar(self): livro_encontrado = biblioteca.pesquisar_livro(livro_pesquisa) # Act/#Assert - self.assertEqual("Dom Casmurro", livro_encontrado.nome) \ No newline at end of file + self.assertEqual("Dom Casmurro", livro_encontrado.nome)