private static void assertTypesEquality( FakeExtDocElement expected, ExtDocTypeSimpleElement element) { if (expected.getProperty("type").indexOf("|") != -1) { String[] splitedType = expected.getProperty("type").split("[|]"); for (int i = 0; i < splitedType.length; i++) { assertEquals(splitedType[i], element.getDeclaredTypes().get(i).getType()); } } else { assertEquals(expected.getProperty("type"), element.getDeclaredTypes().get(0).getType()); } }
/** The string should look like: <type>||<key1>=<value1>:<key2>=<value2>;<type> */ private static List<ExtDocElement> parseExpected(String expected) { List<ExtDocElement> elements = new ArrayList<ExtDocElement>(); String[] tags = expected.split("[;]+"); for (String tag : tags) { String[] tmp = tag.split("[|][|]"); FakeExtDocElement element = new FakeExtDocElement(ExtDocElementType.fromString(tmp[0])); if (tmp.length > 1) { String[] keyValues = tmp[1].split("[:]+"); for (String keyValue : keyValues) { String[] items = keyValue.split("[=]+"); if (items.length == 1) { // in context sensitive cases element.addProperty("desc", items[0]); } else { element.addProperty(items[0], items[1]); } } } elements.add(element); } return elements; }
/** * Examples of expected values: * * @private * @alias <ident> * @class <ident> <desc> * @type <type> * @return <type> <desc> * @param <type> <name> <desc> */ private static void assertElementEquality(FakeExtDocElement expected, ExtDocElement parsed) { assertEquals(expected.getType(), parsed.getType()); switch (parsed.getType().getCategory()) { case IDENT_SIMPLE: assertTrue(parsed instanceof ExtDocIdentSimpleElement); ExtDocIdentSimpleElement identSimpleElement = (ExtDocIdentSimpleElement) parsed; assertEquals(expected.getProperty("ident"), identSimpleElement.getIdentifier()); break; case IDENT_DESCRIBED: assertTrue(parsed instanceof ExtDocIdentDescribedElement); ExtDocIdentDescribedElement identDescribedElement = (ExtDocIdentDescribedElement) parsed; assertEquals(expected.getProperty("ident"), identDescribedElement.getIdentifier()); assertEquals(expected.getProperty("desc"), identDescribedElement.getDescription()); break; case DESCRIPTION: assertTrue(parsed instanceof ExtDocDescriptionElement); ExtDocDescriptionElement descElement = (ExtDocDescriptionElement) parsed; assertEquals(expected.getProperty("desc"), descElement.getDescription()); break; case SIMPLE: assertTrue(parsed instanceof ExtDocSimpleElement); break; case UNKNOWN: assertTrue(parsed instanceof ExtDocDescriptionElement); break; case TYPE_SIMPLE: assertTrue(parsed instanceof ExtDocTypeSimpleElement); ExtDocTypeSimpleElement typeSimpleElement = (ExtDocTypeSimpleElement) parsed; assertTypesEquality(expected, typeSimpleElement); break; case TYPE_DESCRIBED: assertTrue(parsed instanceof ExtDocTypeDescribedElement); ExtDocTypeDescribedElement typeDescElement = (ExtDocTypeDescribedElement) parsed; assertEquals(expected.getProperty("desc"), typeDescElement.getTypeDescription()); assertTypesEquality(expected, typeDescElement); break; case TYPE_NAMED: assertTrue(parsed instanceof ExtDocTypeNamedElement); ExtDocTypeNamedElement typeNamedElement = (ExtDocTypeNamedElement) parsed; assertEquals(expected.getProperty("name"), typeNamedElement.getTypeName().getName()); assertEquals(expected.getProperty("desc"), typeNamedElement.getTypeDescription()); assertTypesEquality(expected, typeNamedElement); break; default: throw new AssertionError(); } }