class TestZoo(unittest.TestCase): """docstring for ZooTest""" def setUp(self): self.zoo = Zoo("Sofia", 2, 3000) def test_atributes(self): self.assertEqual("Sofia", self.zoo.get_name()) self.assertEqual(2, self.zoo.get_capacity()) self.assertEqual([], self.zoo.get_animals()) def test_accomodate_animal(self): self.zoo.accommodate_animal("tiger", 18, "Zyblyo", "male", 19) self.assertEqual(1, len(self.zoo.get_animals())) self.assertEqual(True, self.zoo.accommodate_animal("tiger", 18, "Anastasij", "male", 19)) def test_see_animals(self): self.zoo.accommodate_animal("tiger", 18, "Zyblyo", "male", 19) expected = "Zyblyo\t - tiger, age: 18 years, weight: 19 kg" result = self.zoo.see_animals() self.assertEqual(expected, result) def test_remove_animal(self): self.zoo.accommodate_animal("tiger", 18, "Zyblyo", "male", 19) self.zoo.remove_animal("tiger", "Zyblyo") self.assertEqual(0, len(self.zoo.get_animals())) def test_move_animal(self): self.zoo.accommodate_animal("tiger", 18, "Spiridon", "male", 19) self.zoo.move_animal("tiger", "Spiridon") self.assertEqual(0, len(self.zoo.get_animals())) def test_daily_incomes(self): self.zoo.accommodate_animal("tiger", 18, "Tsveta", "female", 19) self.zoo.accommodate_animal("tiger", 18, "Svetla", "female", 19) self.assertEqual(120, self.zoo.daily_incomes()) def test_daily_expenses(self): self.zoo.accommodate_animal("tiger", 18, "Zyblyo", "male", 19) self.assertEqual(19 * 0.06 * 4, self.zoo.daily_expenses()) def test_born_animal(self): self.zoo.accommodate_animal("tiger", 18, "Snejan", "male", 19) self.zoo.accommodate_animal("tiger", 18, "Spiridonka", "female", 19) self.zoo.born_animal("tiger", "Spiridonka") self.assertEqual(3, len(self.zoo.get_animals())) def test_ready_to_give_birth(self): self.zoo.accommodate_animal("tiger", 18, "Snejan", "male", 19) self.zoo.accommodate_animal("tiger", 18, "Spiridonka", "female", 19) self.zoo.born_animal("tiger", "Spiridonka") self.assertFalse(self.zoo.born_animal("tiger", "Spiridonka")) def test_update_animals_from_database(self): self.assertEqual(0, len(self.zoo.get_animals())) self.db = self.zoo.get_database() animal1 = Animal("lion", 24, "Svetla", "female", 150) self.db.insert_animal(animal1) self.zoo.__animals = self.zoo.update_animals_from_database() self.assertEqual(1, len(self.zoo.get_animals())) first_animal = self.zoo.get_animals()[0] self.assertTrue(isinstance(first_animal, Animal)) def tearDown(self): call("rm Sofia.db", shell=True)
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)