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])
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)
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)
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()
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)
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)