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
Empty file added __init__.py
Empty file.
Empty file added assets/__init__.py
Empty file.
Empty file added exercicios/__init__.py
Empty file.
95 changes: 95 additions & 0 deletions exercicios/para-casa/Biblioteca.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
from Livro import Livro

class Biblioteca :
"""Classe biblioteca.

Para instanciar a classe utilize o exemplo:

biblioteca = Biblioteca()
"""
def __init__(self):
self.livros = []
"""Propriedade livros do tipo Lista"""

def adicionar_livro(self, livro: Livro):
"""Método adicionar_livro da classe Biblitoeca

Recebe o parâmetro livro do tipo da classe Livro e
adiciona na propriedade livros

Retorna exceção caso o parâmetro recebido não seja do tipo 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):
"""Método exibir_livros da classe Biblioteca

Exibe a lista de livros"""

return self.livros

def emprestar_livro(self, livro: Livro):

"""Método emprestar_livro da classe Biblioteca

Recebe o parâmetro livro do tipo da classe Livro e
muda o valor esta_emprestado"""

if livro in self.livros:
i = self.livros.index(livro)
self.livros[i].esta_emprestado = True

else:
raise ValueError("Livro não encontrado na biblioteca")

def remover_livro(self, livro: Livro):
"""Método remover_livro da classe Biblioteca

Recebe o parâmetro livro do tipo da classe Livro e
remove na propriedade livros
"""
if livro in self.livros:
i = self.livros.index(livro)
try:
if self.livros[i].esta_emprestado:
raise ValueError("Livros emprestados não podem ser removidos")
except:
pass
else:
self.livros.pop(i)
else:
raise ValueError("Livro não encontrado na biblioteca")

def buscar_livro(self, livro: Livro):
"""Método buscar_livro da classe Biblioteca

Recebe o parâmetro livro do tipo da classe Livro e
retorna suas propriedades
(nome do livro, autor e informação se livro está disponível ou emprestado)
"""
if livro in self.livros:
i = self.livros.index(livro)
livro_buscado = self.livros[i]
infos_livro = {
"Nome do livro": livro_buscado.nome_livro,
"Nome do autor": livro_buscado.autor_livro,
"O livro está disponível?": livro_buscado.esta_emprestado
}
return infos_livro
else:
raise ValueError("Livro não encontrado na biblioteca")

def devolver_livro(self, livro: Livro):
"""Método devolver_livro da classe Biblioteca

Recebe o parâmetro livro do tipo da classe Livro e
mudar o status do livro para não emprestado na propriedade Livros
"""
if livro in self.livros:
i = self.livros.index(livro)
self.livros[i].esta_emprestado = False

else:
raise ValueError("Livro não encontrado na biblioteca")
14 changes: 14 additions & 0 deletions exercicios/para-casa/Livro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class Livro:
"""Classe biblioteca.

Recebe no construtor os parametros nome e autor como o exemplo:

livro = Livro("nome livro","autor livro")
"""
def __init__(self, nome_livro, autor_livro):
self.nome_livro = nome_livro
"""propriedade nome do livro"""
self.autor_livro = autor_livro
"""propriedade autor do livro"""
self.esta_emprestado = False
"""propriedade esta_emprestado. Valor padrão é falso"""
Empty file.
115 changes: 115 additions & 0 deletions exercicios/para-casa/testBiblioteca.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
from unittest import TestCase
from Biblioteca import Biblioteca
from Livro import Livro

class TestBiblioteca(TestCase):

def setUp(self): # Esse método é chamado antes de cada um dos testes dessa classe
self.biblioteca = Biblioteca()

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

def test_adicionar_livro_deve_passar(self):
# Arrange
nome_livro = "Grande Sertão: Veredas"
autor_livro = "Guimarães Rosa"
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 = 1984

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

def test_exibir_livro_deve_passar(self):
# Arrange
nome_livro1 = "Cem anos de solidão"
autor_livro1 = "Gabriel García Márquez"
livro1 = Livro(nome_livro1, autor_livro1)

nome_livro2 = "A casa dos espíritos"
autor_livro2 = "Isabel Allende"
livro2 = Livro(nome_livro2, autor_livro2)

# # Act
self.biblioteca.adicionar_livro(livro1)
self.biblioteca.adicionar_livro(livro2)
livros_exibidos = self.biblioteca.exibir_livros()

# # Assert
retorno_esperado = [livro1, livro2]
self.assertEqual(retorno_esperado, livros_exibidos)

def test_emprestar_livro_deve_passar(self):

# Arrange
nome_livro = "Ficções"
autor_livro = "Jorge Luis Borges"
livro = Livro(nome_livro, autor_livro)
self.biblioteca.adicionar_livro(livro)

# # Act
self.biblioteca.emprestar_livro(livro)

# # Assert
self.assertTrue(self.biblioteca.livros[0].esta_emprestado)

def test_remover_livro_deve_passar(self):

# Arrange
nome_livro = "O paraíso são os outros"
autor_livro = "Valter Hugo Mãe"
livro = Livro(nome_livro, autor_livro)
self.biblioteca.adicionar_livro(livro)

# Act
self.biblioteca.remover_livro(livro)

# Assert
self.assertFalse(livro in self.biblioteca.livros)

def test_buscar_livro_deve_passar(self):

# Arrange
nome_livro = "Olhos d'água"
autor_livro = "Conceição Evaristo"
livro = Livro(nome_livro, autor_livro)
self.biblioteca.adicionar_livro(livro)

# Act
self.biblioteca.buscar_livro(livro)
livro_buscado = self.biblioteca.buscar_livro(livro)

# Assert
retorno_esperado = {
"Nome do livro": nome_livro,
"Nome do autor": autor_livro,
"O livro está disponível?": False}

self.assertEqual(livro_buscado, retorno_esperado)

def test_devolver_livro_deve_passar(self):

# Arrange
nome_livro = "Torto Arado"
autor_livro = "Itamar Vieira Junior"
livro = Livro(nome_livro, autor_livro)
self.biblioteca.adicionar_livro(livro)
self.biblioteca.emprestar_livro(livro)

# # Act
self.biblioteca.devolver_livro(livro)

# # Assert
self.assertFalse(self.biblioteca.livros[0].esta_emprestado)
14 changes: 14 additions & 0 deletions exercicios/para-casa/testLivro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
from unittest import TestCase
from Livro import Livro

class TestLivro(TestCase):
def test_init_deve_passar(self):
# Arrange
nome_livro = "A paixão segundo GH"
autor_livro = "Clarice Lispector"
# Act
livro = Livro(nome_livro, autor_livro)
# Assert
self.assertEqual(nome_livro, livro.nome_livro)
self.assertEqual(autor_livro, livro.autor_livro)
self.assertEqual(False, livro.esta_emprestado)
Empty file added material/__init__.py
Empty file.