summaryrefslogtreecommitdiff
path: root/testxml
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-04-06 19:54:04 -0300
committerJesusaves <cpntb1@ymail.com>2019-04-06 19:54:04 -0300
commita4acf897d0b9087f61d1de51d67a1e89250670dc (patch)
treecd11bc583e9f41431deca3bb5c493cc436e1ed5e /testxml
parent5b7b921b2d240303f32dd7de6834230492db8c7b (diff)
downloadtools-a4acf897d0b9087f61d1de51d67a1e89250670dc.tar.gz
tools-a4acf897d0b9087f61d1de51d67a1e89250670dc.tar.bz2
tools-a4acf897d0b9087f61d1de51d67a1e89250670dc.tar.xz
tools-a4acf897d0b9087f61d1de51d67a1e89250670dc.zip
Add three missing checks to testxml: Total map width, Height Layer and invalid Objects
Diffstat (limited to 'testxml')
-rwxr-xr-xtestxml/testxml.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/testxml/testxml.py b/testxml/testxml.py
index 9a627d7..90f1e62 100755
--- a/testxml/testxml.py
+++ b/testxml/testxml.py
@@ -1384,6 +1384,12 @@ def readAttr(node, attr, dv, msg, iserr):
warnings = warnings + 1
return dv
+def readAttr2(node, attr, dv):
+ try:
+ return node.attributes[attr].value
+ except:
+ return dv
+
def testMap(mapName, file, path):
global warnings, errors
@@ -1425,6 +1431,13 @@ def testMap(mapName, file, path):
showMsgFile(file, "empty map name property", True)
continue
+ # Total minimum required width
+ if mapWidth < 60:
+ name1=file.find("maps/test")
+ name2=file.find("maps/000-1")
+ if not name1 and not name2:
+ showMsgFile(file, "total map width to small: " + str(mapWidth), False)
+
tilesMap = dict()
for tileset0 in dom.getElementsByTagName("tileset"):
@@ -1562,6 +1575,7 @@ def testMap(mapName, file, path):
testTiles(mapName, file, tilesMap)
layers = dom.getElementsByTagName("layer")
+ objects = dom.getElementsByTagName("object")
if layers == None or len(layers) == 0:
showMsgFile(file, "map dont have layers", True)
return
@@ -1571,11 +1585,14 @@ def testMap(mapName, file, path):
lowLayers = []
overLayers = []
beforeFringe = True
+ haveHeight = False
for layer in layers:
name = readAttr(layer, "name", None, "layer dont have name", True)
if name == None:
continue
+ if name.lower() == "height" or name.lower() == "heights":
+ haveHeight=True
obj = Layer()
obj.name = name
if name.lower() == "fringe":
@@ -1631,6 +1648,9 @@ def testMap(mapName, file, path):
if (silent == False or file.find("maps/test") != 0) and herc == False:
showMsgFile(file, "missing over layers", False)
+ if not haveHeight:
+ showMsgFile(file, "missing height layer", False)
+
if fringe != None:
lowLayers.append(fringe)
warn1 = None
@@ -1654,6 +1674,32 @@ def testMap(mapName, file, path):
if err1 != None and len(err1) > 0:
showLayerErrors(file, err1, "empty tile in all layers", True)
+ for objx in objects:
+ x = readAttr(objx, "x", 0, "object in invalid X position", False)
+ y = readAttr(objx, "y", 0, "object in invalid Y position", False)
+ w = readAttr2(objx, "width", 0)
+ h = readAttr2(objx, "height", 0)
+ try:
+ fs=False
+ if (float(x) != int(x)):
+ showMsgFile(file, "Invalid object X pos - must be integer", False)
+ fs=1
+ if (float(y) != int(y)):
+ showMsgFile(file, "Invalid object Y pos - must be integer", False)
+ fs=1
+ if (float(w) != int(w)):
+ showMsgFile(file, "Invalid object Width - must be integer", False)
+ fs=1
+ if (float(h) != int(h)):
+ showMsgFile(file, "Invalid object Height - must be integer", False)
+ fs=1
+ if fs:
+ id1=readAttr(objx, "id", "?", "invalid object ID", False)
+ name1=readAttr(objx, "name", "?", "invalid object name", False)
+ type1=readAttr(objx, "type", "?", "invalid object type", False)
+ print("Broken object: id %s name %s (%s,%s,%s,%s) type %s", id1, name1, x, y, w, h, type1);
+ except:
+ showMsgFile(file, "Broken object x/y/h/w data detected", True)
def testOverSizedTiles(layer, tiles, file):
global warnings, errors