def testValidateXml(self): schema = """<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema> """ xmlString = """<?xml version="1.0" encoding="UTF-8"?> <shiporder orderid="889923"> <orderperson>John Smith</orderperson> </shiporder> """ avg.validateXml(xmlString, schema, "shiporder.xml", "shiporder.xsd") brokenSchema = "ff" + schema self.assertRaises( avg.Exception, lambda: avg.validateXml( xmlString, brokenSchema, "shiporder.xml", "shiporder.xsd")) brokenXml = xmlString + "ff" self.assertRaises( avg.Exception, lambda: avg.validateXml( brokenXml, schema, "shiporder.xml", "shiporder.xsd"))
def testValidateXml(self): schema = """<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> </xs:sequence> <xs:attribute name="orderid" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema> """ xmlString = """<?xml version="1.0" encoding="UTF-8"?> <shiporder orderid="889923"> <orderperson>John Smith</orderperson> </shiporder> """ avg.validateXml(xmlString, schema, "shiporder.xml", "shiporder.xsd") brokenSchema = "ff"+schema self.assertException(lambda: avg.validateXml(xmlString, brokenSchema, "shiporder.xml", "shiporder.xsd")) brokenXml = xmlString+"ff" self.assertException(lambda: avg.validateXml(brokenXml, schema, "shiporder.xml", "shiporder.xsd"))
def __init__(self, skinXmlFName, mediaDir=""): global defaultMediaDir self.__mediaDir = defaultMediaDir if mediaDir == "" else mediaDir schemaFName = defaultMediaDir + "skin.xsd" schemaString = open(schemaFName, "r").read() skinPath = os.path.join(self.__mediaDir, skinXmlFName) xmlString = open(skinPath, "r").read() avg.validateXml(xmlString, schemaString, skinXmlFName, schemaFName) xmlRoot = ET.fromstring(xmlString) self.fonts = {} for fontNode in xmlRoot.findall("fontdef"): fontid, attrs = self.__splitAttrs(fontNode) if "baseid" in attrs: self.fonts[fontid] = copy.copy(self.fonts[attrs["baseid"]]) font = self.fonts[fontid] del attrs["baseid"] for (key, value) in attrs.iteritems(): setattr(font, key, value) else: kwargs = self.__extractArgs(attrs, ("fontsize", "letterspacing", "linespacing")) self.fonts[fontid] = avg.FontStyle(**kwargs) self.textButtonCfg, self.defaultTextButtonCfg = self.__parseElement( xmlRoot, "textbutton", bmpArgNames={"upSrc": "upBmp", "downSrc": "downBmp", "disabledSrc": "disabledBmp"}, fontArgNames=("font", "downFont", "disabledFont")) self.checkBoxCfg, self.defaultCheckBoxCfg = self.__parseElement( xmlRoot, "checkbox", bmpArgNames={"uncheckedUpSrc":"uncheckedUpBmp", "uncheckedDownSrc":"uncheckedDownBmp", "uncheckedDisabledSrc":"uncheckedDisabledBmp", "checkedUpSrc":"checkedUpBmp", "checkedDownSrc":"checkedDownBmp", "checkedDisabledSrc":"checkedDisabledBmp"}, fontArgNames=("font", "downFont", "disabledFont")) self.sliderCfg, self.defaultSliderCfg = self.__initSliders(xmlRoot, "slider") self.scrollBarCfg, self.defaultScrollBarCfg = self.__initSliders( xmlRoot, "scrollbar") self.progressBarCfg, self.defaultProgressBarCfg = self.__initSliders( xmlRoot, "progressbar") self.scrollAreaCfg, self.defaultScrollAreaCfg = self.__parseElement( xmlRoot, "scrollarea", pyArgNames=("friction","borderEndsExtent","margins", "sensitiveScrollBars"), bmpArgNames={"borderSrc":"borderBmp"}) self.mediaControlCfg, self.defaultMediaControlCfg = self.__parseElement( xmlRoot, "mediacontrol", bmpArgNames={"playUpSrc":"playUpBmp", "playDownSrc":"playDownBmp", "playDisabledSrc":"playDisabledBmp", "pauseUpSrc":"pauseUpBmp", "pauseDownSrc":"pauseDownBmp", "pauseDisabledSrc":"pauseDisabledBmp"}, pyArgNames=("timePos", "timeLeftPos", "barPos", "barRight"), fontArgNames=("font"))
def __init__(self, skinXmlFName, mediaDir=""): global defaultMediaDir self.__mediaDir = defaultMediaDir if mediaDir == "" else mediaDir schemaFName = defaultMediaDir + "skin.xsd" schemaString = open(schemaFName, "r").read() skinPath = os.path.join(self.__mediaDir, skinXmlFName) xmlString = open(skinPath, "r").read() avg.validateXml(xmlString, schemaString, skinXmlFName, schemaFName) xmlRoot = ET.fromstring(xmlString) self.fonts = {} for fontNode in xmlRoot.findall("fontdef"): fontid, attrs = self.__splitAttrs(fontNode) if "baseid" in attrs: self.fonts[fontid] = copy.copy(self.fonts[attrs["baseid"]]) font = self.fonts[fontid] del attrs["baseid"] for (key, value) in attrs.iteritems(): setattr(font, key, value) else: kwargs = self.__extractArgs( attrs, ("fontsize", "letterspacing", "linespacing")) self.fonts[fontid] = avg.FontStyle(**kwargs) self.textButtonCfg, self.defaultTextButtonCfg = self.__parseElement( xmlRoot, "textbutton", bmpArgNames={ "upSrc": "upBmp", "downSrc": "downBmp", "disabledSrc": "disabledBmp" }, fontArgNames=("font", "downFont", "disabledFont")) self.checkBoxCfg, self.defaultCheckBoxCfg = self.__parseElement( xmlRoot, "checkbox", bmpArgNames={ "uncheckedUpSrc": "uncheckedUpBmp", "uncheckedDownSrc": "uncheckedDownBmp", "uncheckedDisabledSrc": "uncheckedDisabledBmp", "checkedUpSrc": "checkedUpBmp", "checkedDownSrc": "checkedDownBmp", "checkedDisabledSrc": "checkedDisabledBmp" }, fontArgNames=("font", "downFont", "disabledFont")) self.sliderCfg, self.defaultSliderCfg = self.__initSliders( xmlRoot, "slider") self.scrollBarCfg, self.defaultScrollBarCfg = self.__initSliders( xmlRoot, "scrollbar") self.progressBarCfg, self.defaultProgressBarCfg = self.__initSliders( xmlRoot, "progressbar") self.scrollAreaCfg, self.defaultScrollAreaCfg = self.__parseElement( xmlRoot, "scrollarea", pyArgNames=("friction", "borderEndsExtent", "margins", "sensitiveScrollBars"), bmpArgNames={"borderSrc": "borderBmp"}) self.mediaControlCfg, self.defaultMediaControlCfg = self.__parseElement( xmlRoot, "mediacontrol", bmpArgNames={ "playUpSrc": "playUpBmp", "playDownSrc": "playDownBmp", "playDisabledSrc": "playDisabledBmp", "pauseUpSrc": "pauseUpBmp", "pauseDownSrc": "pauseDownBmp", "pauseDisabledSrc": "pauseDisabledBmp" }, pyArgNames=("timePos", "timeLeftPos", "barPos", "barRight"), fontArgNames=("font"))