Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mariana Pires - Exercício S08 #14

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions exercicios/para-casa/Biblioteca.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from Livro import Livro

class Biblioteca :
def __init__(self): #Construtor
self.livros = [] #Lista de livros vazia

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) #Caso o valor seja válido, add o livro à lista self.livros

def exibir_livros(self): #Função que retorna a lista
# return [livro.nome for livro in self.livros] << isso exibiria apenas os nomes
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bacana demais que usou list comprehension

return self.livros #Retornar a lista self.livros encontrada em __init__

def emprestar_livro(self, nome_do_livro):
for livro in self.livros: #Para cada livro em self.livros
if livro.nome == nome_do_livro: #Se o nome do livro for igual à variável que eu criei nome_do_livro, ou seja, se ele existe
if not livro.esta_emprestado: #E se ele já não foi emprestado
livro.esta_emprestado = True #Agora ele será emprestado
return True #Aqui a gente indica que o empréstimo foi bem sucedido
return False #Se o livro foi emprestado, o empréstimo não será bem sucedido
return False #Se o nome não for igual ao nome de um livro existente na lista, ele será falso



5 changes: 5 additions & 0 deletions exercicios/para-casa/Livro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class Livro:
def __init__(self, nome, autor):
self.nome = nome
self.autor = autor
self.esta_emprestado = False
8 changes: 8 additions & 0 deletions exercicios/para-casa/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,15 @@ Critérios de aceitação:
- Caso o livro não seja encontrado o método não deve dar erro ou exceções
- Apenas livros não emprestados podem ser removidos (opcional)

<<<<<<< HEAD

add metodos (exibir_livros e emprestar_livro)


## Criar método search_book
=======
### Criar método buscar_livro
>>>>>>> 4831f0540239abc4ad89ee48719fa76f2c64b077
Critérios de aceitação:
- O método deve ter ao menos 1 (um) teste associado
- O método deve receber como parâmetro o nome do livro a ser buscado e retornar o nome do livro, autor e informação se livro está disponível ou emprestado
Expand Down
11 changes: 11 additions & 0 deletions exercicios/para-casa/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from Biblioteca import Biblioteca
from Livro import Livro
nome_livro = "O mito da beleza"
autor_livro = "Naomi Wolf"
livro_objeto = Livro(nome = nome_livro, autor = autor_livro)

biblioteca_objeto = Biblioteca()

print(biblioteca_objeto.livros)

biblioteca_objeto.adicionar_livro(livro_objeto)
46 changes: 46 additions & 0 deletions exercicios/para-casa/testBiblioteca.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
from unittest import TestCase #Identificador de uma classe de testes
from Biblioteca import Biblioteca
from Livro import Livro

class TestBiblioteca(TestCase):
#Utilizado para não precisar chamar a biblioteca em todas as funções
def setUp(self):
self.biblioteca = Biblioteca()

def test_init_deve_passar(self):
# Arrange / Act
# Assert
self.assertIsInstance(self.biblioteca.livros, list)

def test_adicionar_livro_deve_passar(self):
# Arrange
nome_livro = "O mito da beleza"
autor_livro = "Naomi Wolf"
livro = Livro(nome_livro, autor_livro)
# Act
self.biblioteca.adicionar_livro(livro)
# Assert
self.assertEqual(1, len(self.biblioteca.livros))

def test_adicionar_livro_nao_deve_inserir_numero(self):
# Arrange
livro = 1988

# Act / Assert
with self.assertRaises(TypeError):
self.biblioteca.adicionar_livro(livro)

def test_emprestar_livro_inexistente_deve_retornar_false(self):
#Act/Assert
self.assertFalse(self.biblioteca.emprestar_livro("Livro Inexistente"))

def test_exibir_livros_deve_retornar_lista_de_nomes(self):
# Arrange
livro1 = Livro("Uzumaki", "Junji Ito")
livro2 = Livro("Tomie", "Junji Ito")
self.biblioteca.adicionar_livro(livro1)
self.biblioteca.adicionar_livro(livro2)
# Act
lista_de_nomes = self.biblioteca.exibir_livros()
# Assert
self.assertEqual(["Uzumaki", "Tomie"], [livro.nome for livro in lista_de_nomes]) #Verifica se ambos os valores são iguais, se forem o teste passará
32 changes: 32 additions & 0 deletions exercicios/para-casa/testLivro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from unittest import TestCase
from Biblioteca import Biblioteca
from Livro import Livro

class TestLivro(TestCase):
def setUp(self):
self.biblioteca = Biblioteca()

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)

def test_emprestar_livro_deve_marcar_como_emprestado(self):
# Arrange
nome_do_livro = "Aura"
autor_do_livro = "Carlos Fuentes"
livro = Livro(nome_do_livro, autor_do_livro)
self.biblioteca.adicionar_livro(livro) #Add livro à lista

# Act
emprestado = self.biblioteca.emprestar_livro(nome_do_livro)

# Assert
self.assertTrue(emprestado) # Verifica se o empréstimo funcionou e se o livro está marcado como emprestado
self.assertTrue(livro.esta_emprestado)