KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > java2html > javasource > test > JavaSourceParserTestCase


1 package de.java2html.javasource.test;
2
3 import java.io.IOException JavaDoc;
4 import java.io.StringReader JavaDoc;
5 import java.util.HashMap JavaDoc;
6 import java.util.Map JavaDoc;
7
8 import de.java2html.javasource.JavaSource;
9 import de.java2html.javasource.JavaSourceParser;
10 import de.java2html.javasource.JavaSourceType;
11
12 import junit.framework.TestCase;
13
14 /**
15  * @author Markus Gebhard
16  */

17 public abstract class JavaSourceParserTestCase extends TestCase {
18
19   private static Map JavaDoc map;
20
21   /* Defines a simple language for encoding JavaSourcType constants
22    * to one character each.
23    * Space character == ignore */

24   static {
25     map = new HashMap JavaDoc();
26     //TODO Mar 12, 2004 (Markus Gebhard) Generics: map.put("G"), JavaSourceType.GENRICS);
27
map.put("A", JavaSourceType.ANNOTATION);
28     map.put("_", JavaSourceType.BACKGROUND);
29     map.put(":", JavaSourceType.LINE_NUMBERS); //irrelevant for parsing
30
map.put("#", JavaSourceType.COMMENT_BLOCK);
31     map.put("/", JavaSourceType.COMMENT_LINE);
32     map.put("K", JavaSourceType.KEYWORD);
33     map.put("S", JavaSourceType.STRING);
34     map.put("'", JavaSourceType.CHAR_CONSTANT);
35     map.put("1", JavaSourceType.NUM_CONSTANT);
36     map.put("{", JavaSourceType.PARENTHESIS);
37     map.put("T", JavaSourceType.CODE_TYPE);
38     map.put("C", JavaSourceType.CODE);
39     map.put("@", JavaSourceType.JAVADOC_KEYWORD);
40     map.put("<", JavaSourceType.JAVADOC_HTML_TAG);
41     map.put("L", JavaSourceType.JAVADOC_LINKS);
42     map.put("*", JavaSourceType.JAVADOC);
43     map.put("-", JavaSourceType.UNDEFINED); //irrelevant for parsing
44
}
45
46   protected static JavaSource doParse(String JavaDoc text) throws IOException JavaDoc {
47     StringReader JavaDoc stringReader = new StringReader JavaDoc(text);
48     JavaSourceParser parser = new JavaSourceParser();
49     return parser.parse(stringReader);
50   }
51
52   protected void assertParsedTypesEquals(String JavaDoc sourceCode, String JavaDoc typeCode) throws IOException JavaDoc {
53     assertNotNull("SourceCode null - testcase broken", sourceCode);
54     assertNotNull("TypeCode null - testcase broken", typeCode);
55     JavaSource source = doParse(sourceCode);
56
57     assertTrue(
58         "Error in TestCase: more types specified than resulted",
59         source.getClassification().length >= typeCode.length());
60
61     for (int i = 0; i < typeCode.length(); ++i) {
62       if (typeCode.charAt(i) == ' ') {
63         continue;
64       }
65       JavaSourceType expectedType = getSourceTypeForTypeCode(typeCode.charAt(i));
66       if (expectedType == null) {
67         throw new IllegalArgumentException JavaDoc("Unknown type mapping charcter for testing: '"
68             + typeCode.charAt(i)
69             + "'");
70       }
71       assertEquals("At character " + i + " (" + sourceCode.substring(i) + "):", expectedType, source
72           .getClassification()[i]);
73     }
74   }
75
76   private JavaSourceType getSourceTypeForTypeCode(char character) {
77     return (JavaSourceType) map.get(String.valueOf(character));
78   }
79 }
Popular Tags