1 package de.java2html.javasource.test; 2 3 import java.io.IOException ; 4 import java.io.StringReader ; 5 import java.util.HashMap ; 6 import java.util.Map ; 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 17 public abstract class JavaSourceParserTestCase extends TestCase { 18 19 private static Map map; 20 21 24 static { 25 map = new HashMap (); 26 map.put("A", JavaSourceType.ANNOTATION); 28 map.put("_", JavaSourceType.BACKGROUND); 29 map.put(":", JavaSourceType.LINE_NUMBERS); 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); } 45 46 protected static JavaSource doParse(String text) throws IOException { 47 StringReader stringReader = new StringReader (text); 48 JavaSourceParser parser = new JavaSourceParser(); 49 return parser.parse(stringReader); 50 } 51 52 protected void assertParsedTypesEquals(String sourceCode, String typeCode) throws IOException { 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 ("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 |