diff tests/swig_tests/location_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 81641655bc38
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/swig_tests/location_tests.py	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,148 @@
+#!/usr/bin/env python
+from swig_test_utils import *
+import fifelog
+
+P = fife.ModelCoordinate
+D = fife.ExactModelCoordinate
+
+NEAR_TRESHOLD = 0.001
+def is_near(x, y):
+	return (y-NEAR_TRESHOLD) < x < (y+NEAR_TRESHOLD)
+
+def pt_is_near(p1, p2):
+	return ((p2.x-NEAR_TRESHOLD) < p1.x < (p2.x+NEAR_TRESHOLD)) and \
+	       ((p2.y-NEAR_TRESHOLD) < p1.y < (p2.y+NEAR_TRESHOLD))
+
+class TestLocation(unittest.TestCase):
+	def setUp(self):
+		self.squaregrid1 = fife.SquareGrid()
+		self.squaregrid2 = fife.SquareGrid()
+		self.layer1 = fife.Layer("layer1", None, self.squaregrid1)
+		self.layer2 = fife.Layer("layer2", None, self.squaregrid2)
+		self.loc1 = fife.Location(self.layer1)
+		self.loc2 = fife.Location(self.layer2)
+	
+	def testBasicMapping(self):
+		self.loc1.setLayerCoordinates(P(5,5))
+		pt = self.loc1.getLayerCoordinates()
+		self.assertEqual(pt, P(5,5))
+		pt = self.loc1.getExactLayerCoordinates()
+		self.assertEqual(pt, D(5,5))
+		pt = self.loc1.getMapCoordinates()
+		self.assertEqual(pt, D(5,5))
+		pt = self.loc1.getLayerCoordinates(self.layer2)
+		self.assertEqual(pt, P(5,5))
+		pt = self.loc1.getExactLayerCoordinates(self.layer2)
+		self.assertEqual(pt, D(5,5))
+	
+	def testSquareGridScale(self):
+		self.squaregrid2.setXScale(5)
+		self.squaregrid2.setYScale(5)
+		self.loc1.setLayerCoordinates(P(5,5))
+		pt = self.loc1.getLayerCoordinates(self.layer2)
+		self.assertEqual(pt, P(1,1))
+		pt = self.loc1.getExactLayerCoordinates(self.layer2)
+		self.assertEqual(pt, D(5,5))
+		
+	def testSquareGridRotation(self):
+		self.squaregrid1.setRotation(90)
+		self.loc1.setLayerCoordinates(P(3,3))
+		pt = self.loc1.getMapCoordinates()
+		self.assertEqual(pt, D(-3,3))
+
+	def testSquareGridShifts(self):
+		self.squaregrid1.setXShift(-3)
+		self.squaregrid1.setYShift(-3)
+		self.loc1.setLayerCoordinates(P(3,3))
+		pt = self.loc1.getMapCoordinates()
+		self.assertEqual(pt, D(0,0))
+
+	def testSquareCombinations(self):
+		# correct order in combinations = translate, rotate, scale
+		self.squaregrid1.setXShift(2)
+		self.squaregrid1.setYShift(2)
+		self.squaregrid1.setRotation(90)
+		self.squaregrid1.setXScale(5)
+		self.squaregrid1.setYScale(5)
+		self.loc1.setLayerCoordinates(P(1,1))
+		pt = self.loc1.getMapCoordinates()
+		print pt 
+		self.assert_(is_near(pt.x, -3))
+		self.assert_(is_near(pt.y, 7))
+
+class TestHexGrid(unittest.TestCase):
+	def setUp(self):
+		self.hexgrid1 = fife.HexGrid()
+		self.squaregrid1 = fife.SquareGrid()
+		self.hex_layer1 = fife.Layer("hexlayer", None, self.hexgrid1)
+		self.square_layer1 = fife.Layer("squarelayer", None, self.squaregrid1)
+		self.loc1 = fife.Location(self.hex_layer1)
+		self.loc2 = fife.Location(self.square_layer1)
+		self.engine = getEngine(True)
+		self.log = fifelog.LogManager(self.engine)
+		#self.log.setVisibleModules('hexgrid', 'cellgrid')
+
+	def tearDown(self):
+		del self.engine
+		del self.log
+
+	def testHexGrid0row(self):
+		self.loc1.setMapCoordinates(D(-2,0))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-2,0))
+		
+		self.loc1.setMapCoordinates(D(-1,0))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,0))
+		
+		self.loc1.setMapCoordinates(D(0,0))
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,0))
+
+		self.loc1.setMapCoordinates(D(1,0))
+		self.assert_(self.loc1.getLayerCoordinates() == P(1,0))
+
+		self.loc1.setMapCoordinates(D(2,0))
+		self.assert_(self.loc1.getLayerCoordinates() == P(2,0))
+
+	def testHexGrid1row(self):
+		self.loc1.setMapCoordinates(D(-1.1,1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-2,1))
+		
+		self.loc1.setMapCoordinates(D(-0.5,1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,1))
+		
+		self.loc1.setMapCoordinates(D(-0.1,1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,1))
+		
+		self.loc1.setMapCoordinates(D(0.1,1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,1))
+
+	def testHexGridm1row(self):
+		self.loc1.setMapCoordinates(D(-1.1,-1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-2,-1))
+		
+		self.loc1.setMapCoordinates(D(-0.5,-1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,-1))
+		
+		self.loc1.setMapCoordinates(D(-0.1,-1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,-1))
+		
+		self.loc1.setMapCoordinates(D(0.1,-1))
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,-1))
+
+	def testEdgeHits(self):
+		self.loc1.setMapCoordinates(D(0.5,0.5))
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,1))
+		
+		self.loc1.setMapCoordinates(D(0.1,0.4))
+		#print "______''___" + str(self.loc1.getLayerCoordinates())
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,0))
+		
+		self.loc1.setMapCoordinates(D(0.1,-0.4))
+		self.assert_(self.loc1.getLayerCoordinates() == P(0,0))
+
+		self.loc1.setMapCoordinates(D(-0.5,-0.5))
+		self.assert_(self.loc1.getLayerCoordinates() == P(-1,-1))
+
+TEST_CLASSES = [TestHexGrid, TestLocation]
+
+if __name__ == '__main__':
+    unittest.main()