예제 #1
0
파일: zoo_test.py 프로젝트: JusttRelaxx/Zoo
class TestZoo(unittest.TestCase):

    def setUp(self):
        self.bear = Animal("bear", 12, "Pesho", "male", 60)
        self.panda = Animal("panda", 12, "Ivo", "male", 60)
        animals = [self.bear, self.panda]
        self.zoo = Zoo(animals, 10, 200)

    def test_init(self):
        self.assertEqual(self.zoo.animals, [self.bear, self.panda])
        self.assertEqual(self.zoo.budget, 200)
        self.assertEqual(self.zoo.capacity, 10)

    def test_get_info(self):
        self.assertEqual(self.bear.get_info("gestation_period"), 3)

    def test_move_to_habitat(self):
        self.zoo.move_to_habitat("bear", "Pesho")
        self.assertEqual(self.zoo.animals, [self.panda])

    def test_daily_incomes(self):
        self.assertEqual(self.zoo.get_daily_incomes(), 120)

    def test_accommodate_an_animal(self):
        bear2 = Animal("bear", 12, "Pesho2", "male", 60)
        self.zoo.accommodate_an_animal(bear2)
        self.assertEqual(self.zoo.animals, [self.bear, self.panda, bear2])

    def test_remove_dead_animals(self):
        bear2 = Animal("bear", 12, "Pesho2", "male", 60)
        self.zoo.accommodate_an_animal(bear2)
        bear2.is_alive = False
        self.zoo.remove_dead_animals()
        self.assertEqual(self.zoo.animals, [self.bear, self.panda])
예제 #2
0
파일: test_zoo.py 프로젝트: feralieva/Zoo
class ZooTest(unittest.TestCase):
    def setUp(self):
        call('py create_animals_database.py', shell=True)
        self.db_conn = sqlite3.connect('animals.db')
        self.zoo = Zoo(self.db_conn, 2, 1000)
        self.zoo.animals = [Animal(self.db_conn, 'lion', 9, 'luv4o', 'male')]

    def test_see_animals(self):
        expected = ['luv4o : lion, 9, 67.5']
        self.assertEqual(expected, self.zoo.see_animals())

    def test_see_no_animals(self):
        self.zoo.animals = []
        self.assertEqual([], self.zoo.see_animals())

    def test_accomodate_animal(self):
        self.zoo.accomodate_animal('tiger', 'pe6o', 10, 'male')
        expected = ['luv4o : lion, 9, 67.5',
                    'pe6o : tiger, 10, 120.0']
        self.assertEqual(expected, self.zoo.see_animals())

    def test_accomodate_over_capacity(self):
        self.zoo.accomodate_animal('tiger', 'pe6o', 10, 'male')
        res = self.zoo.accomodate_animal('tiger', 'pe6ovica', 10, 'female')
        self.assertFalse(res)

        expected = ['luv4o : lion, 9, 67.5',
                    'pe6o : tiger, 10, 120.0']
        self.assertEqual(expected, self.zoo.see_animals())

    def test_move_to_habitat(self):
        result = self.zoo.move_to_habitat('lion', 'luv4o')
        expected = []
        self.assertTrue(result)
        self.assertEqual(expected, self.zoo.see_animals())

    def test_move_to_haibtat_with_non_existing_animal(self):
        result = self.zoo.move_to_habitat('asd', 'asd')
        self.assertFalse(result)

    def test_mate_animals(self):
        self.zoo.accomodate_animal('lion', 'pe6a', 10, 'female')
        self.zoo._mate_animals(9)
        self.assertEqual(3, len(self.zoo.animals))

    def test_simulate(self):
        self.zoo.animals = [Animal(self.db_conn, 'lion', 1, 'luv4o', 'male')]
        expected = ['month 1:',
                    'luv4o : lion, 2, 15.0',
                    'No animals have died during the past month.',
                    'No animals were born during the past month.',
                    'The current budget is 1057.92']
        self.assertEqual(expected, self.zoo.simulate('months', 1))

    def tearDown(self):
        self.db_conn.commit()
        self.db_conn.close()
        call('rm -f animals.db', shell=True)
