Skip to content
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
40 changes: 40 additions & 0 deletions exercicios/para-casa/Biblioteca.py
Original file line number Diff line number Diff line change
@@ -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"
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
Empty file.
38 changes: 38 additions & 0 deletions exercicios/para-casa/testBiblioteca.py
Original file line number Diff line number Diff line change
@@ -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)
16 changes: 16 additions & 0 deletions exercicios/para-casa/testLivro.py
Original file line number Diff line number Diff line change
@@ -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)