summaryrefslogtreecommitdiff
path: root/testxml/testxml.py
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-01-19 04:31:17 +0200
committerAndrei Karas <akaras@inbox.ru>2011-01-19 04:31:17 +0200
commitb4c3ca2f6d1b1546390019d2eedd0d0e9a7400cb (patch)
tree50b31d8a22c0337d520d43a40676cf671683db57 /testxml/testxml.py
parent88ee2065234648712636c85470869a641eaef74c (diff)
downloadtools-b4c3ca2f6d1b1546390019d2eedd0d0e9a7400cb.tar.gz
tools-b4c3ca2f6d1b1546390019d2eedd0d0e9a7400cb.tar.bz2
tools-b4c3ca2f6d1b1546390019d2eedd0d0e9a7400cb.tar.xz
tools-b4c3ca2f6d1b1546390019d2eedd0d0e9a7400cb.zip
Add to testxml basic monsters.xml validation.
Now need packet python-pyvorbis.
Diffstat (limited to 'testxml/testxml.py')
-rwxr-xr-xtestxml/testxml.py59
1 files changed, 58 insertions, 1 deletions
diff --git a/testxml/testxml.py b/testxml/testxml.py
index e33d878..b0c387f 100755
--- a/testxml/testxml.py
+++ b/testxml/testxml.py
@@ -4,6 +4,7 @@
import os
import re
import xml
+import ogg.vorbis
from xml.dom import minidom
from PIL import Image
@@ -13,6 +14,7 @@ dyesplit2 = re.compile(",")
parentDir = "../../clientdata"
iconsDir = "graphics/items/"
spritesDir = "graphics/sprites/"
+sfxDir = "sfx/"
errors = 0
warnings = 0
errDict = set()
@@ -121,6 +123,8 @@ def loadPaths():
iconsDir = node.attributes["value"].value
elif node.attributes["name"].value == "sprites":
spritesDir = node.attributes["value"].value
+ elif node.attributes["name"].value == "sfx":
+ sfxDir = node.attributes["value"].value
except:
print "warn: paths.xml not found"
warnings = warnings + 1
@@ -502,6 +506,17 @@ def testImageFile(file, fullPath, sz, iserr):
return sizes
+def testSound(file):
+ fullPath = parentDir + "/" + sfxDir + file
+ if not os.path.isfile(fullPath) or os.path.exists(fullPath) == False:
+ showMsgFile(file, "sound file not found", True)
+
+ try:
+ snd = ogg.vorbis.VorbisFile(fullPath)
+ except ogg.vorbis.VorbisError as e:
+ showMsgFile(file, "sound file incorrect error: " + str(e), True)
+
+
def testItems(fileName, imgDir):
global warnings, errors, safeDye
@@ -586,9 +601,51 @@ def testItems(fileName, imgDir):
print "warn: unknown type '" + type + "' for id=" + id
warnings = warnings + 1
+def testMonsters(fileName):
+ global warnings, errors
+ print "monsters.xml"
+ dom = minidom.parse(parentDir + fileName)
+ idset = set()
+ for node in dom.getElementsByTagName("monster"):
+ try:
+ id = node.attributes["id"].value
+ except:
+ print "error: no id for monster"
+ errors = errors + 1
+ continue
+
+ if id in idset:
+ print "duplicate id=" + id
+ else:
+ idset.add(id)
+
+ try:
+ name = node.attributes["name"].value
+ except:
+ print "error: no name for id=" + id
+ errors = errors + 1
+ name = ""
+
+ testSprites(id, node, True)
+ for sound in node.getElementsByTagName("sound"):
+ try:
+ event = sound.attributes["event"].value
+ except:
+ print "error: no sound event name in id=" + id
+ errors = errors + 1
+
+ if event != "hit" and event != "miss" and event != "hurt" and event != "die":
+ print "error: incorrect sound event name " + event + " in id=" + id
+ errors = errors + 1
+
+ testSound(sound.childNodes[0].data)
+
+
+
showHeader()
print "Checking xml file syntax"
enumDirs(parentDir)
loadPaths()
-testItems("/items.xml", iconsDir)
+#testItems("/items.xml", iconsDir)
+testMonsters("/monsters.xml")
showFooter()