예제 #3
0
파일: zoo_test.py 프로젝트: stoyaneft/Zoo
class TestZoo(unittest.TestCase):

    def setUp(self):
        self.zoo = Zoo(10, 1000)
        self.tiger = Animal('Tiger', 2, 'Gosho', 'Male', 20)
        self.zoo.accommodate(self.tiger)

    def tearDown(self):
        Zoo.animals = []
        Animal.NAMES = {}

    def test_init(self):
        self.assertEqual(self.zoo.capacity, 10)
        self.assertEqual(self.zoo.budget, 1000)
        self.assertEqual(self.zoo.animals, [self.tiger])

    def test_accommodate(self):
        self.assertIn(self.tiger, self.zoo.animals)

    def test_move_to_habitat(self):
        before = self.zoo.animals
        after = copy.deepcopy(self.zoo.animals)
        self.zoo.accommodate(self.tiger)
        self.zoo.move_to_habitat("Tiger", "Gosho")
        after = [x for x in self.zoo.animals if x.name !=
                 "Gosho" and x.species != "Tiger"]
        self.assertEqual(len(before), len(after) + 1)

    def test_interval_in_days(self):
        result = self.zoo.interval_in_days("days")
        self.assertEqual(result, 1)

    def test_interval_in_months(self):
        result = self.zoo.interval_in_days("months")
        self.assertEqual(result, 30)

    def test_interval_in_weeks(self):
        result = self.zoo.interval_in_days("weeks")
        self.assertEqual(result, 7)

    def test_interval_in_years(self):
        result = self.zoo.interval_in_days("years")
        self.assertEqual(result, 365)

    def test_calc_daily_incomes(self):
        rabbit = Animal('Rabbit', 2, 'Pesho', 'Female', 25)
        self.zoo.accommodate(rabbit)
        self.zoo.calculate_daily_income()
        self.assertEqual(self.zoo.budget, 1120)
예제 #4
0
def main():
    myzoo = Zoo()
    create_animal_table(cursor)
    while True:
        command = input('>>>')
        if command == 'list_animals' or command == 'l':
            see_animals(myzoo, cursor)

        elif command == 'simulate' or command == 's':
            interval = int(input('Enter interval of time in days:'))
            period = int(input('Enter period:'))
            for x in range (period):
                simulate(myzoo, interval, period, cursor)

        elif command == 'accommodate' or command == 'a':
            if myzoo.count_animals(cursor) >= myzoo.get_capacity():
                print("Your zoo is full")
                print(myzoo.count_animals(cursor))
            species = input('Enter species:')
            name = input('Enter name:')
            age = input('Enter age:')
            weight = input('Enter weight:')
            myzoo.accommodate(species, name, age, weight, cursor)
            conn.commit()

        elif command == 'move_to_habitat' or command == 'move':
            name = input('Name:')
            myzoo.move_to_habitat(name, cursor)
            print(name + ' has gone home!')
            conn.commit()

        elif command == 'exit':
            break

    conn.commit()
    conn.close()
