/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package tests;
import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import org.netbeans.junit.*;
import org.netbeans.modules.schema2beans.*;
import org.netbeans.modules.schema2beansdev.*;
import org.netbeans.modules.schema2beansdev.beangraph.*;
import org.openide.util.Utilities;
public class MainTest
extends NbTestCase {
public MainTest(java.lang.String testName) {
super (testName);
}
// Disabled as schema/DTD/XML was not donated
// public void testPurchaseOrder() throws IOException, Schema2BeansException, InterruptedException {
// generalTest("TestPurchaseOrder", true, true, true);
// }
public void testInvoice()
throws IOException, Schema2BeansException, InterruptedExcept
ion {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true );
config.setGenerateValidate(true );
config.setProcessComments(true );
config.setProcessDocType(true );
BeanGraph bg = new BeanGraph();
SchemaTypeMappingType stm = new SchemaTypeMappingType();
stm.setSchemaTypeNamespace("http://www.w3.org/2001/XMLSchema ");
stm.setSchemaTypeName("integer" );
stm.setJavaType("int" );
bg.addSchemaTypeMapping(stm);
config.addReadBeanGraphs(bg);
generalTest("TestInvoice" , true , config);
}
public void testBookXMLSchema() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestBookXMLSchema" , true , false , false );
}
public void testBook() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestBook" );
}
public void testDupInternalNames() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestDupInternalNames" , true , true , true );
}
public void testEvents() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEvents" );
}
public void testMerge() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestMerge" );
}
public void testAttr() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestAttr" , false , false , true );
}
public void testMdd() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestMdd" );
}
public void testValid() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestValid" );
}
public void testFind() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestFind" );
}
// 228467 - tests.MainTest.testVeto started to fail and needs to be fixed; commenting out for now:
public void DISABLEtestVeto() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestVeto" );
}
public void testContrivedApp() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestContrivedApp" );
}
public void testEncoding() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEncoding" );
}
public void testExceptions() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestExceptions" );
}
public void testEmpty() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestEmpty" );
}
// Disabled as schema/DTD/XML was not donated
// public void testNamespace() throws IOException, Schema2BeansException, InterruptedException {
// GenBeans.Config config = new GenBeans.Config();
// config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
// config.setAttributesAsProperties(true);
// config.setRemoveUnreferencedNodes(true);
// config.setGenerateValidate(true);
// generalTest("TestNamespace", true, config);
// }
public void testExtensionSample() throws IOException, Schema2BeansException, InterruptedException {
generalTest("TestExtensionSample" , true , true , true );
}
public void testExtension() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true );
config.setGenerateValidate(true );
config.setProcessComments(true );
config.setProcessDocType(true );
config.setGenerateCommonInterface("CommonBean" );
generalTest("TestExtension" , true , config);
}
public void testExtension2() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setRespectExtension(true );
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true );
config.setGenerateCommonInterface("CommonBean" );
generalTest("TestExtension2" , true , config);
}
// Disabled as schema/DTD/XML was not donated
// public void testWebApp() throws IOException, Schema2BeansException, InterruptedException {
// GenBeans.Config config = new GenBeans.Config();
// config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
// config.setAttributesAsProperties(true);
// config.setGenerateCommonInterface("CommonBean");
// config.setRemoveUnreferencedNodes(true);
// generalTest("TestWebApp", true, config);
// }
// Disabled as schema/DTD/XML was not donated
// public void testWebAppDelegator() throws IOException, Schema2BeansException, InterruptedException {
// GenBeans.Config config = new GenBeans.Config();
// config.buyPremium();
// config.setGenerateDelegator(true);
// config.setGenerateHasChanged(true);
// generalTest("TestWebAppDelegator", true, config);
// }
// Disabled as schema/DTD/XML was not donated
// public void testWebAppDelegatorBaseBean() throws IOException, Schema2BeansException, InterruptedException {
// GenBeans.Config config = new GenBeans.Config();
// config.buyPremium();
// config.setGenerateDelegator(true);
// config.setOutputType(GenBeans.Config.OUTPUT_TRADITIONAL_BASEBEAN);
// generalTest("TestWebAppDelegatorBaseBean", true, config);
// }
// Disabled as schema/DTD/XML was not donated
// public void testFinalWebApp() throws IOException, Schema2BeansException, InterruptedException {
// GenBeans.Config config = new GenBeans.Config();
// config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
// config.setAttributesAsProperties(true);
// config.setGenerateCommonInterface("CommonBean");
// config.setGenerateValidate(true);
// config.setProcessComments(true);
// config.setProcessDocType(true);
// config.addReadBeanGraphFiles(new File(getDataDir(), "TestFinalWebAppBeanGraph.xml"));
// generalTest("TestFinalWebApp", true, config);
// }
public void testBadNames() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setGenerateCommonInterface(null );
config.setOutputType(GenBeans.Config.OUTPUT_TRADITIONAL_BASEBEAN);
generalTest("TestBadNames" , true , config);
}
public void testPositions() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.buyPremium();
config.setKeepElementPositions(true );
generalTest("TestPositions" , false , config);
}
public void testOr() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setGenerateValidate(true );
generalTest("TestOr" , false , config);
}
public void testGroupUnbounded() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true );
config.setGenerateValidate(true );
generalTest("TestGroupUnbounded" , true , config);
}
// /// Disabled as schema/DTD/XML was not donated
// public void testApplication1_4() throws IOException, Schema2BeansException, InterruptedException {
// generalTest("TestApplication1_4", true, true, true);
// }
public void testInclude() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setDocRoot("root" );
generalTest("TestIncludeMain" , true , config, false );
}
public void testChameleonInclude() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
generalTest("TestChameleonIncludeMain" , true , config, false );
}
public void testMergeExtendBaseBean() throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
config.setAttributesAsProperties(true );
config.setGenerateValidate(true );
config.setGenerateCommonInterface("CommonBean" );
config.setExtendBaseBean(true );
config.setUseInterfaces(true );
config.setDumpToString(true );
generalTest("TestMergeExtendBaseBean" , false , config);
}
// /// Disabled as schema/DTD/XML was not donated
// public void testBeanWrapper() throws IOException, Schema2BeansException, InterruptedException {
// String testName = "TestBeanWrapper";
// try {
// System.out.println(": Starting "+testName);
// File workDir = getWorkDir();
// System.out.println("workDir="+workDir.toString());
// File schemaFile;
// File beanTreeFile = File.createTempFile("beanTree", "txt");
// InputStream dtdIn;
// InputStream mddIn;
//
// GenBeans.Config config = new GenBeans.Config();
// config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
// config.setAttributesAsProperties(true);
// config.setGenerateCommonInterface("CommonBean");
// config.setGenerateInterfaces(true);
// config.setGeneratePropertyEvents(true);
// config.setAuto(true);
// config.setStandalone(false);
// schemaFile = new File(getDataDir(), "simple.xsd");
// dtdIn = new FileInputStream(schemaFile);
// config.setFileIn(dtdIn);
// config.setInputURI(schemaFile.toString());
// config.setMddIn(null);
// config.setSchemaType(GenBeans.Config.XML_SCHEMA);
// config.setRootDir(new File(workDir.toString()));
// String simpleBeanGraph = getDataDir() + File.pathSeparator + "simpleBeanGraph.xml";
// config.setWriteBeanGraphFile(new File(simpleBeanGraph));
// ref("Calling GenBeans.doIt");
// GenBeans.doIt(config);
// beanTreeFile.delete();
//
// config = new GenBeans.Config();
// config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
// config.setAttributesAsProperties(true);
// config.setGenerateCommonInterface("CommonBean");
// config.setGenerateInterfaces(true);
// config.setGeneratePropertyEvents(true);
// config.setAuto(true);
// config.setStandalone(false);
// schemaFile = new File(getDataDir(), "TestNamespace.xsd");
// dtdIn = new FileInputStream(schemaFile);
// config.setFileIn(dtdIn);
// config.setInputURI(schemaFile.toString());
// //mddIn = new FileInputStream(new File(getDataDir(), "TestBeanWrapper.mdd"));
// //config.setMddIn(mddIn);
// config.setSchemaType(GenBeans.Config.XML_SCHEMA);
// config.setRootDir(workDir);
// config.setDumpBeanTree(beanTreeFile);
// config.addReadBeanGraphFiles(new File(simpleBeanGraph));
// ref("Calling GenBeans.doIt");
// GenBeans.doIt(config);
//
// ref("Bean Tree:");
// ref(beanTreeFile);
//
// ref("Compiling");
// String cmd = getJdkHome() + "javac -nowarn -classpath "+workDir.toString()+File.pathSeparator+getDataDir().toString()+File.pathSeparator+theClassPath+" "+getDataDir().toString()+"/"+testName+".java";
// int result = runCommandToSystemOut(cmd);
// ref("Finished compiling: "+result);
//
// cmd = getJdkHome() + "java -classpath "+workDir.toString()+File.pathSeparator+getDataDir().toString()+File.pathSeparator+theClassPath+" "+testName+" "+getDataDir().toString()+"/";
// result = runCommand(cmd);
// ref("Finished running "+testName+": "+result);
//
// System.out.println("Finished.\n");
// } catch (Exception e) {
// ref(e.getMessage());
// e.printStackTrace();
// }
// }
public void generalTest(String testName) throws IOException, Schema2BeansException, InterruptedException {
generalTest(testName, false , false , false );
}
public void generalTest(String testName, boolean xmlSchema,
boolean pureJavaBeans, boolean attrProp) throws IOException, Schema2BeansException, InterruptedException {
GenBeans.Config config = new GenBeans.Config();
if (pureJavaBeans) {
config.setOutputType(GenBeans.Config.OUTPUT_JAVABEANS);
}
if (attrProp) {
config.setAttributesAsProperties(true );
}
generalTest(testName, xmlSchema, config);
}
public void generalTest(String testName, boolean xmlSchema,
GenBeans.Config config) throws IOException, Schema2BeansException, InterruptedException {
generalTest(testName, xmlSchema, config, true );
}
public void generalTest(String testName, boolean xmlSchema,
GenBeans.Config config, boolean testCompile) throws IOException, Schema2BeansException, InterruptedException {
String testOnly = System.getProperty("MainTest.testOnly" );
if (testOnly != null && !testOnly.equals(testName))
return ;
try {
System.out.println(": Starting " +testName);
File workDir = getWorkDir();
//File diffCommandFile = new File(workDir, "diffCommand");
//Writer cmdOut = new FileWriter(diffCommandFile);
//cmdOut.write("ediff "+workDir.toString());
//cmdOut.close();
config.setAuto(true );
config.setStandalone(false );
//config.setTraceParse(true);
//config.setTraceGen(true);
//config.setThrowErrors(true);
System.out.println("workDir=" +workDir.toString());
File schemaFile;
if (xmlSchema) {
schemaFile = new File(getDataDir(), testName+".xsd" );
InputStream dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setSchemaType(GenBeans.Config.XML_SCHEMA);
} else {
schemaFile = new File(getDataDir(), testName+".dtd" );
InputStream dtdIn = new FileInputStream(schemaFile);
config.setFileIn(dtdIn);
config.setSchemaType(GenBeans.Config.DTD);
}
try {
InputStream mddIn = new FileInputStream(new File(getDataDir(), testName+".mdd" ));
System.out.println("Found mdd file" );
config.setMddIn(mddIn);
} catch (FileNotFoundException e) {
// It's okay if there is no mdd file present
}
config.setInputURI(schemaFile.toString());
config.setRootDir(workDir);
//config.setPackagePath();
//config.setMessageOut(getRef());
//if (testName.equals("TestBookXMLSchema")) {
// config.setTraceParse(true);
// config.setTraceGen(true);
//}
File beanTreeFile = File.createTempFile("beanTree" , "txt" );
config.setDumpBeanTree(beanTreeFile);
ref("Calling GenBeans.doIt" );
GenBeans.doIt(config);
ref("Bean Tree:" );
ref(beanTreeFile);
beanTreeFile.delete ();
if (testCompile) {
ref("Compiling" );
String cmd = getJdkHome() + "javac -nowarn -classpath " +workDir.toString()+File.pathSeparator+getDataDir().toString()+File.pathSeparator+theClassPath+" " +getDataDir().toString()+"/" +testName+".java" ;
int result = runCommandToSystemOut(cmd);
ref("Finished compiling: " +result);
//runCommand("ls -l "+getDataDir());
cmd = getJdkHome() + "java -classpath " +workDir.toString()+File.pathSeparator+getDataDir().toString()+File.pathSeparator+theClassPath+" " +testName+" " +getDataDir().toString()+"/" ;
result = runCommand(cmd);
ref("Finished running " +testName+": " +result);
}
System.out.println("Finished.\n" );
} catch (Exception e) {
ref(e.getMessage());
e.printStackTrace();
}
}
private int runCommand(String cmd) throws java.io.IOException, java.lang.InterruptedException {
System.out.println(cmd);
Process proc = Runtime.getRuntime().exec(cmd);
Writer out = new BufferedWriter(new OutputStreamWriter(getRef(), StandardCharsets.UTF_8));
Thread outThread = new Thread (new InputMonitor("out: " , proc.getInputStream(), out));
outThread.start();
Thread errThread = new Thread (new InputMonitor("err: " , proc.getErrorStream(), out));
errThread.start();
int result = proc.waitFor();
out.flush();
// Wait upto 32s for that thread to finish before going on.
outThread.join(32000);
errThread.join(32000);
return result;
}
private int runCommandToSystemOut(String cmd) throws java.io.IOException, java.lang.InterruptedException {
System.out.println(cmd);
Process proc = Runtime.getRuntime().exec(cmd);
int result = proc.waitFor();
return result;
}
static class InputMonitor implements Runnable {
private String prefix;
private InputStream is;
private Writer out;
public InputMonitor(String prefix, InputStream is, Writer out) {
this .prefix = prefix;
this .is = is;
this .out = out;
}
public void run() {
try {
int c;
boolean freshLine = true ;
while ((c = is.read()) != -1) {
if (freshLine) {
out.write(prefix);
freshLine = false ;
}
char ch = (char )c;
if (ch == '\n' )
freshLine = true ;
out.write(ch);
}
out.flush();
} catch (java.io.IOException e) {
try {
out.write(e.getMessage());
} catch (java.io.IOException e2) {
// try only once.
}
}
}
}
//protected File dataDir;
protected String theClassPath = "" ;
@Override
protected void setUp() {
// when running this code inside IDE, getResource method returns URL in NBFS
// format, so we need to convert it to filename
// when running this code inside code mode, nothing happens
//String dataDirName = NbTestCase.convertNBFSURL(MainTest.class.getResource("data"));
//dataDir = new File(dataDirName);
//System.out.println("dataDirName="+dataDirName);
theClassPath += classPathEntryFromURL(org.netbeans.modules.schema2beans.BaseBean.class );
theClassPath += File.pathSeparator + classPathEntryFromURL(org.openide.filesystems.FileObject.class );
theClassPath += File.pathSeparator + classPathEntryFromURL(org.openide.util.Lookup.class );
//theClassPath += File.pathSeparator + classPathEntryFromURL(javax.xml.namespace.QName.class);
//theClassPath += File.pathSeparator + classPathEntryFromURL(org.w3c.dom.Node.class);
//theClassPath += File.pathSeparator + classPathEntryFromURL(javax.xml.parsers.DocumentBuilderFactory.newInstance().getClass());
//theClassPath += File.pathSeparator + classPathEntryFromURL(org.w3c.dom.ranges.DocumentRange.class);
System.out.println("classpath=" +theClassPath);
}
private String classPathEntryFromURL(Class cls) {
String shortName = cls.getName().substring(1+cls.getName().lastIndexOf('.' ));
URL url = cls.getResource(shortName + ".class" );
String file = url.getFile();
if (url.getProtocol().equals("jar" )) {
// example: file = 'jar:/usr/local/j2sdkee1.3.1/lib/j2ee.jar!/org/w3c/dom/Node.class'
String jarFile = file.substring(file.indexOf(':' )+1);
jarFile = jarFile.substring(0, jarFile.indexOf('!' ));
return jarFile;
} else if (url.getProtocol().equals("file" )) {
// example: file='/home/cliffwd/cvs/dublin/nb_all/schema2beans/rt/src/org/netbeans/modules/schema2beans/GenBeans.class'
String result = file.substring(0, file.length() - cls.getName().length() - 6);
return result;
} else {
return file;
}
}
@Override
protected void tearDown() {
compareReferenceFiles();
}
// XXX: temporarily overriding compareReferenceFiles() to dump differences as
// I do not know what problem there is on javaee continual tester as there is
// no access to diff files
@Override
public void compareReferenceFiles(String testFilename, String goldenFilename, String diffFilename) {
try {
File goldenFile = getGoldenFile(goldenFilename);
File testFile = new File(getWorkDir(),testFilename);
File diffFile = new File(getWorkDir(),diffFilename);
String message = "Files differ" ;
if (System.getProperty("xtest.home" ) == null ) {
// show location of diff file only when run without XTest (run file in IDE)
message += "; check " +diffFile;
}
try {
assertFile(message, testFile, goldenFile, diffFile);
} catch (AssertionFileFailedError e) {
BufferedReader diffFileReader = new BufferedReader(new FileReader(diffFile));
StringBuilder diff = new StringBuilder();
try {
String ss = diffFileReader.readLine();
while (ss != null ) {
diff.append(ss+"\n" );
ss = diffFileReader.readLine();
}
} finally {
diffFileReader.close();
}
throw new AssertionFileFailedError("DIFF: " +diffFile.toString()+"\n" +diff.toString(), e.getDiffFile());
}
} catch (IOException ioe) {
fail("Could not obtain working direcory" );
}
}
public void ref(File f) throws IOException {
try (Reader r = new FileReader(f)) {
char buf[] = new char [1024];
StringBuilder s = new StringBuilder();
int len;
while ((len = r.read(buf, 0, 1024)) > 0) {
s.append(buf, 0, len);
}
ref(s.toString());
}
}
private String getJdkHome(){
if (Utilities.isMac() || System.getProperty("java.version" ).startsWith("1." ) == false )
return System.getProperty("java.home" ) + File.separator + "bin" + File.separator; // mac or JDK 9+
else
return System.getProperty("java.home" ) + File.separator + ".." + File.separator + "bin" + File.separator;
}
}
Messung V0.5 C=96 H=89 G=92
¤ Dauer der Verarbeitung: 0.41 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland