# dominio.py
import sys
class Usuario:
def __init__(self, nome):
self.__nome = nome
@property
def nome(self):
return self.__nome
class Lance:
def __init__(self, usuario, valor):
self.usuario = usuario
self.valor = valor
class Leilao:
def __init__(self, descricao):
self.descricao = descricao
self.__lances = []
@property
def lances(self):
return self.__lances
class Avaliador:
def __init__(self):
self.maior_lance = sys.float_info.min
self.menor_lance = sys.float_info.max
def avalia(self, leilao: Leilao):
for lance in leilao.lances:
if lance.valor > self.maior_lance:
self.maior_lance = lance.valor
elif lance.valor < self.menor_lance:
self.menor_lance = lance.valor
#principal.py
from dominio import Usuario, Lance, Leilao, Avaliador
gui = Usuario('Gui')
yuri = Usuario('Yuri')
lance_do_yuri = Lance(yuri, 100.0)
lance_do_gui = Lance(gui, 150.0)
leilao = Leilao('Celular')
leilao.lances.append(lance_do_yuri)
leilao.lances.append(lance_do_gui)
for lance in leilao.lances:
print(f'O usuario {lance.usuario.nome} deu um lance de {lance.valor}')
avaliador = Avaliador()
avaliador.avalia(leilao)
print(f'O menor lance foi de {avaliador.menor_lance} e o maior lance foi de {avaliador.maior_lance}')
#test_dominio.py
from unittest import TestCase
from dominio import Usuario, Lance, Leilao
class TestAvaliador(TestCase):
def test_avalia(self):
gui = Usuario('Gui')
yuri = Usuario('Yuri')
lance_do_yuri = Lance(yuri, 100.0)
lance_do_gui = Lance(gui, 150.0)
leilao = Leilao('Celular')
leilao.lances.append(lance_do_yuri)
leilao.lances.append(lance_do_gui)
avaliador = Avaliador()
avaliador.avalia(leilao)
menor_valor_esperado = 100.0
maior_valor_esperado = 150.0
self.assertEqual(menor_valor_esperado, avaliador.menor_lance)
self.assertEqual(maior_valor_esperado, avaliador.maior_lance)