예제 #5
0
class Zoo_test(unittest.TestCase):
    def setUp(self):
        self.zoopark = Zoo(2, 5)
        self.puh_panda = Animal("panda", 3, "Puh", "male", 100)

    def test_init_animal(self):
        self.zoopark.animals.append(self.puh_panda)
        self.assertEqual(self.zoopark.capacity, 2)
        self.assertEqual(self.zoopark.budget, 5)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)

    def test_add_animal(self):
        self.zoopark.add_animal(self.puh_panda)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)
        self.assertEqual(len(self.zoopark.animals), 1)

    def test_add_animal_full_zoo(self):
        self.zoopark.add_animal(self.puh_panda)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_tiger = Animal("tiger", 4, "Ivan", "male", 30)
        self.zoopark.add_animal(ivan_tiger)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)
        self.assertEqual(self.zoopark.animals[1], gosho_tiger)

    def test_add_animal_same_name(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(ivan_tiger)
        self.assertEqual(len(self.zoopark.animals), 1)
        self.assertEqual(self.zoopark.animals[0], gosho_tiger)

    def test_add_no_same_species(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_pantera = Animal("pantera", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(ivan_pantera)
        self.assertEqual(len(self.zoopark.animals), 1)

    def test_check_equal_species_name_false(self):
        ivan_tiger = Animal("tiger", 4, "Ivan", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.assertFalse(self.zoopark._check_equal_species_name(gosho_tiger))

    def test_check_equal_species_name_true(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.assertTrue(self.zoopark._check_equal_species_name(gosho_tiger))

    def test_daily_budget_upd(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        self.assertEqual(self.zoopark._daily_budget_update(), 24)

    def test_daily_budget_upd_no_animals(self):
        self.assertEqual(self.zoopark._daily_budget_update(), 0)

    def test_monthly_budget_upd(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        self.assertEqual(self.zoopark.monthly_budget_update(), 744)

    def test_zoo_budget_update(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark._update_zoo_budget(2)
        self.assertEqual(self.zoopark.budget, 2981)

    def test_generate_name(self):
        name = self.zoopark._generate_name()
        self.assertIn(name, config.NAMES)

    def test_generate_gender(self):
        gender = self.zoopark._generate_gender()
        self.assertIn(gender, ["male", "female"])

    def test_born_baby(self):
        yana_tiger = Animal("tiger", 7, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        baby = self.zoopark.born_animal(yana_tiger)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(baby.species, "tiger")
        self.assertEqual(baby.age, 0)
        self.assertIn(baby.name, config.NAMES)
        self.assertIn(baby.gender, ["male", "female"])
        self.assertEqual(baby.weight, 10)

    def test_accommodate(self):
        new_zoo = Zoo(1, 5)
        new_zoo.accommodate("tiger", 6, "misho", "male", 20)
        self.assertEqual(len(new_zoo.animals), 1)

    def test_accommodate_no_same_species(self):
        new_zoo = Zoo(1, 5)
        new_zoo.accommodate("pantera", 6, "misho", "male", 20)
        self.assertEqual(len(new_zoo.animals), 0)

    def test_move_to_habitat(self):
        self.zoopark.add_animal(self.puh_panda)
        self.zoopark.move_to_habitat("panda", "Puh")
        self.assertEqual(len(self.zoopark.animals), 0)

    def test_give_me_female_one(self):
        self.zoopark.add_animal(self.puh_panda)
        yana_tiger = Animal("tiger", 4, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        female = self.zoopark._give_me_female_one(self.puh_panda, yana_tiger)
        self.assertEqual(female.name, "Yana")

    def test_pregnance_reqs_female_true(self):
        yana_tiger = Animal("tiger", 7, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.assertTrue(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_pregnance_reqs_female_false1(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.assertFalse(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_pregnance_reqs_female_false2(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.assertFalse(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_make_reproduction_moves_true_one_couple(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertTrue(yana_tiger.is_pregnant)
        self.assertEqual(yana_tiger.gestination_period, 0)

    def test_make_reproduction_moves_true_some_animals(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.animals.append(self.puh_panda)
        puha_panda_f = Animal("panda", 8, "Vanya", "female", 100)
        self.zoopark.animals.append(puha_panda_f)
        dif_animal = Animal("bear", 8, "Vasilka", "female", 100)
        self.zoopark.animals.append(dif_animal)
        self.zoopark.make_reproduction_moves()
        self.assertTrue(yana_tiger.is_pregnant)
        self.assertEqual(yana_tiger.gestination_period, 0)
        self.assertTrue(puha_panda_f.is_pregnant)
        self.assertEqual(puha_panda_f.gestination_period, 0)

    def test_make_reproduction_moves_false1_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_make_reproduction_moves_false2_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        yana_tiger.gestination_period = 4
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertEqual(yana_tiger.gestination_period, 4)

    def test_make_reproduction_moves_false3_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("panda", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_make_reproduction_moves_false4(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_actions_with_pregnant_one(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.actions_with_pregnant_one(5)
        self.assertEqual(yana_tiger.gestination_period, 5)
        self.assertEqual(len(self.zoopark.animals), 1)
        self.assertEqual(yana_tiger.relax_period, 8)

    def test_actions_with_pregnant_one_new_baby(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.actions_with_pregnant_one(8)
        self.assertEqual(yana_tiger.gestination_period, 0)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(yana_tiger.relax_period, 2)
        baby = self.zoopark.animals[1]
        self.assertEqual(baby.age, 2)

    def test_growing(self):
        self.zoopark.animals.append(self.puh_panda)
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.grow_animals(5)
        self.assertEqual(self.puh_panda.age, 8)
        self.assertEqual(yana_tiger.age, 13)
예제 #6
0
class Zoo_test(unittest.TestCase):

    def setUp(self):
        self.zoopark = Zoo(2, 5)
        self.puh_panda = Animal("panda", 3, "Puh", "male", 100)

    def test_init_animal(self):
        self.zoopark.animals.append(self.puh_panda)
        self.assertEqual(self.zoopark.capacity, 2)
        self.assertEqual(self.zoopark.budget, 5)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)

    def test_add_animal(self):
        self.zoopark.add_animal(self.puh_panda)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)
        self.assertEqual(len(self.zoopark.animals), 1)

    def test_add_animal_full_zoo(self):
        self.zoopark.add_animal(self.puh_panda)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_tiger = Animal("tiger", 4, "Ivan", "male", 30)
        self.zoopark.add_animal(ivan_tiger)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(self.zoopark.animals[0], self.puh_panda)
        self.assertEqual(self.zoopark.animals[1], gosho_tiger)

    def test_add_animal_same_name(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(ivan_tiger)
        self.assertEqual(len(self.zoopark.animals), 1)
        self.assertEqual(self.zoopark.animals[0], gosho_tiger)

    def test_add_no_same_species(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        ivan_pantera = Animal("pantera", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(ivan_pantera)
        self.assertEqual(len(self.zoopark.animals), 1)

    def test_check_equal_species_name_false(self):
        ivan_tiger = Animal("tiger", 4, "Ivan", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.assertFalse(self.zoopark._check_equal_species_name(gosho_tiger))

    def test_check_equal_species_name_true(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.assertTrue(self.zoopark._check_equal_species_name(gosho_tiger))

    def test_daily_budget_upd(self):
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.add_animal(gosho_tiger)
        self.assertEqual(self.zoopark._daily_budget_update(), 24)

    def test_daily_budget_upd_no_animals(self):
        self.assertEqual(self.zoopark._daily_budget_update(), 0)

    def test_monthly_budget_upd(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        self.assertEqual(self.zoopark.monthly_budget_update(), 744)

    def test_zoo_budget_update(self):
        ivan_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(ivan_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark._update_zoo_budget(2)
        self.assertEqual(self.zoopark.budget, 2981)

    def test_generate_name(self):
        name = self.zoopark._generate_name()
        self.assertIn(name, config.NAMES)

    def test_generate_gender(self):
        gender = self.zoopark._generate_gender()
        self.assertIn(gender, ["male", "female"])

    def test_born_baby(self):
        yana_tiger = Animal("tiger", 7, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        baby = self.zoopark.born_animal(yana_tiger)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(baby.species, "tiger")
        self.assertEqual(baby.age, 0)
        self.assertIn(baby.name, config.NAMES)
        self.assertIn(baby.gender, ["male", "female"])
        self.assertEqual(baby.weight, 10)

    def test_accommodate(self):
        new_zoo = Zoo(1, 5)
        new_zoo.accommodate("tiger", 6, "misho", "male", 20)
        self.assertEqual(len(new_zoo.animals), 1)

    def test_accommodate_no_same_species(self):
        new_zoo = Zoo(1, 5)
        new_zoo.accommodate("pantera", 6, "misho", "male", 20)
        self.assertEqual(len(new_zoo.animals), 0)

    def test_move_to_habitat(self):
        self.zoopark.add_animal(self.puh_panda)
        self.zoopark.move_to_habitat("panda", "Puh")
        self.assertEqual(len(self.zoopark.animals), 0)

    def test_give_me_female_one(self):
        self.zoopark.add_animal(self.puh_panda)
        yana_tiger = Animal("tiger", 4, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        female = self.zoopark._give_me_female_one(self.puh_panda, yana_tiger)
        self.assertEqual(female.name, "Yana")

    def test_pregnance_reqs_female_true(self):
        yana_tiger = Animal("tiger", 7, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.assertTrue(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_pregnance_reqs_female_false1(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.assertFalse(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_pregnance_reqs_female_false2(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.assertFalse(self.zoopark._pregnance_reqs_female(yana_tiger))

    def test_make_reproduction_moves_true_one_couple(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertTrue(yana_tiger.is_pregnant)
        self.assertEqual(yana_tiger.gestination_period, 0)

    def test_make_reproduction_moves_true_some_animals(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.animals.append(self.puh_panda)
        puha_panda_f = Animal("panda", 8, "Vanya", "female", 100)
        self.zoopark.animals.append(puha_panda_f)
        dif_animal = Animal("bear", 8, "Vasilka", "female", 100)
        self.zoopark.animals.append(dif_animal)
        self.zoopark.make_reproduction_moves()
        self.assertTrue(yana_tiger.is_pregnant)
        self.assertEqual(yana_tiger.gestination_period, 0)
        self.assertTrue(puha_panda_f.is_pregnant)
        self.assertEqual(puha_panda_f.gestination_period, 0)

    def test_make_reproduction_moves_false1_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_make_reproduction_moves_false2_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        yana_tiger.gestination_period = 4
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("tiger", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertEqual(yana_tiger.gestination_period, 4)

    def test_make_reproduction_moves_false3_one_couple(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        gosho_tiger = Animal("panda", 4, "Gosho", "male", 30)
        self.zoopark.animals.append(gosho_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_make_reproduction_moves_false4(self):
        yana_tiger = Animal("tiger", 5, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.make_reproduction_moves()
        self.assertFalse(yana_tiger.is_pregnant)

    def test_actions_with_pregnant_one(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.actions_with_pregnant_one(5)
        self.assertEqual(yana_tiger.gestination_period, 5)
        self.assertEqual(len(self.zoopark.animals), 1)
        self.assertEqual(yana_tiger.relax_period, 8)

    def test_actions_with_pregnant_one_new_baby(self):
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        yana_tiger.is_pregnant = True
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.actions_with_pregnant_one(8)
        self.assertEqual(yana_tiger.gestination_period, 0)
        self.assertEqual(len(self.zoopark.animals), 2)
        self.assertEqual(yana_tiger.relax_period, 2)
        baby = self.zoopark.animals[1]
        self.assertEqual(baby.age, 2)

    def test_growing(self):
        self.zoopark.animals.append(self.puh_panda)
        yana_tiger = Animal("tiger", 8, "Yana", "female", 30)
        self.zoopark.animals.append(yana_tiger)
        self.zoopark.grow_animals(5)
        self.assertEqual(self.puh_panda.age, 8)
        self.assertEqual(yana_tiger.age, 13)
예제 #7
0
class TestZoo(unittest.TestCase):

    def setUp(self):
        self.zoo = Zoo(5, 50, Database("test_zoo.db"))
        self.a = ["lion", 24, "sharik", "male", 150]
        self.a2 = ["lion", 24, "niya", "female", 150]

    def test_zoo_init(self):
        self.assertEqual(5, self.zoo.capacity)
        self.assertEqual(50, self.zoo.budget)

    def test_accommodate(self):
        self.zoo.capacity = 0
        self.assertFalse(self.zoo.accommodate(*self.a))
        self.zoo.capacity = 5
        animal = Animal("lion", 24, "sharik", "male", 150)
        self.assertEqual(True, self.zoo.accommodate(*self.a))
        self.assertEqual(animal, self.zoo.animals[0])
        animals_from_db = self.zoo.database.zoo_conn.execute\
                ('''select * from zoo''').fetchall()
        self.assertEqual(1, len(animals_from_db))

    def test_move_to_habitat(self):
        self.zoo.accommodate(*self.a)
        self.zoo.move_to_habitat("lion", "sharik")
        self.assertEqual(0, len(self.zoo.animals))
        animals_from_db = self.zoo.database.zoo_conn.execute\
                ('''select * from zoo''').fetchall()
        self.assertEqual(0, len(animals_from_db))

    def test_see_animals(self):
        self.zoo.accommodate(*self.a)
        expected = "sharik the lion: 24 months, 150 kgs"
        self.assertEqual(expected, self.zoo.see_animals())

    def test_daily_incomes(self):
        self.assertEqual(0, self.zoo.daily_incomes())

    def test_daily_expenses(self):
        self.zoo.accommodate(*self.a)
        expected = 150 * 0.035
        self.assertEqual(expected * 4, self.zoo.daily_expenses())

    def test_spend_budget(self):
        result = self.zoo.spend_budget(50)
        self.assertEqual(0, self.zoo.budget)
        self.assertTrue(result)
        result = self.zoo.spend_budget(1)
        self.assertEqual(0, self.zoo.budget)
        self.assertFalse(result)

    def test_earn_budget(self):
        self.zoo.earn_budget(20)
        self.assertEqual(70, self.zoo.budget)

    def test_generate_name(self):
        self.zoo.accommodate(*self.a)
        male_name = self.zoo._generate_name("lion", "niya", "male")
        female_name = self.zoo._generate_name("lion", "niya", "female")
        self.assertEqual("sharik niya", male_name)
        self.assertEqual("niya sharik", female_name)

    def test_born_animal(self):
        self.zoo.accommodate(*self.a)
        self.zoo.accommodate(*self.a2)
        result = self.zoo.born_animal("lion", "niya")
        self.assertTrue(result)
        self.assertEqual(3, len(self.zoo.animals))

    def test_will_it_mate(self):
        self.zoo.accommodate(*self.a)
        self.zoo.accommodate(*self.a2)
        self.assertFalse(self.zoo.will_it_mate("lion", "niya"))
        self.zoo.database.set_last_breed("lion", "niya", 10)
        self.assertTrue(self.zoo.will_it_mate("lion", "niya"))

    def tearDown(self):
        call("rm -r {0}".format("test_zoo.db"), shell=True)