import os, sys, tempfile
from Ft.Lib.CommandLine import CommandLineTestUtil
from Ft.Xml.Lib import TreeCompare
source_1 = """<?xml version = "1.0"?>
<ADDRBOOK>
<ENTRY ID="pa">
<NAME>Pieter Aaron</NAME>
<ADDRESS>404 Error Way</ADDRESS>
<PHONENUM DESC="Work">404-555-1234</PHONENUM>
<PHONENUM DESC="Fax">404-555-4321</PHONENUM>
<PHONENUM DESC="Pager">404-555-5555</PHONENUM>
<EMAIL>pieter.aaron@inter.net</EMAIL>
</ENTRY>
<ENTRY ID="en">
<NAME>Emeka Ndubuisi</NAME>
<ADDRESS>42 Spam Blvd</ADDRESS>
<PHONENUM DESC="Work">767-555-7676</PHONENUM>
<PHONENUM DESC="Fax">767-555-7642</PHONENUM>
<PHONENUM DESC="Pager">800-SKY-PAGEx767676</PHONENUM>
<EMAIL>endubuisi@spamtron.com</EMAIL>
</ENTRY>
<ENTRY ID="vz">
<NAME>Vasia Zhugenev</NAME>
<ADDRESS>2000 Disaster Plaza</ADDRESS>
<PHONENUM DESC="Work">000-987-6543</PHONENUM>
<PHONENUM DESC="Cell">000-000-0000</PHONENUM>
<EMAIL>vxz@magog.ru</EMAIL>
</ENTRY>
</ADDRBOOK>"""
sheet_1 = """<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:strip-space elements='*'/>
<xsl:param name='title' select='"Untitled"'/>
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE><xsl:value-of select='$title'/></TITLE>
</HEAD>
<BODY>
<TABLE><xsl:apply-templates/></TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="ENTRY">
<xsl:element name='TR'>
<xsl:apply-templates select='NAME'/>
</xsl:element>
<xsl:if test='not(position()=last())'><HR/></xsl:if>
</xsl:template>
<xsl:template match="NAME">
<xsl:element name='TD'>
<xsl:attribute name='ALIGN'>CENTER</xsl:attribute>
<B><xsl:apply-templates/></B>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
"""
expected_1 = """<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Untitled</TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD ALIGN="CENTER"><B>Pieter Aaron</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Emeka Ndubuisi</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Vasia Zhugenev</B></TD>
</TR>
</TABLE>
</BODY>
</HTML>"""
expected_2 = """<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Untitled</TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD ALIGN="CENTER"><B>Pieter Aaron</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Emeka Ndubuisi</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Vasia Zhugenev</B></TD>
</TR>
</TABLE>
</BODY>
</HTML>"""
expected_3 = """<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>Address Book</TITLE>
</HEAD>
<BODY>
<TABLE>
<TR>
<TD ALIGN="CENTER"><B>Pieter Aaron</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Emeka Ndubuisi</B></TD>
</TR>
<HR>
<TR>
<TD ALIGN="CENTER"><B>Vasia Zhugenev</B></TD>
</TR>
</TABLE>
</BODY>
</HTML>"""
def Test(tester):
xml_file = tempfile.mktemp()
xslt_file = tempfile.mktemp()
output_file = tempfile.mktemp()
f = open(xml_file, 'w')
f.write(source_1)
f.close()
f = open(xslt_file, 'w')
f.write(sheet_1)
f.close()
tr1 = CommandLineTestUtil.TestRun('Simple Transform',
{},
[xml_file, xslt_file],
expectedOut=expected_1,
compareFunc=TreeCompare.TreeCompare)
tr2 = CommandLineTestUtil.TestRun('Transform to output file',
{'outfile' : output_file},
[xml_file, xslt_file],
outFile=output_file,
expectedOut=expected_2,
compareFunc=TreeCompare.TreeCompare)
tr3 = CommandLineTestUtil.TestRun('Transform with parameters',
{'define' : 'title=Address Book'},
[xml_file, xslt_file],
expectedOut=expected_3,
compareFunc=TreeCompare.TreeCompare)
t = CommandLineTestUtil.Test('4xslt',[tr1,tr2,tr3])
t.test(tester)
os.unlink(xml_file)
os.unlink(xslt_file)
return
|