1 23 24 package org.enhydra.xml.xmlc.xml; 25 import java.io.File ; 26 import java.lang.reflect.Method ; 27 28 import junit.framework.Test; 29 30 import org.enhydra.xml.xmlc.XMLObject; 31 import org.enhydra.xml.xmlc.driver.ExecXmlc; 32 33 37 public class ExtendsTests extends XmlTestCaseBase { 38 39 private final String [] INTERFACE_INSTANCEOF = { 40 "org.enhydra.xml.xmlc.XMLObject", 41 "org.w3c.dom.Document" 42 }; 43 44 45 private final String [] INTERFACE_NOT_INSTANCEOF = { 46 "org.enhydra.xml.xmlc.XMLObjectImpl", 47 }; 48 49 50 private final String [] IMPLEMENTATION_INSTANCEOF = { 51 "org.enhydra.xml.xmlc.XMLObject", 52 "org.enhydra.xml.xmlc.XMLObjectImpl", 53 "org.w3c.dom.Document" 54 }; 55 56 57 public static Test suite() { 58 return createSuite(ExtendsTests.class, null); 59 } 60 61 62 public ExtendsTests(Method method) { 63 super(method); 64 } 65 66 69 private void verifyClass(XMLObject doc, 70 Class xtraImpl) { 71 verifyIsClass(doc.getClass()); 72 verifyInstanceOf(doc.getClass(), 73 IMPLEMENTATION_INSTANCEOF); 74 if (xtraImpl != null) { 75 verifyInstanceOf(doc.getClass(), xtraImpl); 76 } 77 } 78 79 82 private void verifyInterface(Class docClass, 83 Class xtraImpl) { 84 verifyIsInterface(docClass); 85 verifyInstanceOf(docClass, 86 INTERFACE_INSTANCEOF); 87 verifyNotInstanceOf(docClass, 88 INTERFACE_NOT_INSTANCEOF); 89 if (xtraImpl != null) { 90 verifyInstanceOf(docClass, xtraImpl); 91 } 92 } 93 94 97 private XmlBasicTest createTest() { 98 return new XmlBasicTest(this, getInputFile("wml/Login.wml"), 99 getInputFile("wml/wml_1.1.test.xml")); 100 } 101 102 105 public void test1() { 106 XmlBasicTest test = createTest(); 107 test.addFirst(ExecXmlc.OPT_IMPLEMENTS, WMLLogin.class.getName()); 108 109 Class expectDocClass; 110 if (fParams.getDom().equals(ExecXmlc.XERCES_DOM)) { 111 test.setDomOpt(ExecXmlc.OPT_DOM_FACTORY, 112 TestXercesDOMFactory.class.getName()); 113 expectDocClass = TestXercesDOMDocument.class; 114 } else { 115 test.setDomOpt(ExecXmlc.OPT_DOM_FACTORY, 116 TestLazyDOMFactory.class.getName()); 117 expectDocClass = TestLazyDOMDocument.class; 118 } 119 test.basicTest(); 120 121 XMLObject doc = loadTestDocument(); 122 verifyClass(doc, WMLLogin.class); 123 verifyInstanceOf(doc.getDocument().getClass(), 124 expectDocClass); 125 } 126 127 130 public void test2() { 131 XmlBasicTest test = createTest(); 132 test.addFirst(ExecXmlc.OPT_EXTENDS, XMLObjectBase.class.getName()); 133 134 Class expectDocClass; 135 if (fParams.getDom().equals(ExecXmlc.XERCES_DOM)) { 136 test.setDomOpt(ExecXmlc.OPT_DOM_FACTORY, 137 TestXercesDOMFactory.class.getName()); 138 expectDocClass = TestXercesDOMDocument.class; 139 } else { 140 test.setDomOpt(ExecXmlc.OPT_DOM_FACTORY, 141 TestLazyDOMFactory.class.getName()); 142 expectDocClass = TestLazyDOMDocument.class; 143 } 144 test.basicTest(); 145 146 XMLObject doc = loadTestDocument(); 147 verifyClass(doc, XMLObjectBase.class); 148 verifyInstanceOf(doc.getDocument().getClass(), 149 expectDocClass); 150 } 151 152 156 public void test3() { 157 XmlBasicTest test = createTest(); 158 setUsingImplInterface(); 159 test.addFirst(ExecXmlc.OPT_GENERATE, ExecXmlc.GENERATE_BOTH); 160 test.addFirst(ExecXmlc.OPT_IMPLEMENTS, 161 WMLLogin.class.getName()); 162 test.basicTest(); 163 164 verifyInterface(loadDocClassInterface(), WMLLogin.class); 165 verifyClass(loadTestDocument(), WMLLogin.class); 166 } 167 168 172 public void test4() { 173 XmlBasicTest test = createTest(); 174 setUsingImplInterface(); 175 test.addFirst(ExecXmlc.OPT_GENERATE, ExecXmlc.GENERATE_BOTH); 176 test.addFirst(ExecXmlc.OPT_EXTENDS, 177 XMLObjectBase.class.getName()); 178 test.basicTest(); 179 180 verifyInterface(loadDocClassInterface(), null); 181 verifyClass(loadTestDocument(), XMLObjectBase.class); 182 } 183 184 187 public void test5() { 188 XmlBasicTest test = createTest(); 189 setUsingImplInterface(); 190 test.addFirst(ExecXmlc.OPT_EXTENDS, 191 XMLObjectBase.class.getName()); 192 test.addFirst(ExecXmlc.OPT_GENERATE, ExecXmlc.GENERATE_BOTH); 193 test.basicTest(); 194 verifyInterface(loadDocClassInterface(), null); 195 verifyClass(loadTestDocument(), XMLObjectBase.class); 196 } 197 198 201 public void test6() { 202 XmlBasicTest test 203 = new XmlBasicTest(this, getInputFile("bioml/insulin3.bioml"), 204 getInputFile("bioml/bioml.dtd")); 205 setUsingImplInterface(); 206 207 test.addFirst(ExecXmlc.OPT_GENERATE, ExecXmlc.GENERATE_INTERFACE); 209 test.compileOriginalStep(); 210 211 ExecXmlc execXmlc = new ExecXmlc(this); 213 execXmlc.addOpt(ExecXmlc.OPT_GENERATE, 214 ExecXmlc.GENERATE_IMPLEMENTATION); 215 execXmlc.addOpt(ExecXmlc.OPT_CLASS, getTestClass()); 216 execXmlc.addOpt(ExecXmlc.OPT_DEST_DIR, getClassRoot()); 217 execXmlc.addClassPath(getClassRoot()); 218 execXmlc.setSrcFile(getInputFile("bioml/insulin3.bioml")); 219 220 File outFile2 = getResultFile("compile2.out"); 221 File expectFile2 = getExpectedFile("compile2.out"); 222 execXmlc.compile(outFile2); 223 getDiffer().diff(expectFile2, outFile2); 224 225 Class faceClass = loadDocClassInterface(); 229 verifyInterface(faceClass, null); 230 verifyClass(loadTestDocument(faceClass), faceClass); 231 232 test.reparseStep(); 234 } 235 } 236 | Popular Tags |