treasurehunting2/PySDL2-0.9.5/sdl2/test/sdl2ext_particles_test.py
2017-05-13 11:00:53 +02:00

126 lines
4.1 KiB
Python

import sys
import unittest
from ..ext import particles
class SDL2ExtParticlesTest(unittest.TestCase):
__tags__ = ["sdl2ext"]
def test_Particle(self):
p = particles.Particle(0, 0, 0)
self.assertIsInstance(p, particles.Particle)
self.assertTrue(p.x == p.y == p.life == 0)
p = particles.Particle(1, 2, 3)
self.assertIsInstance(p, particles.Particle)
self.assertEqual(p.x, 1)
self.assertEqual(p.y, 2)
self.assertEqual(p.life, 3)
def test_Particle_xy_position(self):
for x in range(-100, 100):
for y in range(-100, 100):
p = particles.Particle(x, y, 1)
self.assertEqual(p.position, (x, y))
self.assertEqual(p.x, x)
self.assertEqual(p.y, y)
p.position = x + 1, y + 1
self.assertEqual(p.position, (x + 1, y + 1))
self.assertEqual(p.x, x + 1)
self.assertEqual(p.y, y + 1)
p.x = x
self.assertEqual(p.position, (x, y + 1))
self.assertEqual(p.x, x)
self.assertEqual(p.y, y + 1)
p.y = y
self.assertEqual(p.position, (x, y))
self.assertEqual(p.x, x)
self.assertEqual(p.y, y)
def test_Particle_life(self):
for life in range(-100, 100):
p = particles.Particle(0, 0, life)
self.assertEqual(p.life, life)
def test_ParticleEngine(self):
engine = particles.ParticleEngine()
self.assertIsInstance(engine, particles.ParticleEngine)
self.assertTrue(particles.Particle in engine.componenttypes)
self.assertIsNone(engine.createfunc)
self.assertIsNone(engine.deletefunc)
self.assertIsNone(engine.updatefunc)
def test_ParticleEngine_createfunc(self):
def func(w, c):
pass
engine = particles.ParticleEngine()
self.assertIsNone(engine.createfunc)
engine.createfunc = func
self.assertEqual(engine.createfunc, func)
def setf(x, f):
x.createfunc = f
self.assertRaises(TypeError, setf, engine, None)
self.assertRaises(TypeError, setf, engine, "Test")
self.assertRaises(TypeError, setf, engine, 1234)
def test_ParticleEngine_deletefunc(self):
def func(w, c):
pass
engine = particles.ParticleEngine()
self.assertIsNone(engine.deletefunc)
engine.deletefunc = func
self.assertEqual(engine.deletefunc, func)
def setf(x, f):
x.deletefunc = f
self.assertRaises(TypeError, setf, engine, None)
self.assertRaises(TypeError, setf, engine, "Test")
self.assertRaises(TypeError, setf, engine, 1234)
def test_ParticleEngine_updatefunc(self):
def func(w, c):
pass
engine = particles.ParticleEngine()
self.assertIsNone(engine.updatefunc)
engine.updatefunc = func
self.assertEqual(engine.updatefunc, func)
def setf(x, f):
x.updatefunc = f
self.assertRaises(TypeError, setf, engine, None)
self.assertRaises(TypeError, setf, engine, "Test")
self.assertRaises(TypeError, setf, engine, 1234)
def test_ParticleEngine_process(self):
def cfunc(w, c):
self.assertEqual(len(c), w["runs"])
for p in c:
self.assertLessEqual(p.life, 0)
def ufunc(w, c):
self.assertEqual(len(c), 100 - w["runs"])
for p in c:
self.assertGreaterEqual(p.life, 1)
def dfunc(w, c):
self.assertEqual(len(c), w["runs"])
for p in c:
self.assertLessEqual(p.life, 0)
plist = []
for x in range(2, 102):
plist.append(particles.Particle(x, x, x - 1))
engine = particles.ParticleEngine()
engine.createfunc = cfunc
engine.updatefunc = ufunc
engine.deletefunc = dfunc
world = {"runs": 1}
engine.process(world, plist)
world["runs"] = 2
engine.process(world, plist)
if __name__ == '__main__':
sys.exit(unittest.main())