Beispiel #1
0
 def test_fibonacci_avanza2_regresa1(self):
     numero = NumeroFibonacci()
     numeroesperado = 0
     numero.siguiente()
     numero.siguiente()
     numero.retroceder()
     numeroObtenido = numero.guardarEnlista().pop()
     self.assertEqual(numeroesperado, numeroObtenido)
Beispiel #2
0
 def test_avanza2regresa2(self):
     with self.assertRaises(ValueError) as cero:
         numero = NumeroFibonacci()
         numero.siguiente()
         numero.siguiente()
         numero.retroceder()
         numero.retroceder()
     self.assertEqual("No existe un número de fibonacci después de cero",
                      str(cero.exception))
Beispiel #3
0
class PanelPrincipal(tk.Frame):
    __numero = NumeroFibonacci()

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)
        letreroprincipal = tk.Label(self,
                                    text="  Numero Fibonacci",
                                    font=("Verdana", 12))
        letreroprincipal.grid(row=0, column=0)
        incrementar = tk.Button(self, text="incrementar")
        incrementar.grid(row=1, column=0)
        decrementar = tk.Button(self, text="decrementar")
        decrementar.grid(row=1, column=1)

        campotextobinario = CampoDeTexto("binario", 50)
        campotextobinario.pack()

        campotextohexadecimal = CampoDeTexto("hexadecimal", 50)
        campotextohexadecimal.pack()

        letrerobasesnumericas = tk.Label(
            self, text=" Numero en binario y hexadecimal")
        letrerobasesnumericas.grid(row=2, column=0)

        def eventosiguientenumero(event):
            try:
                self.__numero.siguiente()
                numerosiguiente = self.__numero.guardarEnlista().pop()
                campotextobinario.insertartexto(numerosiguiente)
                campotextohexadecimal.insertartexto(numerosiguiente)
            except ValueError:
                campotextohexadecimal.limpiar()
                campotextobinario.limpiar()

        def eventoanteriornumero(event):
            try:
                self.__numero.retroceder()
                numeroanterior = self.__numero.guardarEnlista().pop()
                campotextohexadecimal.insertartexto(numeroanterior)
                campotextobinario.insertartexto(numeroanterior)
            except ValueError:
                campotextohexadecimal.limpiar()
                campotextobinario.limpiar()

        decrementar.bind("<Button-1>", eventoanteriornumero)
        incrementar.bind("<Button-1>", eventosiguientenumero)
