コード例 #1
0
 def testCreoUnPlanificadorConUnContratoLeAgregoDosMasYVerificoLaCantidadDeContratos(
         self):
     contratos = [Contrato(t_inicio=2, t_final=9)]
     p = PlanificadorGreedy(contratos)
     p.agregarContrato(Contrato(3, 4))
     p.agregarContrato(Contrato(11, 14))
     assert len(p.listaDeContratos) == 3
コード例 #2
0
 def testCreoDosContratosYVerificoLosTiemposInicialesYFinales(self):
     c1 = Contrato(t_inicio=4, t_final=9)
     c2 = Contrato(t_inicio=1, t_final=11)
     assert c1.t_inicio == 4
     assert c1.t_final == 9
     assert c2.t_inicio == 1
     assert c2.t_final == 11
コード例 #3
0
 def testInicializoUnPlanificadorConUnaListaDeDosContratosYVerificoQueTengaLongitudDos(
         self):
     contratos = [
         Contrato(t_inicio=2, t_final=7),
         Contrato(t_inicio=4, t_final=6)
     ]
     p = PlanificadorGreedy(contratos)
     assert len(p.listaDeContratos) == 2
コード例 #4
0
 def test6CronogramaCorrectoEnunciado(self):
     c1 = Contrato(0, 27)
     c2 = Contrato(81, 102)
     c3 = Contrato(140, 10)
     p = PlanificadorGreedy([c1, c2, c3])
     expected = [c2, c1]
     cronograma = p.obtenerCronogramaConMayorCantidadDeContratos()
     self.printDif(cronograma, expected)
     self.assertCountEqual(cronograma, expected)
コード例 #5
0
 def test2PlanificacionCorrecta(self):
     c1 = Contrato(2, 5)
     c2 = Contrato(0, 3)
     c3 = Contrato(4, 11)
     p = PlanificadorGreedy([c1, c2, c3])
     cronograma = p.obtenerCronogramaConMayorCantidadDeContratos()
     expected = [c2, c3]
     self.printDif(cronograma, expected)
     self.assertCountEqual(cronograma, expected)
コード例 #6
0
 def testInicializoUnPlanificadorConUnaListaQueNoContieneSoloContratosYVerificoQueSeLanceUnaExcepcion(
         self):
     with pytest.raises(
             Exception,
             match=
             "La lista solo puede contener objetos de tipo Contrato, no de tipo <class 'str'>."
     ):
         c1 = Contrato(t_inicio=2, t_final=7)
         c2 = "no soy un contrato"
         c3 = Contrato(t_inicio=4, t_final=9)
         p = PlanificadorGreedy([c1, c2, c3])
コード例 #7
0
 def test4PlanificacionCorrectaCiclica(self):
     c1 = Contrato(20, 10)
     c2 = Contrato(9, 12)
     c3 = Contrato(11, 13)
     c4 = Contrato(14, 15)
     c5 = Contrato(16, 17)
     p = PlanificadorGreedy([c1, c2, c3, c4, c5])
     expected = [c1, c3, c4, c5]
     cronograma = p.obtenerCronogramaConMayorCantidadDeContratos()
     self.printDif(cronograma, expected)
     self.assertCountEqual(cronograma, expected)
コード例 #8
0
 def test3PlanificacionCorrecta(self):
     c1 = Contrato(0, 3)
     c2 = Contrato(0, 7)
     c3 = Contrato(4, 9)
     c4 = Contrato(8, 9)
     c5 = Contrato(10, 14)
     p = PlanificadorGreedy([c3, c2, c1, c4, c5])
     cronogrma = p.obtenerCronogramaConMayorCantidadDeContratos()
     expected = [c1, c3, c5]
     self.printDif(cronogrma, expected)
     self.assertCountEqual(cronogrma, expected)
コード例 #9
0
 def testCreoUnContratoConTiempoInicialInvalidoYVerificoQueLanceUnaExcepcion(
         self):
     with pytest.raises(
             Exception,
             match=
             "t_inicio has to be of type 'int' or 'float', not <class 'str'>."
     ):
         c = Contrato("a", 4)
コード例 #10
0
 def testCreoUnContratoConTiempoFinalInvalidoYVerificoQueLanceUnaExcepcion(
         self):
     with pytest.raises(
             Exception,
             match=
             "t_final has to be of type 'int' or 'float', not <class 'NoneType'>."
     ):
         c = Contrato(5, None)
コード例 #11
0
 def test7PlanificadorCiclico(self):
     c1 = Contrato(22, 3)
     c2 = Contrato(6, 9)
     c3 = Contrato(2, 7)
     c4 = Contrato(8, 10)
     c5 = Contrato(11, 13)
     c6 = Contrato(12, 15)
     c7 = Contrato(20, 0)
     p = PlanificadorGreedy([c1, c2, c3, c4, c5, c6, c7])
     expected = [c7, c3, c4, c5]
     cronograma = p.obtenerCronogramaConMayorCantidadDeContratos()
     self.assertCountEqual(cronograma, expected)
