001 package javancss.test;
002
003 import java.io.File;
004
005 import ccl.util.FileUtil;
006 import ccl.util.Test;
007 import ccl.util.Util;
008 import ccl.xml.XMLUtil;
009
010 import javancss.Javancss;
011 import javancss.XmlFormatter;
012
013 /**
014 * This test class checks that the xml output feature is
015 * working properly.
016 *
017 * @version $Id: XmlFormatterTest.java 121 2009-01-17 22:19:45Z hboutemy $
018 * @author Chr. Clemens Lee
019 */
020 public class XmlFormatterTest extends AbstractTest {
021 /**
022 * Is it at least possible to properly parse generated xml code?
023 */
024 public void testParsing()
025 throws Exception
026 {
027 Javancss pJavancss = new Javancss( getTestFile( 57 ) );
028 pJavancss.setXML( true );
029
030 String sXML = XmlFormatter.printStart()
031 + pJavancss.printPackageNcss()
032 + pJavancss.printObjectNcss()
033 + pJavancss.printFunctionNcss()
034 + pJavancss.printJavaNcss()
035 + XmlFormatter.printEnd();
036
037 try
038 {
039 String sText = XMLUtil.getXML( sXML, getXslFile( "xmltest.xsl" ) );
040 Assert( sText.equals( "79" ), sText );
041 }
042 catch( NoClassDefFoundError error )
043 {
044 Util.print( "skipped: 'xalan.jar' and or 'xerces.jar' library missing." );
045 }
046
047 pJavancss = new Javancss( getTestFile( 117 ) );
048 pJavancss.setXML( true );
049
050 sXML = XmlFormatter.printStart()
051 + pJavancss.printPackageNcss()
052 + pJavancss.printObjectNcss()
053 + pJavancss.printFunctionNcss()
054 + pJavancss.printJavaNcss()
055 + XmlFormatter.printEnd();
056 Assert( Util.isEmpty( sXML ) == false );
057
058 pJavancss = new Javancss( getTestFile( 118 ) );
059 pJavancss.setXML( true );
060
061 sXML = XmlFormatter.printStart()
062 + pJavancss.printPackageNcss()
063 + pJavancss.printObjectNcss()
064 + pJavancss.printFunctionNcss()
065 + pJavancss.printJavaNcss()
066 + XmlFormatter.printEnd();
067 Assert( Util.isEmpty( sXML ) == false );
068 }
069
070 /**
071 * Is the transformed XML output identical to the standard ASCI output?
072 */
073 public void testXML2Text()
074 throws Exception
075 {
076 Javancss pJavancss = new Javancss( getTestFile( 32 ) );
077 pJavancss.setXML( true );
078
079 String sXML = XmlFormatter.printStart()
080 + pJavancss.printPackageNcss()
081 + pJavancss.printObjectNcss()
082 + pJavancss.printFunctionNcss()
083 + pJavancss.printJavaNcss()
084 + XmlFormatter.printEnd();
085
086 try
087 {
088 String sText = XMLUtil.getXML( sXML, getXslFile( "javancss2text.xsl" ) );
089 FileUtil.writeFile( "/tmp/t", sText );
090 String sCompare = FileUtil.readFile( getTestFile( "Output32.txt" ).getAbsolutePath() );
091 Assert( sText.equals( sCompare ), sText );
092 }
093 catch( NoClassDefFoundError error )
094 {
095 Util.print( "skipped: 'xalan.jar' and or 'xerces.jar' library missing." );
096 }
097 }
098
099 public XmlFormatterTest()
100 {
101 super();
102 }
103
104 public XmlFormatterTest( Test pTest_ )
105 {
106 super( pTest_ );
107 }
108
109 private File getXslFile( String filename )
110 {
111 return new File( getTestDir(), ".." + File.separator + "xslt" + File.separator + filename );
112 }
113
114 /**
115 * Test code goes here.
116 */
117 protected void _doIt()
118 throws Exception
119 {
120 testParsing ();
121 testXML2Text();
122 }
123
124 public static void main( String[] asArg_ )
125 {
126 new XmlFormatterTest().main();
127 }
128 }