Blame tests/p_libxml2-python/1-test-XmlTextReader.sh

Dries Verachtert a359f0
#!/bin/bash
Dries Verachtert a359f0
Dries Verachtert a359f0
# Author: Dries Verachtert <dries.verachtert@dries.eu>
Dries Verachtert a359f0
Dries Verachtert a359f0
t_Log "Running $0 - test XmlTextReader of libxml2-python"
Dries Verachtert a359f0
Dries Verachtert a359f0
cat << 'EOF' | python - | grep -q 'test succeeded'
Dries Verachtert a359f0
import libxml2
Dries Verachtert a359f0
import sys
Dries Verachtert a359f0
import StringIO
Dries Verachtert a359f0
Dries Verachtert a359f0
# Load a small xml structure
Dries Verachtert a359f0
xmlStr = StringIO.StringIO("""
Dries Verachtert a359f0
<tests><test name="XmlTextReader"><key1>val1</key1><key2>val2</key2><key3 /></test></tests>""")
Dries Verachtert a359f0
xmlBuf = libxml2.inputBuffer(xmlStr)
Dries Verachtert a359f0
xmlReader = xmlBuf.newTextReader("reader")
Dries Verachtert a359f0
Dries Verachtert a359f0
def checkRead(reader, name, isEmptyElementVal, nodeTypeVal, hasAttributesVal):
Dries Verachtert a359f0
	retval = reader.Read()
Dries Verachtert a359f0
	if retval != 1:
Dries Verachtert a359f0
		print("Error: bad retval when reading " + name)
Dries Verachtert a359f0
		sys.exit(1)
Dries Verachtert a359f0
	if reader.Name() != name:
Dries Verachtert a359f0
		print("Error: expected=" + name + ", actual=" + reader.Name())
Dries Verachtert a359f0
		sys.exit(1)
Dries Verachtert a359f0
	if reader.NodeType() != nodeTypeVal:
Dries Verachtert a359f0
		print("Error: node " + name + " has wrong nodetype: " + str(reader.NodeType()))
Dries Verachtert a359f0
		sys.exit(1)
Dries Verachtert a359f0
	if reader.IsEmptyElement() != isEmptyElementVal:
Dries Verachtert a359f0
		print("Error: node " + name + " has wrong isEmptyElement: " + str(reader.IsEmptyElement()))
Dries Verachtert a359f0
		sys.exit(1)
Dries Verachtert a359f0
	if reader.HasAttributes() != hasAttributesVal:
Dries Verachtert a359f0
		print("Error: node " + name + " has wrong hasAttributes: " + str(reader.HasAttributes()))
Dries Verachtert a359f0
		sys.exit(1)
Dries Verachtert a359f0
Dries Verachtert a359f0
# Test one by one each part of the loaded xml structure
Dries Verachtert a359f0
checkRead(xmlReader, "tests", 0, 1, 0) # 1 = start of element
Dries Verachtert a359f0
checkRead(xmlReader, "test", 0, 1, 1)  
Dries Verachtert a359f0
checkRead(xmlReader, "key1", 0, 1, 0)
Dries Verachtert a359f0
checkRead(xmlReader, "#text", 0, 3, 0) # 3 = text node
Dries Verachtert a359f0
checkRead(xmlReader, "key1", 0, 15, 0) # 15 = close tag
Dries Verachtert a359f0
checkRead(xmlReader, "key2", 0, 1, 0)
Dries Verachtert a359f0
checkRead(xmlReader, "#text", 0, 3, 0)
Dries Verachtert a359f0
checkRead(xmlReader, "key2", 0, 15, 0)
Dries Verachtert a359f0
checkRead(xmlReader, "key3", 1, 1, 0)
Dries Verachtert a359f0
checkRead(xmlReader, "test", 0, 15, 1)
Dries Verachtert a359f0
checkRead(xmlReader, "tests", 0, 15, 0)
Dries Verachtert a359f0
print "test succeeded"
Dries Verachtert a359f0
EOF