Created
December 29, 2010 18:00
-
-
Save fzmaster/758811 to your computer and use it in GitHub Desktop.
Calcular o valor do ingresso do cinema dadas as condicoes pre estabelecidas
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import unittest | |
from enum import Enum | |
class Cinema(): | |
""" | |
Autor: fzmaster | |
Data: 28/12/2010 | |
Problema: Movie Tickets | |
http://codingkata.org/katas/unit/movie-tickets | |
Calcular o valor do ingresso do cinema dadas as condicoes pre estabelecidas | |
""" | |
precoTicket = 0.00 | |
pessoas = 0 | |
precoTotal = 0.00 | |
dias = Enum('DOM', 'SEG', 'TER', 'QUA', 'QUI', 'SEX', 'SAB') | |
dia = '' | |
def startPurchase(self, runtime, day, isParquet, is3D): | |
""" | |
Explicacao da funcao | |
""" | |
self.dia = day | |
if runtime > 120: | |
self.precoTicket += 1.50 | |
if bool(is3D): | |
self.precoTicket += 3.00 | |
if not bool(isParquet): | |
self.precoTicket += 2.00 | |
if str(self.dia) == str(self.dias[4]): | |
self.precoTicket -= 2.00 | |
def addTicket(self, age, isStudent): | |
precoPadrao = 0.00 | |
if bool(isStudent): | |
precoPadrao = 8.00 | |
else: | |
precoPadrao = 11.00 | |
if age >= 65: | |
precoPadrao = 6.00 | |
elif age <= 13: | |
precoPadrao = 5.50 | |
self.pessoas +=1 | |
self.precoTotal += precoPadrao + self.precoTicket | |
def finishPurchase(self,): | |
if self.pessoas >= 20 and str(self.dia) == str(self.dias[4]): | |
self.precoTotal += self.pessoas*2.00 | |
return self.precoTotal | |
class MovieTestCase(unittest.TestCase): | |
def test_movie1(self): | |
compra = Cinema() | |
compra.startPurchase(130,'TER', False, True) | |
compra.addTicket(14,True) | |
compra.addTicket(30,False) | |
assert compra.finishPurchase() == 32.00 | |
if __name__ == '__main__': | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment