def menu():
    print("**************************")
    print("***Manejador de Memoria***")
    print("**************************")

    #While true para que se ingrese la cantidad de bloques a manejar y detectar errores de ingresos erroneos
    while True:

        #intentamos recibir la cantidad de bloques por input
        try:
            
            bloques = int(input("Cantidad de bloques de memoria a manejar: "))
            if(bloques >= 1):
                break
            print("OJO: El minimo numero de bloques que puede introducir es 1.\n")

        #Si la cantidad de bloques de memoria a manejar es errada se avisa
        except:
            print("ERROR: Debe introducir un numero valido (entero).\n")

    #Creamos la memoria
    la_memoria = manejador.Memoria(2 ** bloques)

    #While True para introducir la accion que desea realizar y llevar a cabo lo que se pide
    while True:
        opcion = input("*Para reserservar espacio en memoria introduzca, RESERVAR.\n*Para liberar memoria, LIBERAR.\n*Para mostrar el estado de la memoria, MOSTRAR.\n*Si se quiere retirar, SALIR.\n Accion: ")
        
        #Si se va a reservar memoria:
        if opcion.lower() == 'reservar':

            #Si la cantidad de bloques de memoria es invalida se avisa
            try:
                num_bloques = int(input("Cantidad de bloques de memoria a reservar: "))
            
            #Se indica si hay error
            except:
                print("ERROR: Numero de bloques invalido.\n")

            #Se recibe el nombre del identificador
            identificador = input("Ingrese el identificador del programa al que se le reservara la memoria: ")
            la_memoria.agregar(num_bloques, identificador)

        #Si se va a liberar memoria
        elif opcion.lower() == 'liberar':
            identificador = input("Introduzca la identificador del programa a liberar los bloques de memoria: ")
            la_memoria.liberar(identificador)
        
        #Si se va a mostrar la memoria actual
        elif opcion.lower() == 'mostrar':
            la_memoria.mostrar_Memoria(la_memoria.bloque_raiz)

        #Si se va a salir del manejador
        elif opcion.lower() == 'salir':
            break

        #Si se introduce cualquier otra cosa se pide que se ingrese algo valido
        else:
            print("ERROR: Introduzca alguna de las opciones validas.\n")
 def test_liberar(self):
     la_memoria = manejador.Memoria(8)
     la_memoria.agregar(2, 'ID1')
     la_memoria.agregar(2, 'ID2')
     self.assertTrue(la_memoria.liberar('ID1'))
     self.assertTrue(la_memoria.liberar('ID2'))
 def test_agregar_liberar(self):
     la_memoria = manejador.Memoria(32)
     la_memoria.agregar(3, 'ID1')
     la_memoria.liberar('ID1')
     self.assertFalse('id1' in la_memoria.nombres)
 def test_Pasandose_de_Memoria(self):
     la_memoria = manejador.Memoria(16)
     self.assertIsNone(la_memoria.agregar(20, 'EPA! qlq!'))
 def test_agregar_Id_Existente(self):
     la_memoria = manejador.Memoria(16)
     la_memoria.agregar(1, 'ENTRO')
     self.assertIsNone(la_memoria.agregar(2, 'ENTRO'))
 def test_verificar_Algun_Hijo_Ocupado2(self):
     la_memoria = manejador.Memoria(32)
     la_memoria.agregar(3, 'Identificador')
     self.assertTrue(
         la_memoria.verificar_Algun_Hijo_Ocupado(la_memoria.bloque_raiz))
 def test_verificar_Algun_Hijo_Ocupado(self):
     la_memoria = manejador.Memoria(32)
     self.assertIsNone(
         la_memoria.verificar_Algun_Hijo_Ocupado(la_memoria.bloque_raiz))
 def test_mostrar_Memoria2(self):
     la_memoria = manejador.Memoria(8)
     la_memoria.agregar(1, 'ID1')
     la_memoria.mostrar_Memoria(la_memoria.bloque_raiz)
     print("\n\n")
 def test_mostrar_Memoria(self):
     la_memoria = manejador.Memoria(16)
     la_memoria.mostrar_Memoria(la_memoria.bloque_raiz)
     print("\n\n")
 def test_Memoria(self):
     la_memoria = manejador.Memoria(16)
     self.assertIsInstance(la_memoria, manejador.Memoria)