0

Fixed/added some config parsing tests

This commit is contained in:
Andrew Chin
2012-01-02 01:10:43 -05:00
parent a1dc392526
commit c14cd1a66f
5 changed files with 39 additions and 17 deletions

View File

@@ -253,20 +253,19 @@ class MultiWorldParser(object):
for key in settingsDefinition.render:
option = settingsDefinition.render[key]
if option.has_key("default"):
self.defaults[key] = option.get("default")
self.defaults[key] = option["default"]
self.defaults.update(glob)
import pprint
pprint.pprint(glob, indent=2)
def validate(self):
for worldname in self.render:
world = self.render[worldname]
world = dict()
world.update(self.defaults)
world.update(self.render[worldname])
for key in world:
if key not in settingsDefinition.render:
@@ -278,8 +277,9 @@ class MultiWorldParser(object):
val = definition['validator'](world[key])
world[key] = val
except Exception as e:
print "Error: %r" % e
next
#print "Error validating %s: %r" % (key, e)
raise e
self.render[worldname] = world

View File

@@ -62,15 +62,22 @@ def validateBGColor(color):
"""BG color must be an HTML color, with an option leading # (hash symbol)
returns an (r,b,g) 3-tuple
"""
if color[0] != "#":
color = "#%s" % color
if len(color) != 7:
raise ValidationException("%r is not a valid color. Expected HTML color syntax (i.e. #RRGGBB)" % color)
r = int(color[1:3], 16)
g = int(color[3:5], 16)
b = int(color[5:7], 16)
return (r,g,b,0)
if type(color) == str:
if color[0] != "#":
color = "#" + color
if len(color) != 7:
raise ValidationException("%r is not a valid color. Expected HTML color syntax (i.e. #RRGGBB)" % color)
try:
r = int(color[1:3], 16)
g = int(color[3:5], 16)
b = int(color[5:7], 16)
return (r,g,b,0)
except ValueError:
raise ValidationException("%r is not a valid color. Expected HTML color syntax (i.e. #RRGGBB)" % color)
elif type(color) == tuple:
if len(color) != 4:
raise ValidationException("%r is not a valid color. Expected a 4-tuple" % (color,))
return color
def validateOptImg(opt):

View File

@@ -7,5 +7,6 @@ render["world"] = {
}
render["otherworld"] = {
"rendermode": "foo"
"rendermode": "foo",
"bgcolor": "#ffffff"
}

View File

@@ -0,0 +1,6 @@
bgcolor="#000000"
render["world"] = {
"worldpath": "test/data/settings/test_world",
"bgcolor":"ffff"
}

View File

@@ -15,6 +15,7 @@ class SettingsTest(unittest.TestCase):
things = s.get_render_things()
# no exceptions so far. that's good
self.assertEquals(things['world']['bgcolor'], (26,26,26,0))
self.assertEquals(things['otherworld']['bgcolor'], (255,255,255,0))
def test_rendermode_validation(self):
s = configParser.MultiWorldParser("test/data/settings/settings_test_rendermode.py")
@@ -22,5 +23,12 @@ class SettingsTest(unittest.TestCase):
self.assertRaises(ValidationException,s.validate)
def test_bgcolor_validation(self):
s = configParser.MultiWorldParser("test/data/settings/settings_test_bgcolor.py")
s.parse()
self.assertRaises(ValidationException, s.validate)
if __name__ == "__main__":
unittest.main()