def testTarifaMuyGrande(self): Tar = Tarifa(200000000000000000000,20000000000000000000000000) tiempo = [datetime.strptime("15-04-10/15:30","%y-%m-%d/%H:%M"), datetime.strptime("15-04-16/16:38","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: pass else: self.fail("El metodo debio generar error! Las tarifas son muy grandes")
def testFechaMuyAntigua(self): Tar = Tarifa(100,200) tiempo = [datetime.strptime("12-04-9/15:30","%y-%m-%d/%H:%M"), datetime.strptime("12-04-13/15:44","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: pass else: self.fail("El metodo debio tirar error! La fecha es muy antigua")
def testMinimoReservaValido(self): Tar = Tarifa(100,200) tiempo = [datetime.strptime("15-04-10/15:30","%y-%m-%d/%H:%M"), datetime.strptime("15-04-10/15:45","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: self.fail("El metodo debio ejecutarse!") else: pass
def testAmbasTarifasNegativas(self): Tar = Tarifa(-100,-200) tiempo = [datetime.strptime("15-04-10/15:30","%y-%m-%d/%H:%M"), datetime.strptime("15-04-12/16:38","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: pass else: self.fail("El metodo debio generar error! Las tarifas deben ser positivas")
def testFechaFinalAnterior(self): Tar = Tarifa(100,200) tiempo = [datetime.strptime("15-04-10/15:30","%y-%m-%d/%H:%M"), datetime.strptime("15-04-5/15:30","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: pass else: self.fail("El metodo debio tirar error! El fin de la reserva debe ser posterior al inicio de la reserva")
def testMaximoReservaInvalido(self): Tar = Tarifa(100,200) tiempo = [datetime.strptime("15-04-10/15:30","%y-%m-%d/%H:%M"), datetime.strptime("15-04-10/15:44","%y-%m-%d/%H:%M")] try: calcularPrecio(Tar, tiempo) except Exception: pass else: self.fail("El metodo debio tirar error! La reserva debe ser mayor de 15 minutos")
def testTiempo0(self): # Caso de prueba tiempo de reservacion = (0) minutos tarifaPrueba = Tarifa(15,17) reservaIni = datetime(2015, 4, 23, 9, 20, 0, 0) reservaFin = datetime(2015, 4, 23, 9, 20, 0, 0) tiempoReserva = [reservaIni,reservaFin] try: calcularPrecio(tarifaPrueba, tiempoReserva) except: pass
def testMaxTarifa15MTime(self): #Caso de prueba tarifa maxima, 15 minutos aTarifa = Tarifa(maxint,maxint) ini_reserva = datetime(2016, 4, 15, 0, 0) fin_reserva = datetime(2016, 4, 15, 0, 15) tiempoTrabajo = [ini_reserva,fin_reserva] self.assertEqual(calcularPrecio(aTarifa,tiempoTrabajo), maxint, "El resultado debio ser maxint")
def testMin15minutos(self): # Caso de prueba tiempo de reservacion = (15) minutos, tarifa pequena tarifaPrueba = Tarifa(50,100) reservaIni = datetime(2015, 4, 21, 6, 15, 0, 0) reservaFin = datetime(2015, 4, 21, 6, 30, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio, (50*15)/60)
def test7Dias(self): # Caso de prueba tiempo de reservacion = (7) dias con tarifa decimal tarifaPrueba = Tarifa(5.50,7.25) reservaIni = datetime(2015, 4, 19, 6, 0, 0, 0) reservaFin = datetime(2015, 4, 26, 6, 0, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio,((5.50*7200)+(7.25*2880))/ 60)
def testFinASemana(self): # Caso de prueba dias de reservacion (empieza fin de semana y termina en semana) con tarifa entera tarifaPrueba = Tarifa(17,23) reservaIni = datetime(2015, 5, 16, 5, 0, 0, 0) reservaFin = datetime(2015, 5, 18, 5, 0, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio,Decimal(((17*300)+(23*2580))/60))
def testSemanaAFin(self): # Caso de prueba dias de reservacion (empieza en semana y termina fin de semana) con tarifa decimal tarifaPrueba = Tarifa(10.12,15.3) reservaIni = datetime(2015, 5, 21, 7, 30, 0, 0) reservaFin = datetime(2015, 5, 24, 7, 30, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio,round(Decimal(((((10.12)*2430)+((15.3)*1890))/ 60)),2))
def testSemana(self): # Caso de prueba dias de reservacion (semana) con tarifa entera tarifaPrueba = Tarifa(8,12) reservaIni = datetime(2015, 6, 23, 7, 30, 0, 0) reservaFin = datetime(2015, 6, 25, 7, 30, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio,((8*2880)+(12*0))/ 60)
def testTiempo60minutosFinSem (self): # Caso de prueba tiempo de (60) minutos en un dia del fin de semana tarifaPrueba = Tarifa(12,23) reservaIni = datetime(2015, 4, 19, 12, 0, 0, 0) reservaFin = datetime(2015, 4, 19, 13, 0, 0, 0) tiempoReserva = [reservaIni, reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio, ((23*60 / 60)))
def testTarifaChiquita(self): # Caso de prueba tiempo menor a (14) minutos tarifaPrueba = Tarifa(0.00001, 0.002) reservaIni = datetime(2015, 4, 19, 6, 0, 0, 0) reservaFin = datetime(2015, 4, 26, 6, 0, 0, 0) tiempoReserva = [reservaIni, reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio, round(Decimal(((0.00001*7200 + 0.002*2880)/ 60)),2))
def testTarifaGrande(self): # Caso de prueba de una tarifa muy grande tarifaPrueba = Tarifa(3**21,3**32) reservaIni = datetime(2015, 4, 19, 6, 0, 0, 0) reservaFin = datetime(2015, 4, 26, 6, 0, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio, (((3**21)*7200 + (3**32)*2880)/ 60))
def testReservacionUnDia(self): #Caso de prueba para verificar una reservacion de un dia completo. pruebaTarifa = Tarifa(3,5) reservaInicial = datetime(2015,4,25,0,0,0,0) reservaFinal = datetime(2015,4,25,23,59,0,0) tiempoDeReserva = [reservaInicial,reservaFinal] precio = calcularPrecio(pruebaTarifa,tiempoDeReserva) self.assertEqual(precio, round(Decimal((5*1439)/60),2))
def testReservacionFinSemana(self): #Caso de prueba para verificar una reservacion en fin de semana pruebaTarifa = Tarifa(3,5) reservaInicial = datetime(2015,4,25,10,40,0,0) reservaFinal = datetime(2015,4,26,10,40,0,0) tiempoDeReserva = [reservaInicial,reservaFinal] precio = calcularPrecio(pruebaTarifa,tiempoDeReserva) self.assertEqual(precio, (5*1440)/60)
def testFinSemana(self): # Caso de prueba dias de reservacion (fin de semana) con tarifa entera tarifaPrueba = Tarifa(10,15) reservaIni = datetime(2015, 4, 25, 12, 30, 0, 0) reservaFin = datetime(2015, 4, 26, 12, 30, 0, 0) tiempoReserva = [reservaIni,reservaFin] precio = calcularPrecio(tarifaPrueba, tiempoReserva) self.assertEqual(precio,((10*0)+(15*1440))/ 60)
def testDecimal2Tarifa(self): # Caso de prueba Tarifa decimal 2 tarifa_de_prueba = Tarifa(5.4,7.6) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 14) tiempoTrabajo = [ini_reserva,fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio,(5.4*5*24) + (7.6*2*24))
def testtarifa15min(self): #Caso de prueba para tarifas con tiempo 15 minutos. pruebaTarifa = Tarifa(1,5) reservaInicial = datetime(2015,1,2,10,40,0,0) reservaFinal = datetime(2015,1,2,10,55,0,0) tiempoDeReserva = [reservaInicial,reservaFinal] precio = calcularPrecio(pruebaTarifa,tiempoDeReserva) self.assertEqual(precio, Decimal((1*15)/60))
def test7DaysTimerLunLun(self): # Caso de prueba tiempo de trabajo = (7) tarifa_de_prueba = Tarifa(1,2) ini_reserva = datetime(2016, 4, 11, 6, 0) fin_reserva = datetime(2016, 4, 18, 5, 59) tiempoTrabajo = [ini_reserva,fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio,((1*5*24)+(2*2*24)), "El precio debe ser 216 para t= 1 y tiempo= 7 dias")
def test15MTimeTarifa2FinSemana(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia, fines de semana aTarifa = Tarifa(1, 2) ini_reserva = datetime(2016, 4, 16, 0, 0) fin_reserva = datetime(2016, 4, 16, 0, 15) tiempoTrabajo = [ini_reserva, fin_reserva] self.assertEqual(calcularPrecio(aTarifa, tiempoTrabajo), 2, "El precio debe ser 2 para t=1 y tiempo = 15 ")
def testDecimal2Tarifa(self): # Caso de prueba Tarifa decimal 2 tarifa_de_prueba = Tarifa(5.4, 7.6) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 14) tiempoTrabajo = [ini_reserva, fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, (5.4 * 5 * 24) + (7.6 * 2 * 24))
def testBigTarifa(self): # Caso de prueba tarifa muy grande tarifa_de_prueba = Tarifa(2**31, 2**64) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 14) tiempoTrabajo = [ini_reserva, fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, (((2**31) * 5 * 24) + (2**64) * 2 * 24))
def test15MTimeTarifa1_2CasoBorde(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia, entre viernes y sabado aTarifa = Tarifa(1, 2) ini_reserva = datetime(2016, 4, 15, 23, 46) fin_reserva = datetime(2016, 4, 16, 0, 1) tiempoTrabajo = [ini_reserva, fin_reserva] self.assertEqual(calcularPrecio(aTarifa, tiempoTrabajo), 3, "El precio debe ser 3 para t=1 y tiempo = 15 ")
def test15MTimeTarifa2FinSemana(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia, fines de semana aTarifa = Tarifa(1,2) ini_reserva = datetime(2016, 4, 16, 0, 0) fin_reserva = datetime(2016, 4, 16, 0, 15) tiempoTrabajo = [ini_reserva,fin_reserva] self.assertEqual(calcularPrecio(aTarifa, tiempoTrabajo), 2, "El precio debe ser 2 para t=1 y tiempo = 15 ")
def test15MTimeTarifa1_2CasoBorde(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia, entre viernes y sabado aTarifa = Tarifa(1,2) ini_reserva = datetime(2016, 4, 15, 23, 46) fin_reserva = datetime(2016, 4, 16, 0, 1) tiempoTrabajo = [ini_reserva,fin_reserva] self.assertEqual(calcularPrecio(aTarifa, tiempoTrabajo), 3, "El precio debe ser 3 para t=1 y tiempo = 15 ")
def test0Tarifa(self): # Caso de prueba Tarifa(0,0) tarifa_de_prueba = Tarifa(0,0) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 10) tiempoTrabajo = [ini_reserva,fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, 0, "El precio debe ser 0 para t=0 y tiempo= 7 dias")
def test15MTimeSmallT(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia tarifa_de_prueba = Tarifa(0.01,0.01) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 21, 6, 30) tiempoTrabajo = [ini_reserva,fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, 0.01, "El precio debe ser 0.01 para t=0 y tiempo= 15")
def testBigTarifa(self): # Caso de prueba tarifa muy grande tarifa_de_prueba = Tarifa(2**31,2**64) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 14) tiempoTrabajo = [ini_reserva,fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, (((2**31)*5*24) + (2**64)*2*24))
def testReservacionMax7d(self): #Caso de prueba para verificar que la reservacion no sea mayor a 7 dias pruebaTarifa = Tarifa(3,5) reservaInicial = datetime(2015,1,2,10,40,0,0) reservaFinal = datetime(2015,1,9,10,40,0,0) tiempoDeReserva = [reservaInicial,reservaFinal] precio = calcularPrecio(pruebaTarifa,tiempoDeReserva) self.assertEqual(precio,((3*7200)/60)+((2880*5)/60))
def testDecimal1Tarifa(self): # Caso de prueba Tarifa decimal 1 tarifa_de_prueba = Tarifa(0.001,0.001) ini_reserva = datetime(2016, 4, 18, 6, 15) fin_reserva = datetime(2016, 4, 25, 6, 14) tiempoTrabajo = [ini_reserva,fin_reserva] self.assertEqual(calcularPrecio(tarifa_de_prueba, tiempoTrabajo), (0.001 * 5 * 24) + (0.001 * 2 * 24))
def testDecimal1Tarifa(self): # Caso de prueba Tarifa decimal 1 tarifa_de_prueba = Tarifa(0.001, 0.001) ini_reserva = datetime(2016, 4, 18, 6, 15) fin_reserva = datetime(2016, 4, 25, 6, 14) tiempoTrabajo = [ini_reserva, fin_reserva] self.assertEqual(calcularPrecio(tarifa_de_prueba, tiempoTrabajo), (0.001 * 5 * 24) + (0.001 * 2 * 24))
def testMaxTarifa15MTime(self): #Caso de prueba tarifa maxima, 15 minutos aTarifa = Tarifa(maxint, maxint) ini_reserva = datetime(2016, 4, 15, 0, 0) fin_reserva = datetime(2016, 4, 15, 0, 15) tiempoTrabajo = [ini_reserva, fin_reserva] self.assertEqual(calcularPrecio(aTarifa, tiempoTrabajo), maxint, "El resultado debio ser maxint")
def test7DaysTimerLunLun(self): # Caso de prueba tiempo de trabajo = (7) tarifa_de_prueba = Tarifa(1, 2) ini_reserva = datetime(2016, 4, 11, 6, 0) fin_reserva = datetime(2016, 4, 18, 5, 59) tiempoTrabajo = [ini_reserva, fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, ((1 * 5 * 24) + (2 * 2 * 24)), "El precio debe ser 216 para t= 1 y tiempo= 7 dias")
def test0Tarifa(self): # Caso de prueba Tarifa(0,0) tarifa_de_prueba = Tarifa(0, 0) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 28, 6, 10) tiempoTrabajo = [ini_reserva, fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, 0, "El precio debe ser 0 para t=0 y tiempo= 7 dias")
def test15MTimeSmallT(self): # Caso de prueba tiempo de trabajo = (15) minutos, tarifa pequenia tarifa_de_prueba = Tarifa(0.01, 0.01) ini_reserva = datetime(2015, 4, 21, 6, 15) fin_reserva = datetime(2015, 4, 21, 6, 30) tiempoTrabajo = [ini_reserva, fin_reserva] precio = calcularPrecio(tarifa_de_prueba, tiempoTrabajo) self.assertEqual(precio, 0.01, "El precio debe ser 0.01 para t=0 y tiempo= 15")
def testReservacionFinSemanaySemana(self): #Caso de prueba para verificar una reservacion que va de una #semana a otra pasando por un fin de semana. pruebaTarifa = Tarifa(3,5) reservaInicial = datetime(2015,4,23,10,40,0,0) reservaFinal = datetime(2015,4,28,10,40,0,0) tiempoDeReserva = [reservaInicial,reservaFinal] precio = calcularPrecio(pruebaTarifa,tiempoDeReserva) self.assertEqual(precio, round(Decimal(((2880*5)/60) + ((4320*3)/60)),2))
def testFechaIniMayorFechaFin(self): tarifa = Tarifa(1, 1) ini = datetime.datetime(2016, 4, 15, 7, 0) fin = datetime.datetime(2016, 4, 14, 7, 0) self.assertEqual(-1, calcularPrecio(tarifa, [ini, fin]))
def test_horaInvalida_calcularPrecio(self) -> 'void': fare = Tarifa(1.0, 2.0) period = TiempoDeTrabajo("2018-02-15 00:00:00", "2018-02-15 25:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, None)
def testHoraEntreDomingoyLunes(self): tarifa = Tarifa(1, 1) ini = datetime.datetime(2016, 4, 1, 23, 40) fin = datetime.datetime(2016, 4, 2, 0, 10) self.assertEqual(2, calcularPrecio(tarifa, [ini, fin]))
def testTimedelta0(self): tarifa = Tarifa(1,1) ini = datetime.datetime(2016, 4, 1, 7, 0) fin = datetime.datetime(2016, 4, 1, 7, 0) self.assertEqual(0, calcularPrecio(tarifa, [ini, fin]))
#!/usr/bin/python3 """ Titulo: casos_de_prueba.py Descripcion: Implementacion de casos de prueba para la funcion calcularPrecio(). Los casos de prueba son (ordenados alfabeticamente): 1. test_exists_calcularPrecio: Verifica que la funcion calcularPrecio() se encuentre declarada. (Malicia) 2. test_fechaInvalida_calcularPrecio: Verifica que no se introduzca una fecha incorrecta como 30 de feb. (Malicia) 3. test_horaInvalida_calcularPrecio: Verifica que no se introduzca una hora incorrecta como 25:00:00. (Malicia) 4. test_periodoCorto_calcularPrecio: Verifica que la funcion calcularPrecio() maneje correctamente los casos de menos de una hora. (Esquina) 5. test_periodoFalso_calcularPrecio: Verifica que la funcion calcularPrecio() maneje correctamente periodos invalidos. (Esquina) 6. test_periodoLargo_calcularPrecio: Verifica que la funcion calcularPrecio() maneje correctamente los periodos mayores a una semana. (Esquina) 7. test_periodoPermitido_calcularPrecio: Verifica que la funcion calcularPrecio() ejecute el calculo cuando el periodo es valido. (Malicia) 8. test_periodoSemanaCompleta_calcularPrecio: Verifica que la funcion calcularPrecio() ejecute el calculo correspondiente a una semana completa correctamente. (Frontera) 9. test_periodoSemanaYFin_calcularPrecio: Verifica que la funcion calcularPrecio() ejecute el calculo correspondiente a un dia de fin de fin de semana y a un dia de semana, correctamente. (Frontera) 10. test_periodoSemanaYFin2_calcularPrecio: Verifica que la funcion calcularPrecio() ejecute el calculo correspondiente a un dia de fin de semana y a varios dias de semana, correctamente. (Frontera)
def test_periodoSemanaCompleta_calcularPrecio(self) -> 'void': fare = Tarifa(1.0, 2.0) period = TiempoDeTrabajo("2018-05-06 06:00:00", "2018-05-13 06:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, 216.00)
def testTarifaFinSemNeg(self): tarifa = Tarifa(1, -1) ini = datetime.datetime(2016, 4, 1, 7, 0) fin = datetime.datetime(2016, 4, 3, 9, 0) self.assertEqual(-1, calcularPrecio(tarifa, [ini, fin]))
def test_tarifasPositivas_calcularPrecio(self) -> 'void': fare = Tarifa(1.0, 2.0) period = TiempoDeTrabajo("2018-05-06 06:00:00", "2018-05-06 17:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, 22.0)
def test_tarifasNulas_calcularPrecio(self) -> 'void': fare = Tarifa(0.00, 0.00) period = TiempoDeTrabajo("2018-05-06 06:00:00", "2018-05-06 17:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, None)
def testTarifaFinSem0(self): tarifa = Tarifa(1,0) ini = datetime.datetime(2016, 4, 1, 7, 0) fin = datetime.datetime(2016, 4, 8, 7, 0) self.assertEqual(24*5+1, calcularPrecio(tarifa, [ini, fin]))
def test_periodoSemanaYFin2_calcularPrecio(self) -> 'void': fare = Tarifa(1.0, 2.0) period = TiempoDeTrabajo("2018-05-10 06:00:00", "2018-05-12 20:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, 82.00)
def testNoFrontera(self): tarifa = Tarifa(1,1) ini = datetime.datetime(2016, 4, 13, 7, 0) fin = datetime.datetime(2016, 4, 14, 9, 14) self.assertEqual(27, calcularPrecio(tarifa, [ini, fin]))
def test_periodoLargo_calcularPrecio(self) -> 'void': fare = Tarifa(1.0, 2.0) period = TiempoDeTrabajo("2018-05-06 06:00:00", "2018-05-13 17:00:00") result = calcularPrecio(fare, period) self.assertEqual(result, None)