예제 #1
0
 def test_oldest(self):
     with multipatch() as m:
         m['os.listdir'].return_value = ['1.0', '2.0', '1.3b1']
         m['os.path.exists'].return_value = True
         m['os.path.isdir'].return_value = True
         j = Jungle("/t")
         self.assertEqual(j.oldest(), '1.0')
예제 #2
0
 def test_upgrade(self):
     with multipatch('os.symlink', 'os.rename') as m:
         m['os.listdir'].return_value = ['1.0', '2.0', '1.0b3']
         self._pass_current_checks(m)
         j = Jungle("/t")
         v = j.upgrade()
         self.assertEqual(v, '2.0')
         m['os.symlink'].assert_called_with('release/2.0', '/t/current.new')
예제 #3
0
 def test_status(self):
     with multipatch() as m:
         self._pass_current_checks(m)
         m['os.listdir'].return_value = ['1.0', '2.0', '1.0b3']
         m['os.readlink'].return_value = 'release/2.0'
         j = Jungle("/t")
         self.assertEqual(j.status(), 'current')
         m['os.readlink'].return_value = 'release/1.0'
         self.assertEqual(j.status(), 'degraded')
예제 #4
0
 def test_initialise(self):
     with multipatch('os.symlink', 'os.rename') as m:
         m['os.listdir'].return_value = ['1.0']
         m['os.path.exists'].side_effect = self._exists("/t/current")
         m['os.path.isdir'].return_value = True
         j = Jungle("/t")
         j.initialise()
         m['os.symlink'].assert_called_with('release/1.0', '/t/current.new')
         m['os.rename'].assert_called_with("/t/current.new", "/t/current")
예제 #5
0
 def test_head(self):
     ldrv = [['1.0', '2.0', 'bin', '1.3b1'],
             ['bin']]
     with multipatch() as m:
         m['os.listdir'].side_effect = lambda x: ldrv.pop(0)
         m['os.path.exists'].return_value = True
         m['os.path.isdir'].return_value = True
         j = Jungle("/t")
         self.assertEqual(j.head(), "2.0")
         self.assertRaises(JungleError, j.head)
예제 #6
0
파일: test_jungle.py 프로젝트: iOks/HWiOks
    def test_jungle_is_iterable(self):
        jungle = Jungle()
        animals = [Predator(power=10, speed=70), Predator(power=5, speed=40)]
        for animal in animals:
            jungle.add_animal(animal)

        try:
            animals_from_jungle = [a for a in jungle]
            self.assertEqual(animals, animals_from_jungle)
        except TypeError:
            self.assertTrue(False, "Jungle is not iterable")
예제 #7
0
 def test_prune_iterations(self):
     versions = ['1.0', '2.0', '1.0b3', '1.1', '1.5']
     def fake_rmtree(pathname):
         versions.remove(os.path.basename(pathname))
     with multipatch() as m:
         self._pass_current_checks(m)
         m['os.listdir'].side_effect = lambda x: versions
         m['os.readlink'].return_value = 'release/2.0'
         m['shutil.rmtree'].side_effect = fake_rmtree
         j = Jungle("/t")
         j.prune_iterations(3)
         self.assertEqual(m['shutil.rmtree'].call_count, 2)
         m['shutil.rmtree'].assert_any_call_with('/t/release/1.0b3')
         m['shutil.rmtree'].assert_any_call_with('/t/release/1.0')
예제 #8
0
 def test_set(self):        
     with multipatch('os.symlink', 'os.rename') as m:
         self._pass_current_checks(m)
         m['os.listdir'].return_value = ['1.0']
         m['os.path.exists'].side_effect = self._exists("/t/current")
         j = Jungle("/t")
         j.initialise()
         m['os.symlink'].assert_called_with('release/1.0', '/t/current.new')
         m['os.rename'].assert_called_with("/t/current.new", "/t/current")
         # now set it to 2.0
         m['os.listdir'].return_value = ['1.0', '2.0']
         m['os.path.exists'].side_effect = self._exists()
         j.set('2.0')
         m['os.symlink'].assert_called_with('release/2.0', '/t/current.new')
         m['os.rename'].assert_called_with("/t/current.new", "/t/current")
