Mercurial > fife-parpg
diff tests/swig_tests/model_tests.py @ 0:4a0efb7baf70
* Datasets becomes the new trunk and retires after that :-)
author | mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sun, 29 Jun 2008 18:44:17 +0000 |
parents | |
children | bf7f838e6684 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/swig_tests/model_tests.py Sun Jun 29 18:44:17 2008 +0000 @@ -0,0 +1,302 @@ +#!/usr/bin/env python +from swig_test_utils import * +import math + +class TestModel(unittest.TestCase): + + def setUp(self): + self.model = fife.Model() + + def testModel(self): + map1 = self.model.createMap("map001") + map2 = self.model.createMap("map002") + + query = self.model.getMap("map001") + self.assertEqual(map1.getId(), query.getId()) + + query = self.model.getMap("map002") + self.assertEqual(map2.getId(), query.getId()) + + query = self.model.getMaps() + self.assertEqual(len(query), 2) + + self.assertEqual(len(query), self.model.getNumMaps()) + + self.model.deleteMap(map2) + + query = self.model.getMaps() + self.assertEqual(len(query), 1) + + self.model.createMap("map003") + self.model.createMap("map004") + + query = self.model.getMaps() + self.assertEqual(len(query), 3) + self.assertEqual(self.model.getNumMaps(), 3) + + self.model.deleteMaps() + query = self.model.getMaps() + self.assertEqual(len(query), 0) + self.assertEqual(self.model.getNumMaps(), 0) + + def testMaps(self): + map = self.model.createMap("map005") + + self.assertEqual(map.getNumLayers(), 0) + + grid = fife.SquareGrid() + + layer1 = map.createLayer("layer001", grid) + layer2 = map.createLayer("layer002", grid) + + self.assertEqual(layer1.getId(), "layer001") + self.assertEqual(layer2.getId(), "layer002") + + self.assertEqual(len(map.getLayers()), 2) + + self.assertEqual(map.getNumLayers(), 2) + map.deleteLayer(layer2) + self.assertEqual(map.getNumLayers(), 1) + map.deleteLayers() + self.assertEqual(map.getNumLayers(), 0) + + def testLayers(self): + map = self.model.createMap("map006") + + grid = fife.SquareGrid() + obj1 = self.model.createObject("object001","test_nspace") + obj2 = self.model.createObject("object002","test_nspace") + + self.assertEqual(obj1.getId(), "object001") + self.assertEqual(obj2.getId(), "object002") + + layer = map.createLayer("layer003", grid) + + self.assertEqual(layer.hasInstances(), 0) + self.assertEqual(layer.getMap().getId(), map.getId()) + + inst = layer.createInstance(obj1, fife.ModelCoordinate(4,4)) + layer.createInstance(obj2, fife.ModelCoordinate(5,6)) + layer.createInstance(obj2, fife.ModelCoordinate(5,4)) + + #query = layer.getInstances("Name", "Goon") + #self.assertEqual(len(query), 2) + self.assertEqual(len(layer.getInstances()), 3) + + #self.assertEqual(query[0].get("Name"), "Goon") + #p1 = fife.ModelCoordinate(4,4) + #print p1.x, p1.y + #p2 = inst.getLocation().getLayerCoordinates() + #print p2.x, p2.y + #self.assertEqual(inst.getLocation().getLayerCoordinates(), fife.ModelCoordinate(4,4)) + +class TestActionAngles(unittest.TestCase): + def setUp(self): + self.runaction = fife.Action("action001") + fife.ActionVisual.create(self.runaction) + self.runaction.get2dGfxVisual().addAnimation(90, 1) + self.runaction.get2dGfxVisual().addAnimation(0, 0) + self.runaction.get2dGfxVisual().addAnimation(270, 3) + self.runaction.get2dGfxVisual().addAnimation(180, 2) + self.walkaction = fife.Action("action002") + fife.ActionVisual.create(self.walkaction) + self.walkaction.get2dGfxVisual().addAnimation(70, 1) + self.walkaction.get2dGfxVisual().addAnimation(200, 2) + self.walkaction.get2dGfxVisual().addAnimation(320, 3) + + def testRunAngle89(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(89), 1) + + def testRunAngle90(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(90), 1) + + def testRunAngle91(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(91), 1) + + def testRunAngle135(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(135), 2) + + def testRunAngle134(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(134), 1) + + def testRunAngle136(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(136), 2) + + def testRunAngle0(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(0), 0) + + def testRunAngle40(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(40), 0) + + def testRunAngle45(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(45), 1) + + def testRunAngle270(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(270), 3) + + def testRunAngle269(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(269), 3) + + def testRunAngle271(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(271), 3) + + def testRunAngle314(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(314), 3) + + def testRunAngle359(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(359), 0) + + def testRunAngle400(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(400), 0) + + def testRunAngle451(self): + self.assertEqual(self.runaction.get2dGfxVisual().getAnimationIndexByAngle(451), 1) + + def testWalkAngle0(self): + self.assertEqual(self.walkaction.get2dGfxVisual().getAnimationIndexByAngle(0), 3) + + def testWalkAngle60(self): + self.assertEqual(self.walkaction.get2dGfxVisual().getAnimationIndexByAngle(60), 1) + + def testWalkAngle199(self): + self.assertEqual(self.walkaction.get2dGfxVisual().getAnimationIndexByAngle(199), 2) + +class InstanceListener(fife.InstanceActionListener): + def __init__(self): + fife.InstanceActionListener.__init__(self) + self.finished = False + + def OnActionFinished(self, instance, action): + self.finishedInstance = instance + self.finishedAction = action + self.finished = True + +class ActivityTests(unittest.TestCase): + def setUp(self): + grid = fife.HexGrid() + map = fife.Map("map007") + self.layer = map.addLayer("layer010", grid) + + self.target = fife.Location(self.layer) + self.target.setPosition(fife.ModelCoordinate(10,10)) + + self.obj = fife.Object("object010", '') + self.pather = fife.LinearPather() + self.obj.setPather(self.pather) + self.inst = self.layer.addInstance(self.obj, fife.ModelCoordinate(4,4)) + self.action = self.obj.addAction('action010', 'run') + self.action.addAnimation(0, 1) + self.action.thisown = 0 + self.listener = InstanceListener() + self.inst.addActionListener(self.listener) + + def testMovingAction(self): + self.inst.move('run', self.target, 0.5) + for i in xrange(30): + self.inst.update() + self.assert_(self.listener.finished) + + def testNonMovingAction(self): + self.inst.move('run', fife.ModelCoordinate(0,0)) + self.inst.update() + self.assert_(self.listener.finished) + +class GridTests(unittest.TestCase): + def _testgrid(self, grid, curpos, access, cost): + for k, v in access.items(): + print k, v + self.assertEqual(grid.isAccessible(fife.ModelCoordinate(*curpos), fife.ModelCoordinate(*k)), v) + for k, v in cost.items(): + self.assertEqual(int(10000 * grid.getAdjacentCost(fife.ModelCoordinate(*curpos), fife.ModelCoordinate(*k))), + int(10000 * v)) + + curpos = fife.ModelCoordinate(*curpos) + accessiblepts = fife.ModelCoordinateVector() + grid.getAccessibleCoordinates(curpos, accessiblepts) + costpts = [fife.ModelCoordinate(*pt) for pt in cost.keys()] + for pt in costpts: + self.assert_(pt in accessiblepts) + for pt in accessiblepts: + self.assert_(pt in costpts) + + + def testHexGrid(self): + grid = fife.HexGrid() + curpos = (1,1) + access = { + (0,0): False, + (0,1): True, + (0,2): False, + (1,0): True, + (1,1): True, + (1,2): True, + (2,0): True, + (2,1): True, + (2,2): True, + } + cost = { + (0,1): 1, + (1,0): 1, + (1,1): 0, + (1,2): 1, + (2,0): 1, + (2,1): 1, + (2,2): 1, + } + self._testgrid(grid, curpos, access, cost) + + def testSquareGrid(self): + grid = fife.SquareGrid() + curpos = (1,1) + access = { + (0,0): False, + (0,1): True, + (0,2): False, + (1,0): True, + (1,1): True, + (1,2): True, + (2,0): False, + (2,1): True, + (2,2): False, + } + cost = { + (0,1): 1, + (1,0): 1, + (1,1): 0, + (1,2): 1, + (2,1): 1, + } + self._testgrid(grid, curpos, access, cost) + + def testDiagSquareGrid(self): + grid = fife.SquareGrid(True) + curpos = (1,1) + access = { + (0,0): True, + (0,1): True, + (0,2): True, + (1,0): True, + (1,1): True, + (1,2): True, + (2,0): True, + (2,1): True, + (2,2): True, + } + cost = { + (0,0): math.sqrt(2), + (0,1): 1, + (0,2): math.sqrt(2), + (1,0): 1, + (1,1): 0, + (1,2): 1, + (2,0): math.sqrt(2), + (2,1): 1, + (2,2): math.sqrt(2), + } + self._testgrid(grid, curpos, access, cost) + + +TEST_CLASSES = [TestModel, TestActionAngles, GridTests] #ActivityTests + +if __name__ == '__main__': + unittest.main()