def test_get_int_input(self):
     from user_input import get_int_input
     with mock.patch('builtins.input',
                     side_effect=[
                         'hello', '21', '-1234', '1-1', '0', '-0', '4', '10'
                     ]):
         self.assertEqual(
             0, get_int_input(0, 10, "pick a number between 0 and 10: "))
         self.assertEqual(
             0, get_int_input(0, 10, "pick a number between 0 and 10: "))
         self.assertEqual(
             4, get_int_input(0, 10, "pick a number between 0 and 10: "))
         self.assertEqual(
             10, get_int_input(0, 10, "pick a number between 0 and 10: "))
示例#2
0
 def print_menu_options(self, menu_options):
     for key, val in menu_options.items():
         menu_row = f"| [{key}] {val}"
         menu_row += f"{' ' * (get_header() - len(menu_row)-1)}|"
         print(menu_row)
     
     print_header()
     return menu_options[user_input.get_int_input("Option: ")]
示例#3
0
def remove_people():
    try:
        user_to_remove = user_input.get_int_input(
            "Select a person to delete by ID: ")
        people = load_dictionary_from_file("people")
        del people[user_to_remove]
        save_dictionary_to_file("people", people)

    except:
        raise Exception("Could not delete person from file")
示例#4
0
def change_drink_preference():
    clear()
    list_people()
    selected_person = user_input.get_int_input("Select person from list above. ID: ")
    clear()
    list_drinks()
    selected_drink = user_input.get_int_input("Select drink from list above. ID: ") 
    
    try:
        people = load_dictionary_from_file("people")
        drinks = load_dictionary_from_file("drinks")
    
        people[selected_person].fav_drink = drinks[selected_drink]

        save_dictionary_to_file("people", people)
        clear()
        print_people_menu_title()
        input("Favourite drink Set. Press enter to continue")
    except:
        print("an error occured when setting drinks preference")
示例#5
0
def remove_drink():
    try:
        drink_to_remove = user_input.get_int_input("Select a drink to delete by ID: ")
        drinks = load_dictionary_from_file("drinks")
        drink_name = drinks[drink_to_remove]

        del drinks[drink_to_remove]
        save_dictionary_to_file("drinks", drinks)
        
        print(f"{drink_name} succesfully removed")
    except:
        raise Exception("Could not remove drink")
示例#6
0
def remove_person():
    try:
        user_to_remove = user_input.get_int_input("Select a person to delete by ID: ")
        people = load_dictionary_from_file("people")
        person_name = people[user_to_remove]

        del people[user_to_remove]
        save_dictionary_to_file("people", people)

        print(f"{person_name} succesfully removed")
    except:
        raise Exception("Could not remove person")
示例#7
0
    def add_food(self):
        """this function is soooo ugly"""

        # temporary
        max_food = 1000
        prompt = """How much food do you want to add?
Enter a number between 0 and {0}: """.format(max_food)
        # ask user how much food they want to add.
        amount_of_food = get_int_input(0, max_food, prompt)
        intended_food = amount_of_food
        # add food in random places if the cell there is dead.
        attempts_to_add_food = 0
        while True:
            if amount_of_food <= 0:
                print(f'{intended_food} was added.')
                break

            random_x = random.randint(0, self.world_width - 2)
            random_y = random.randint(0, self.world_height - 2)
            cell = self.world[random_y][random_x]
            if (not cell['alive']) and (not cell['has-food']):
                cell['has-food'] = True
                amount_of_food -= 1

            # if more food is trying to be added than there is space availble for,
            # prevent that
            attempts_to_add_food += 1
            if attempts_to_add_food > intended_food * 5:
                message = """ after {0} attempts to add food
and {1} food added
the world gave up looking for places to add food.""".format(
                    attempts_to_add_food, intended_food - amount_of_food)
                newlined_print(message)
                break

        self.do_what_next()
示例#8
0
    def do_what_next(self):
        """Present the user with options, do the option chosen"""
        # create list of functions to call
        options = [
            self.go_on_living, Game.stop_living, self.add_food, self.save_life,
            self.load_life, self.restart_life, self.create_dead_world,
            self.change_environment_variables
        ]
        # create input prompt
        prompt = """What would you like to do next?
[1] go on living
[2] stop living
[3] add food
[4] save this life
[5] load a saved life
[6] restart life 
[7] create dead world
[8] change environmental variables

enter the number of your choice: """
        # ask user to pick a number. use number as index in options.
        choice = options[get_int_input(1, len(options), prompt) - 1]
        # call returned function
        choice()