示例#1
0
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())
示例#2
0
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())
示例#3
0
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)
示例#4
0
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(" ")