diff options
author | Jesusaves <cpntb1@ymail.com> | 2019-04-06 19:54:04 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2019-04-06 19:54:04 -0300 |
commit | a4acf897d0b9087f61d1de51d67a1e89250670dc (patch) | |
tree | cd11bc583e9f41431deca3bb5c493cc436e1ed5e /testxml | |
parent | 5b7b921b2d240303f32dd7de6834230492db8c7b (diff) | |
download | tools-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-x | testxml/testxml.py | 46 |
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 |