コード例 #12
0
    def getProximoContrato(self):
        """
            Devuelve una instancia de un nuevo contrato. Si el contrato tiene una duracion de una semana lo omite y devuelve None.
            Si no puede leer del archivo, levanta un EOFError.
        """
        linea = self.file.readline()
        if not linea:
            raise EOFError

        tokens = linea.split(",")
        nombre = tokens[0]
        t_inicio = int(tokens[1])
        t_final = int(tokens[2])

        if (t_final - t_inicio) > 168:
            print(
                "Los contratos no pueden exceder la duracion de una semana, omitiendo...", file=sys.stderr)
            return None

        return Contrato(t_inicio, t_final, nombre)
コード例 #13
0
                            arriendo_actual.setDisponible(False)
                            arriendo_actual.setArrendatario(
                                logeado
                            )  #enlace entre arriendo y el arrendatario
                            logeado.addContrato(
                                arriendo_actual
                            )  #se anade el contrato de arrendamieno a la lista de contratos del cliente
                            arriendo_actual.getInmueble().setTipo("arrendado")
                            print("Aplico")
                        else:
                            print("No aplico al arriendo de codigo " +
                                  str(arriendo_actual.getCodigo()))

                elif (opciones_cliente == 5):  #ver mis contratos actuales
                    print(
                        Contrato.mostrarValoresContratos(
                            logeado.getContratos()))
        else:
            print(msg.err_datos)  #Datos erroneos cliente

    elif (opcion1 == 5
          ):  #Opcion 5 del menu principal registrar nuevo propietario
        print(msg.registro)
        print(msg.cedula)
        cedula_propietario = int(input())
        encontrado = False
        for prop in lista_propietarios:
            if (prop.getCedula() == cedula_propietario
                ):  #encuentra un propietario con esa cedula
                print(msg.existe)
                encontrado = True
                break
コード例 #14
0
                        if arriendo_actual==None or not arriendo_actual.getDisponible():
                            print(msg.codigo_invalido)
                        else:
                            print(arriendo_actual.__str__())
                            oferta=input(msg.in_aplicar_arriendo)
                            if (oferta == "s" or oferta == "y"):
                                arriendo_actual.setDisponible(False)
                                arriendo_actual.setArrendatario(logeado)#enlace entre arriendo y el arrendatario
                                logeado.addContrato(arriendo_actual)#se anade el contrato de arrendamieno a la lista de contratos del cliente
                                arriendo_actual.getInmueble().setTipo("solicitado_arriendo")
                                print(msg.apli_arr)
                            else:
                                print(msg.no_apli_arr+str(arriendo_actual.getCodigo()))

                    elif(opciones_cliente == 5):#ver mis contratos actuales
                        print(Contrato.mostrarValoresContratos(logeado.getContratos()))

                    elif (opciones_cliente == 6):#ver ofertas de arrendamiento por estrato. 
                        print(msg.estrato_ini)
                        estratoIni=int(input())
                        print(msg.estrato_top)
                        estratoTop=int(input())
                        disp=Arriendo.buscarArriendoPorEstrato(lista_arriendos,estratoIni,estratoTop)
                        print(disp)
                         
                        
                    elif (opciones_cliente == 7):#ver ofertas de arrendamiento por numero de cuartos
                        print(msg.cuartos_ini)
                        cuartosIni=int(input())
                        print(msg.cuartos_top)
                        cuartosTop=int(input())
コード例 #15
0
 def testCreoUnContratoConTiempoInicialInvalidoYVerificoQueLanceUnaExcepcion(
         self):
     with pytest.raises(
             Exception,
             match="t_inicio value has to be greater or equal to 0."):
         c = Contrato(t_inicio=-1, t_final=3)
コード例 #16
0
 def testAgregoDosContratosAlPlanificadorYVerificoLaCantidadDeContratos(
         self):
     p = PlanificadorGreedy([])
     p.agregarContrato(Contrato(t_inicio=2, t_final=11))
     p.agregarContrato(Contrato(t_inicio=11, t_final=17))
     assert len(p.listaDeContratos) == 2
コード例 #17
0
 def testCreoUnContratoConTiempoFinalMenorATiempoInicialYVerificoQueLanceUnaExcepcion(
         self):
     with pytest.raises(
             Exception,
             match="t_final value has to be greater than t_inicio."):
         c = Contrato(t_inicio=5, t_final=3)
コード例 #18
0
 def novoContrato(self):
     contrato = Contrato(self)
     contrato.show()
コード例 #19
0
 def testCreoUnContratoYVerificoLosTiemposInicialesYFinales(self):
     c = Contrato(t_inicio=2, t_final=7)
     assert c.t_inicio == 2
     assert c.t_final == 7
コード例 #20
0
                c = i

        print("ID do Contratante : ")
        d = input()
        for i in contratanteobj:
            if (d == i.getID()):
                d = i

        print("ID do Imovel : ")
        e = input()
        for i in imovelobj:
            if (e == i.getID()):
                e = i

        print("---------------------------")
        z = Contrato(a, b, c, d, e)

        contratoobj.append(z)

        col4.insert_one({
            "ID": z.getID(),
            "Data": z.getData(),
            "Corretor": z.getCorretor(),
            "Contratante": z.getContratante(),
            "Imovel": z.getImovel()
        })

    if (x == 11):
        for i in contratoobj:
            print("------------------------")
            print((