1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package javax.jdo.schema;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.io.FilenameFilter;
23
24 import java.util.Arrays;
25 import java.util.List;
26
27 import javax.jdo.JDOFatalException;
28 import javax.jdo.util.AbstractTest;
29 import javax.jdo.util.BatchTestRunner;
30 import javax.jdo.util.XMLTestUtil;
31
32 import javax.xml.parsers.*;
33 import org.w3c.dom.Document;
34 import org.xml.sax.*;
35 import org.xml.sax.helpers.*;
36
37 /**
38 * Tests schema files.
39 * <p>
40 */
41 public class XMLTest extends AbstractTest {
42
43 /** */
44 protected static String BASEDIR = System.getProperty("basedir", ".");
45
46 /** File prefix */
47 protected static final String FILE_PREFIX = BASEDIR + "/test/schema/";
48
49 /** */
50 protected static final File JDO_XSD_FILE =
51 new File(BASEDIR + "/target/classes/javax/jdo/jdo_2_2.xsd");
52
53 /** */
54 protected static final File ORM_XSD_FILE =
55 new File(BASEDIR + "/target/classes/javax/jdo/orm_2_2.xsd");
56
57 /** */
58 protected static final File JDOQUERY_XSD_FILE =
59 new File(BASEDIR + "/target/classes/javax/jdo/jdoquery_2_2.xsd");
60
61 /** .xsd files */
62 protected static final File[] XSD_FILES =
63 new File[] {JDO_XSD_FILE, ORM_XSD_FILE, JDOQUERY_XSD_FILE};
64
65 /** XSD metadata files. */
66 protected static File[] positiveXSDJDO = getFiles("Positive", "-xsd.jdo");
67 protected static File[] negativeXSDJDO = getFiles("Negative", "-xsd.jdo");
68 protected static File[] positiveXSDORM = getFiles("Positive", "-xsd.orm");
69 protected static File[] negativeXSDORM = getFiles("Negative", "-xsd.orm");
70 protected static File[] positiveXSDJDOQUERY = getFiles("Positive", "-xsd.jdoquery");
71 protected static File[] negativeXSDJDOQUERY = getFiles("Negative", "-xsd.jdoquery");
72
73 /** DTD metadata files. */
74 protected static File[] positiveDTDJDO = getFiles("Positive", "-dtd.jdo");
75 protected static File[] negativeDTDJDO = getFiles("Negative", "-dtd.jdo");
76 protected static File[] positiveDTDORM = getFiles("Positive", "-dtd.orm");
77 protected static File[] negativeDTDORM = getFiles("Negative", "-dtd.orm");
78 protected static File[] positiveDTDJDOQUERY = getFiles("Positive", "-dtd.jdoquery");
79 protected static File[] negativeDTDJDOQUERY = getFiles("Negative", "-dtd.jdoquery");
80
81 /** Returns array of files of matching file names. */
82 protected static File[] getFiles(final String prefix, final String suffix) {
83 FilenameFilter filter = new FilenameFilter () {
84 public boolean accept(File file, String name) {
85 return (name.startsWith(prefix) && name.endsWith(suffix));
86 }
87 };
88 File dir = new File(FILE_PREFIX);
89 return dir.listFiles(filter);
90 }
91
92 /** */
93 public static void main(String args[]) {
94 BatchTestRunner.run(XMLTest.class);
95 }
96
97 /** Test XSD files jdo.xsd, orm.xsd, and jdoquery.xsd. */
98 public void testXSD() {
99 XMLTestUtil util = new XMLTestUtil();
100 appendMessage(util.checkXMLNonValidating(XSD_FILES));
101 failOnError();
102 }
103
104 /** Test XSD based .jdo, .orm and .jdoquery files. */
105 public void testXSDBased() {
106 XMLTestUtil util = new XMLTestUtil();
107 appendMessage(util.checkXML(positiveXSDJDO, true));
108 appendMessage(util.checkXML(negativeXSDJDO, false));
109 appendMessage(util.checkXML(positiveXSDORM, true));
110 appendMessage(util.checkXML(negativeXSDORM, false));
111 appendMessage(util.checkXML(positiveXSDJDOQUERY, true));
112 appendMessage(util.checkXML(negativeXSDJDOQUERY, false));
113 failOnError();
114 }
115
116 /** Test DTD based .jdo, .orm and .jdoquery files. */
117 public void testDTDBased() {
118 XMLTestUtil util = new XMLTestUtil();
119 appendMessage(util.checkXML(positiveDTDJDO, true));
120 appendMessage(util.checkXML(negativeDTDJDO, false));
121 appendMessage(util.checkXML(positiveDTDORM, true));
122 appendMessage(util.checkXML(negativeDTDORM, false));
123 appendMessage(util.checkXML(positiveDTDJDOQUERY, true));
124 appendMessage(util.checkXML(negativeDTDJDOQUERY, false));
125 failOnError();
126 }
127
128 }
129