def testProvidedEncoding(self): loggedEvents=[] self._assertEqualUnicode(xmlEncoding.decode(ctAX, 'UTF-8', '<x/>', loggedEvents), u'<x/>') self.assertEqual(loggedEvents, []) loggedEvents=[] self._assertEqualUnicode(xmlEncoding.decode(ctAX, 'UTF-8', '<?xml version="1.0" encoding="utf-8"?><x/>', loggedEvents), u'<?xml version="1.0" encoding="utf-8"?><x/>') self.assertEquals(loggedEvents, [])
def testProvidedEncoding(self): loggedEvents=[] (encoding, decoded) = xmlEncoding.decode(ctAX, 'UTF-8', '<x/>', loggedEvents) self.assertEquals('UTF-8', encoding) self._assertEqualUnicode(decoded, u'<x/>') self.assertEqual(loggedEvents, []) loggedEvents=[] (encoding, decoded) = xmlEncoding.decode(ctAX, 'UTF-8', '<?xml version="1.0" encoding="utf-8"?><x/>', loggedEvents) self.assertEquals('UTF-8', encoding) self._assertEqualUnicode(decoded, u'<?xml version="1.0" encoding="utf-8"?><x/>') self.assertEquals(loggedEvents, [])
def testSupplyUnknownEncoding(self): loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, 'X-FAKE', '<x/>', loggedEvents)[-1], None) self.assertEquals(len(loggedEvents), 1) self.assertEquals(loggedEvents[0].__class__, UnknownEncoding, 'Must fail if an unknown encoding is used')
def testNoDeclarationOrBOM(self): loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, None, '<x/>', loggedEvents)[-1], None) self.assertEquals(len(loggedEvents), 1) self.assertEquals(loggedEvents[0].__class__, MissingEncoding, "Must warn if there's no clue as to encoding")
def testRemovedBOM(self): """Make sure the initial BOM signature is not in the decoded string.""" loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, 'UTF-16', '\xff\xfe\x3c\x00\x78\x00\x2f\x00\x3e\x00', loggedEvents)[-1], u'<x/>') self.assertEquals(loggedEvents, [])
def testDecodeBadUTF8(self): """Ensure bad UTF-8 is flagged as such, but still decoded.""" loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, 'utf-8', '<x>\xa3</x>', loggedEvents)[-1], u'<x>\ufffd</x>') self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, UnicodeError)
def testDeclareUnknownEncoding(self): loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, None, '<?xml version="1.0" encoding="X-FAKE"?><x/>', loggedEvents)[-1], None) self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, UnknownEncoding)
def testJustDeclaration(self): loggedEvents = [] (encoding, decoded) = xmlEncoding.decode( ctAX, None, '<?xml version="1.0" encoding="utf-8"?><x/>', loggedEvents) self.assertEquals(encoding, 'utf-8') self._assertEqualUnicode( decoded, u'<?xml version="1.0" encoding="utf-8"?><x/>') self.assertEquals(loggedEvents, [])
def testWarnMismatch(self): loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, 'US-ASCII', '<?xml version="1.0" encoding="UTF-8"?><x/>', loggedEvents)[-1], u'<?xml version="1.0" encoding="UTF-8"?><x/>') self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, EncodingMismatch)
def testDecodeBadUTF8(self): """Ensure bad UTF-8 is flagged as such, but still decoded.""" loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, 'utf-8', '<x>\xa3</x>', loggedEvents)[-1], u'<x>\ufffd</x>') self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, UnicodeError)
def testRemovedBOM(self): """Make sure the initial BOM signature is not in the decoded string.""" loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, 'UTF-16', '\xff\xfe\x3c\x00\x78\x00\x2f\x00\x3e\x00', loggedEvents)[-1], u'<x/>') self.assertEquals(loggedEvents, [])
def testWarnMismatch(self): loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, 'US-ASCII', '<?xml version="1.0" encoding="UTF-8"?><x/>', loggedEvents)[-1], u'<?xml version="1.0" encoding="UTF-8"?><x/>') self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, EncodingMismatch)
def testDecodeUTF8(self): loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, 'utf-8', '<x>\xc2\xa3</x>', loggedEvents)[-1], u'<x>\u00a3</x>') self.assertEquals(loggedEvents, [])
def testDeclareUnknownEncoding(self): loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, None, '<?xml version="1.0" encoding="X-FAKE"?><x/>', loggedEvents)[-1], None) self.assert_(loggedEvents) self.assertEquals(loggedEvents[-1].__class__, UnknownEncoding)
def testSupplyUnknownEncoding(self): loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, 'X-FAKE', '<x/>', loggedEvents)[-1], None) self.assertEquals(len(loggedEvents), 1) self.assertEquals(loggedEvents[0].__class__, UnknownEncoding, 'Must fail if an unknown encoding is used')
def testJustDeclaration(self): loggedEvents=[] (encoding, decoded) = xmlEncoding.decode(ctAX, None, '<?xml version="1.0" encoding="utf-8"?><x/>', loggedEvents) self.assertEquals(encoding, 'utf-8') self._assertEqualUnicode(decoded, u'<?xml version="1.0" encoding="utf-8"?><x/>') self.assertEquals(loggedEvents, [])
def testNoDeclarationOrBOM(self): loggedEvents=[] self.assertEquals(xmlEncoding.decode(ctAX, None, '<x/>', loggedEvents)[-1], None) self.assertEquals(len(loggedEvents), 1) self.assertEquals(loggedEvents[0].__class__, MissingEncoding, "Must warn if there's no clue as to encoding")
def testDecodeUTF8(self): loggedEvents = [] self.assertEquals( xmlEncoding.decode(ctAX, 'utf-8', '<x>\xc2\xa3</x>', loggedEvents)[-1], u'<x>\u00a3</x>') self.assertEquals(loggedEvents, [])