예제 #1
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)
예제 #2
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)
예제 #3
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)