class testZoo(unittest.TestCase): def setUp(self): self.testAnim = Animal("zvqr", 10, 'gosh', 'male', 100) self.testZoo = Zoo(15, 12000) def test_get_animal_no_animals(self): self.assertEqual(0, self.testZoo.get_animal_count()) def test_add_animal_with_count(self): self.testZoo.add_animal(self.testAnim) self.assertEqual(1, self.testZoo.get_animal_count()) def test_remove_animal(self): self.testZoo.add_animal(self.testAnim) self.testZoo.remove_animal(self.testAnim) self.assertEqual(0, self.testZoo.get_animal_count()) def test_income(self): self.testZoo.add_animal(self.testAnim) # Add some animals self.testAnimTosh = Animal("zver", 10, 'tosh', 'female', 120) self.testAnimTesi = Animal("cver", 10, 'tesi', 'male', 20) self.testZoo.add_animal(self.testAnimTesi) self.testZoo.add_animal(self.testAnimTosh) self.assertEqual(180, self.testZoo.income())
class ZooTests(unittest.TestCase): def setUp(self): self.zoo = Zoo("Alexandria Zoo", 2, 1000) self.tiger_vitaly = Animal("tiger", 1, "Vitaly", "male", 180) self.lion_alex = Animal("lion", 1, "Alex", "male", 210) self.hippo_gloria = Animal("hippo", 2, "Gloria", "female", 1600) def test_get_zoo_name(self): self.assertEqual("Alexandria Zoo", self.zoo.get_name()) def test_get_zoo_max_capacity(self): self.assertEqual(2, self.zoo.get_max_capacity()) def test_get_zoo_budget(self): self.assertEqual(1000, self.zoo.get_budget()) def test_get_animals(self): self.assertEqual("", self.zoo.get_animals()) def test_add_animal(self): self.assertTrue(self.zoo.add_animal(self.tiger_vitaly)) self.assertEqual("<Vitaly>: <tiger>, <1>, <180>", self.zoo.get_animals()) def test_add_animal_when_no_space(self): self.assertTrue(self.zoo.add_animal(self.tiger_vitaly)) self.assertEqual("<Vitaly>: <tiger>, <1>, <180>", self.zoo.get_animals()) self.assertTrue(self.zoo.add_animal(self.lion_alex)) self.assertEqual("<Vitaly>: <tiger>, <1>, <180>\n<Alex>: <lion>, <1>, <210>", self.zoo.get_animals()) self.assertFalse(self.zoo.add_animal(self.hippo_gloria)) self.assertEqual("<Vitaly>: <tiger>, <1>, <180>\n<Alex>: <lion>, <1>, <210>", self.zoo.get_animals()) def test_remove_animal(self): self.assertTrue(self.zoo.add_animal(self.tiger_vitaly)) self.assertEqual("<Vitaly>: <tiger>, <1>, <180>", self.zoo.get_animals()) self.assertTrue(self.zoo.remove_animal(0)) self.assertEqual("", self.zoo.get_animals()) def test_is_there_space(self): self.assertTrue(self.zoo.is_there_space()) def test_is_there_space_when_no_space(self): self.assertTrue(self.zoo.add_animal("Tiger")) self.assertTrue(self.zoo.add_animal("Lion")) self.assertFalse(self.zoo.is_there_space()) def test_get_daily_expenses_when_empty_zoo(self): self.assertEqual(0, self.zoo.get_daily_expenses()) def test_get_daily_expenses(self): self.assertTrue(self.zoo.add_animal(self.tiger_vitaly)) expected = 4 * (self.tiger_vitaly.get_food_weight_ratio() * self.tiger_vitaly.weight) self.assertEqual(expected, self.zoo.get_daily_expenses())
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)
def main(): print("Hello and welcome to Sofia Zoo!" + "\n" "Please, enter one of the following commands:" + "\n" "see_animals" + "\n" "accommodate <species> <name> <age> <gender> <weight>" + "\n" "move_to_habitat <species> <name>" + "\n" "simulate <interval_of_time> <period> " + "\n" "finish") sofia_zoo = Zoo(20, 200) intervals_of_time = {1: "days", 2: "weeks", 3: "months", 4: "years"} panda = Animal("panda", 32, "Pandio", "male", 50) tiger = Animal("tiger", 20, "Tonny", "male", 110) tigress = Animal("tiger", 24, "Anne", "female", 75) sofia_zoo.accomodate_new_animal(panda) sofia_zoo.accomodate_new_animal(tiger) sofia_zoo.accomodate_new_animal(tigress) command = input("Enter command > ") lst = command.split(" ") while lst[0] != "finish": if lst[0] == "see_animals": for animal in sofia_zoo.animals: print("{} : {}, {}, {}".format(animal.name, animal.species, animal.age, round(animal.weight, 2))) if lst[0] == "accommodate": sofia_zoo.accomodate_new_animal(Animal(lst[1], lst[3], lst[2], lst[4], lst[5])) if lst[0] == "move_to_habitat": sofia_zoo.remove_animal(lst[1], lst[2]) if lst[0] == "simulate": print("Simulation of the zoo for {} {}".format(lst[2], lst[1])) if lst[1] == intervals_of_time[1]: days = lst[2] elif lst[1] == intervals_of_time[2]: days = lst[2] * DAYS_IN_WEEK elif lst[1] == intervals_of_time[3]: days = lst[2] * DAYS_IN_MONTH else: days = lst[2] * DAYS_IN_YEAR for animal in sofia_zoo.animals: animal.grow(days / DAYS_IN_MONTH) print("Animals in the zoo:") for animal in sofia_zoo.animals: print("{} : {}, {}, {}".format(animal.name, animal.species, animal.age, round(animal.weight, 2))) animal.grow(days / DAYS_IN_MONTH) for day in range(days): for animal in sofia_zoo.animals: animal.eat() if sofia_zoo.die(animal): print(animal.name + " has died") sofia_zoo.daily_income() sofia_zoo.daily_outcome() if sofia_zoo.budget == 0: print("The zoo cannot affor to feed all animals") number_of_animals_in_zoo = len(sofia_zoo.animals) sofia_zoo.reproduce(choice(sofia_zoo.animals), choice(sofia_zoo.animals)) #sofia_zoo.reproduce(tiger, tigress) if len(sofia_zoo.animals) > number_of_animals_in_zoo: print("New baby is born") command = input("Enter command > ") lst = command.split(" ")