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')
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')
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')
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")
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)
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")
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')
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")
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)
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()), [])
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)
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)
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, {})
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')
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)
def setUp(self): self.jungle = Jungle()
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')
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')
def test_check_current(self): with multipatch() as m: self._pass_current_checks(m) j = Jungle("/t") j.check_current()