Beispiel #4
0
    def initUI(self):

        self.master.title("Review")
        self.pack(fill=BOTH, expand=True)

        frameNumeroFibonacci = Frame(self)
        frameNumeroFibonacci.pack(fill=X)

        letreroFibonacci = Label(frameNumeroFibonacci,
                                 text="Número de Fibonacci",
                                 width=30)
        letreroFibonacci.pack(side=LEFT, padx=5, pady=5)
        botonFibonacciAvanzar = Button(frameNumeroFibonacci, text="Avanzar")
        botonFibonacciAvanzar.pack(side=LEFT, padx=5, pady=5)
        botonFibonacciRetroceder = Button(frameNumeroFibonacci,
                                          text="Retroceder")
        botonFibonacciRetroceder.pack(side=LEFT, padx=5, pady=5)

        frameNumerodelaSuerte = Frame(self)
        frameNumerodelaSuerte.pack(fill=X)

        letreroSuerte = Label(frameNumerodelaSuerte,
                              text="Número De la Suerte",
                              width=30)
        letreroSuerte.pack(side=LEFT, padx=5, pady=5)
        botonSuerteAvanzar = Button(frameNumerodelaSuerte, text="Avanzar")
        botonSuerteAvanzar.pack(side=LEFT, padx=5, pady=5)
        botonSuerteRetroceder = Button(frameNumerodelaSuerte,
                                       text="Retroceder")
        botonSuerteRetroceder.pack(side=LEFT, padx=5, pady=5)

        frameNumerodePadovan = Frame(self)
        frameNumerodePadovan.pack(fill=X)
        letreroPadovan = Label(frameNumerodePadovan,
                               text="Número De Pavodan",
                               width=30)
        letreroPadovan.pack(side=LEFT, padx=5, pady=5)
        botonPadovanAvanzar = Button(frameNumerodePadovan, text="Avanzar")
        botonPadovanAvanzar.pack(side=LEFT, padx=5, pady=5)
        botonPadovanRetroceder = Button(frameNumerodePadovan,
                                        text="Retroceder")
        botonPadovanRetroceder.pack(side=LEFT, padx=5, pady=5)

        #---------------------------------------

        frameNumeroFeliz = Frame(self)
        frameNumeroFeliz.pack(fill=X)
        letreroNumeroFeliz = Label(frameNumeroFeliz,
                                   text="¿Es Un Número Feliz?",
                                   width=30)
        letreroNumeroFeliz.pack(side=LEFT, padx=5, pady=5)
        campoEsNumeroFeliz = Subscriptor("numero feliz", 50)
        campoEsNumeroFeliz.place(x=150, y=110)

        frameNumerocapicua = Frame(self)
        frameNumerocapicua.pack(fill=X)
        letreroNumerocapicua = Label(frameNumerocapicua,
                                     text="¿Es Un Número Capicúa?",
                                     width=30)
        letreroNumerocapicua.pack(side=LEFT, padx=5, pady=5)
        campoEsNumerocapicua = Subscriptor("numero capicua", 50)
        campoEsNumerocapicua.place(x=150, y=140)

        frameNumeroDecimal = Frame(self)
        frameNumeroDecimal.pack(fill=X)
        letreroNumeroDecimal = Label(frameNumeroDecimal,
                                     text="El numero en decimal",
                                     width=30)
        letreroNumeroDecimal.pack(side=LEFT, padx=5, pady=5)
        campoEsNumeroDecimal = Subscriptor("decimal", 50)
        campoEsNumeroDecimal.place(x=150, y=170)

        frameNumeroBinario = Frame(self)
        frameNumeroBinario.pack(fill=X)
        letreroNumeroBinario = Label(frameNumeroBinario,
                                     text="El numero en Binario",
                                     width=30)
        letreroNumeroBinario.pack(side=LEFT, padx=5, pady=5)
        campoNumeroBinario = Subscriptor("binario", 50)
        campoNumeroBinario.place(x=150, y=200)

        frameNumeroHexadecimal = Frame(self)
        frameNumeroHexadecimal.pack(fill=X)
        letreroNumeroHexadecimal = Label(frameNumeroHexadecimal,
                                         text="El numero en hexadecimal",
                                         width=30)
        letreroNumeroHexadecimal.pack(side=LEFT, padx=5, pady=5)
        campoNumeroHexadecimal = Subscriptor("hexadecimal", 50)
        campoNumeroHexadecimal.place(x=150, y=226)

        frameNumeroaNombre = Frame(self)
        frameNumeroaNombre.pack(fill=X)
        letreroNumeroaNombre = Label(frameNumeroaNombre,
                                     text="El numero en Español",
                                     width=30)
        letreroNumeroaNombre.pack(side=LEFT, padx=5, pady=5)
        campoNumeroaNombre = Subscriptor("numero en espaniol", 50)
        campoNumeroaNombre.place(x=150, y=250)

        __numeroFibonacci = NumeroFibonacci()
        __numeroSuerte = NumeroDeLaSuerte()
        __numeroPadovan = SeriePadoVan()

        publicadorFibonacci = PublicadorBoton(
            ['incrementar', 'decrementar', 'limpiar'], __numeroFibonacci)
        publicadorFibonacci.registrar('incrementar', campoEsNumeroFeliz)
        publicadorFibonacci.registrar('decrementar', campoEsNumeroFeliz)

        publicadorFibonacci.registrar('incrementar', campoEsNumerocapicua)
        publicadorFibonacci.registrar('decrementar', campoEsNumerocapicua)

        publicadorFibonacci.registrar('incrementar', campoEsNumeroDecimal)
        publicadorFibonacci.registrar('decrementar', campoEsNumeroDecimal)

        publicadorFibonacci.registrar('incrementar', campoNumeroBinario)
        publicadorFibonacci.registrar('decrementar', campoNumeroBinario)

        publicadorFibonacci.registrar('incrementar', campoNumeroHexadecimal)
        publicadorFibonacci.registrar('decrementar', campoNumeroHexadecimal)

        publicadorFibonacci.registrar('incrementar', campoNumeroaNombre)
        publicadorFibonacci.registrar('decrementar', campoNumeroaNombre)

        publicadorNumeroDeLaSuerte = PublicadorBoton(
            ['incrementar', 'decrementar', 'limpiar'], __numeroSuerte)
        publicadorNumeroDeLaSuerte.registrar('incrementar', campoEsNumeroFeliz)
        publicadorNumeroDeLaSuerte.registrar('decrementar', campoEsNumeroFeliz)

        publicadorNumeroDeLaSuerte.registrar('incrementar',
                                             campoEsNumerocapicua)
        publicadorNumeroDeLaSuerte.registrar('decrementar',
                                             campoEsNumerocapicua)

        publicadorNumeroDeLaSuerte.registrar('incrementar',
                                             campoEsNumeroDecimal)
        publicadorNumeroDeLaSuerte.registrar('decrementar',
                                             campoEsNumeroDecimal)

        publicadorNumeroDeLaSuerte.registrar('incrementar', campoNumeroBinario)
        publicadorNumeroDeLaSuerte.registrar('decrementar', campoNumeroBinario)

        publicadorNumeroDeLaSuerte.registrar('incrementar',
                                             campoNumeroHexadecimal)
        publicadorNumeroDeLaSuerte.registrar('decrementar',
                                             campoNumeroHexadecimal)

        publicadorNumeroDeLaSuerte.registrar('incrementar', campoNumeroaNombre)
        publicadorNumeroDeLaSuerte.registrar('decrementar', campoNumeroaNombre)

        publicadorNumeroDePadovan = PublicadorBoton(
            ['incrementar', 'decrementar', 'limpiar'], __numeroPadovan)
        publicadorNumeroDePadovan.registrar('incrementar', campoEsNumeroFeliz)
        publicadorNumeroDePadovan.registrar('decrementar', campoEsNumeroFeliz)

        publicadorNumeroDePadovan.registrar('incrementar',
                                            campoEsNumerocapicua)
        publicadorNumeroDePadovan.registrar('decrementar',
                                            campoEsNumerocapicua)

        publicadorNumeroDePadovan.registrar('incrementar',
                                            campoEsNumeroDecimal)
        publicadorNumeroDePadovan.registrar('decrementar',
                                            campoEsNumeroDecimal)

        publicadorNumeroDePadovan.registrar('incrementar', campoNumeroBinario)
        publicadorNumeroDePadovan.registrar('decrementar', campoNumeroBinario)

        publicadorNumeroDePadovan.registrar('incrementar',
                                            campoNumeroHexadecimal)
        publicadorNumeroDePadovan.registrar('decrementar',
                                            campoNumeroHexadecimal)

        publicadorNumeroDePadovan.registrar('incrementar', campoNumeroaNombre)
        publicadorNumeroDePadovan.registrar('decrementar', campoNumeroaNombre)

        def eventoSiguienteNumeroDePadovan(event):
            publicadorNumeroDePadovan.enviar("incrementar")

        def eventoAnteriorNumeroDePadovan(event):
            try:
                publicadorNumeroDePadovan.enviar("decrementar")
            except ValueError:
                pass

        def eventoSiguienteNumeroDeLaSuerte(event):
            publicadorNumeroDeLaSuerte.enviar("incrementar")

        def eventoAnteriorNumeroDeLaSuerte(event):
            try:
                publicadorNumeroDeLaSuerte.enviar("decrementar")
            except ValueError:
                pass

        def eventoSiguienteNumeroFibonacci(event):
            publicadorFibonacci.enviar("incrementar")

        def eventoanteriornumeroFibonacci(event):
            try:
                publicadorFibonacci.enviar("decrementar")
            except ValueError:
                pass

        botonFibonacciAvanzar.bind("<Button-1>",
                                   eventoSiguienteNumeroFibonacci)
        botonFibonacciRetroceder.bind("<Button-1>",
                                      eventoanteriornumeroFibonacci)
        botonSuerteAvanzar.bind("<Button-1>", eventoSiguienteNumeroDeLaSuerte)
        botonSuerteRetroceder.bind("<Button-1>",
                                   eventoAnteriorNumeroDeLaSuerte)
        botonPadovanAvanzar.bind("<Button-1>", eventoSiguienteNumeroDePadovan)
        botonPadovanRetroceder.bind("<Button-1>",
                                    eventoAnteriorNumeroDePadovan)
Beispiel #5
0
 def test_numero_siguiente_fibonacci(self):
     numero = NumeroFibonacci()
     numeroesperado = 0
     numero.siguiente()
     numeroObtenido = numero.guardarEnlista().pop()
     self.assertEqual(numeroesperado, numeroObtenido)
Beispiel #6
0
        return self.subscribers[event]

    def register(self, event, who, callback=None):
        if callback is None:
            callback = getattr(who, 'update')
        self.get_subscribers(event)[who] = callback

    def unregister(self, event, who):
        del self.get_subscribers(event)[who]

    def dispatch(self, event, message):
        for subscriber, callback in self.get_subscribers(event).items():
            callback(message)


pub = Publisher(['lunch', 'dinner'])
numero = NumeroFibonacci()
bob = Subscriber('bob')
alice = Subscriber('alice')
juan = Subscriber('juan')

pub.register("lunch", bob)
pub.register("dinner", alice)
pub.register("dinner", juan)
pub.register("lunch", juan)

numero.siguiente()
n = numero.guardarEnlista().pop()
pub.dispatch("lunch", n)
pub.dispatch("dinner", n)