예제 #9
0
 def test_age(self):
     def fake_stat(t):
         l = [None]*9
         l[8] = t
         return l
     with multipatch() as m:
         self._pass_current_checks(m)
         m['time.time'].return_value = 10*24*3600
         m['os.stat'].return_value = fake_stat(0)
         j = Jungle("/t")
         self.assertEqual(j.age("foo"), 10)
         m['os.stat'].return_value = fake_stat(9*24*3600)
         self.assertEqual(j.age("foo"), 1)
         m['os.stat'].return_value = fake_stat(9*24*3600+1800)
         self.assertEqual(j.age("foo"), 0)
예제 #10
0
 def test_versions(self):
     ldrv = [['1.0', '2.0', 'bin', '1.3b1'],
             ['bin'],
             []]
     with multipatch() as m:
         m['os.listdir'].side_effect = lambda x: ldrv.pop(0)
         m['os.path.exists'].return_value = True
         m['os.path.isdir'].return_value = True
         j = Jungle("/t")
         # with versions
         self.assertEqual(list(j.versions()),
                          [StrictVersion('1.0'),
                          StrictVersion('1.3b1'),
                          StrictVersion('2.0')])
         # just bin
         self.assertEqual(list(j.versions()), [])
         # empty
         self.assertEqual(list(j.versions()), [])
예제 #11
0
파일: test_jungle.py 프로젝트: iOks/HWiOks
class TestHerbivorous(unittest.TestCase):
    def setUp(self):
        self.jungle = Jungle()

    def tearDown(self) -> None:
        self.jungle.animals.clear()

    def test__should_implement_all_abstract_methods(self):
        error_was_raised = False
        try:
            Herbivorous(100, 100)
        except TypeError:
            error_was_raised = True
        self.assertFalse(error_was_raised)

    def test_herbivorous_should_restore_power_after_eat(self):
        elephant = Herbivorous(100, 70)
        self.jungle.add_animal(elephant)
        elephant.current_power = 50
        elephant.eat(self.jungle)
        self.assertEqual(elephant.current_power, 90)

    def test_current_power_should_not_be_over_max(self):
        elephant = Herbivorous(power=100, speed=70)
        self.jungle.add_animal(elephant)
        elephant.eat(self.jungle)
        self.assertEqual(elephant.current_power, elephant.max_power)

    def test_animal_should_die_if_power_equal_0(self):
        elephant = Herbivorous(power=100, speed=70)
        self.jungle.add_animal(elephant)
        self.assertTrue(self.jungle.animals)
        elephant.current_power = 0
        elephant.eat(self.jungle)
        self.assertFalse(self.jungle.animals)
예제 #12
0
class TestPredator(unittest.TestCase):

    def setUp(self):
        self.jungle = Jungle()

    def tearDown(self) -> None:
        self.jungle.animals.clear()

    def test__should_implement_all_abstract_methods(self):
        error_was_raised = False
        try:
            Predator(100, 100)
        except TypeError:
            error_was_raised = True
        self.assertFalse(error_was_raised)

    def test_animal_should_die_if_power_equal_0(self):
        tiger = Predator(power=100, speed=70)
        self.jungle.add_animal(tiger)
        self.assertTrue(self.jungle.animals)
        tiger.current_power = 0
        tiger.eat(self.jungle)
        self.assertFalse(self.jungle.animals)

    def test_predator_catch_himself(self):
        tiger = Predator(power=100, speed=70)
        self.jungle.add_animal(tiger)

        tiger.eat(self.jungle)
        self.assertEqual(tiger.current_power, 70)

    def test_predator_try_to_hunt_someone_quicker(self):
        tiger = Predator(power=100, speed=70)
        horse = Herbivorous(power=100, speed=100)
        self.jungle.add_animal(horse)

        tiger.eat(self.jungle)
        self.assertEqual(tiger.current_power, 70)
        self.assertEqual(horse.current_power, 70)

    def test_predator_try_to_hunt_someone_stronger(self):
        dog = Predator(power=10, speed=70)
        elephant = Herbivorous(power=100, speed=40)
        self.jungle.add_animal(elephant)

        dog.eat(self.jungle)
        self.assertEqual(dog.current_power, 7)
        self.assertEqual(elephant.current_power, 70)
예제 #13
0
파일: test_jungle.py 프로젝트: iOks/HWiOks
    def test_remove_animal(self):
        jungle = Jungle()
        dog = Predator(power=10, speed=70)

        jungle.add_animal(dog)
        self.assertDictEqual(jungle.animals, {dog.id: dog})

        jungle.remove_animal(dog)
        self.assertDictEqual(jungle.animals, {})
예제 #14
0
    def test_prune_age(self):
        ages = {
            '/t/release/1.0': 10,
            '/t/release/1.0b3': 9,
            '/t/release/1.2': 5,
            '/t/release/2.0': 3
        }
        def fake_stat(pathname):
            l = [None]*9
            l[8] = (10 - ages[pathname])*24*3600
            return l
        
        def setup():
            self._pass_current_checks(m)
            m['os.listdir'].return_value = ['1.0', '2.0', '1.0b3', '1.2']
            m['time.time'].return_value = 10*24*3600
            m['os.stat'].side_effect = fake_stat
            m['os.readlink'].return_value = 'release/2.0'
            
        with multipatch('shutil.rmtree') as m:
            setup()
            j = Jungle("/t")
            j.prune_age(9)
            m['shutil.rmtree'].assert_called_with('/t/release/1.0')

        with multipatch('shutil.rmtree') as m:
            setup()
            j = Jungle("/t")
            j.prune_age(5)
            m['shutil.rmtree'].assert_any_call_with('/t/release/1.0b3')
            m['shutil.rmtree'].assert_any_call_with('/t/release/1.0')

        with multipatch('shutil.rmtree') as m:
            setup()
            j = Jungle("/t")
            j.prune_age(0)
            m['shutil.rmtree'].assert_any_call_with('/t/release/1.0b3')
            m['shutil.rmtree'].assert_any_call_with('/t/release/1.0')
            m['shutil.rmtree'].assert_any_call_with('/t/release/1.2')
예제 #15
0
파일: main.py 프로젝트: benjhatch/Snake
from jungle import Jungle
import pygame as pg
import time

run = True
timeLimit = int(input("Enter snake speed (try 100): "))
keyHit = False

#change me...use wasd for first snake
#rows, cols, size, number of snakes, length of snakes, number of apples, number added on contact with apple
jungle = Jungle()
pg.init()

while run:
    jungle.screen.fill((0, 0, 0))
    for event in pg.event.get():
        if event.type == pg.QUIT:
            run = False
        if event.type == pg.KEYDOWN and event.key in jungle.keys:
            tuple = jungle.keys[event.key]
            snake = jungle.snakes[tuple[0]]
            snake.changeDir(tuple[1])
    jungle.moveSnakes()
    pg.display.update()
    time.sleep(timeLimit / 5000)
예제 #16
0
파일: test_jungle.py 프로젝트: iOks/HWiOks
 def setUp(self):
     self.jungle = Jungle()
예제 #17
0
 def test_delete(self):
     with multipatch('shutil.rmtree') as m:
         self._pass_current_checks(m)
         j = Jungle("/t")
         j.delete("2.0")
         m['shutil.rmtree'].asset_called_with('/t/release/2.0')
예제 #18
0
 def test_current_version(self):
     with multipatch() as m:
         self._pass_current_checks(m)
         m['os.readlink'].return_value = 'release/2.0'
         j = Jungle("/t")
         self.assertEqual(j.current_version(), '2.0')
예제 #19
0
 def test_check_current(self):
     with multipatch() as m:
         self._pass_current_checks(m)
         j = Jungle("/t")
         j.check_current()