/* * Copyright (c) 2006-2007 David Holroyd */ package uk.co.badgersinfoil.metaas.impl.parser.e4x; import java.io.IOException; import java.io.StringReader; import uk.co.badgersinfoil.metaas.impl.AS3FragmentParser; import uk.co.badgersinfoil.metaas.impl.antlr.LinkedListTree; import uk.co.badgersinfoil.metaas.impl.parser.E4XHelper; import junit.framework.TestCase; public class E4XParserTests extends TestCase { public void testComment() throws Exception { E4XParser parser = parserOn("<!--foo-->"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlMarkup()); assertEquals(E4XParser.XML_COMMENT, tree.getType()); } public void testPI() throws Exception { E4XParser parser = parserOn("<?foo?>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlMarkup()); assertEquals(E4XParser.XML_PI, tree.getType()); } public void testCDATA() throws Exception { E4XParser parser = parserOn("<![CDATA[foo]]>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlMarkup()); assertEquals(E4XParser.XML_CDATA, tree.getType()); } public void testEmptyElement() throws Exception { E4XParser parser = parserOn("<foo/>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlElement()); assertEquals(E4XParser.XML_EMPTY_ELEMENT, tree.getType()); LinkedListTree child = tree.getFirstChild(); assertEquals("foo", child.getText()); } public void testRemainder() throws Exception { E4XParser parser = parserOn("<foo/>)"); parser.xmlPrimary(); assertEquals(")", parser.getInputTail()); } public void testElementBody() throws Exception { E4XParser parser = parserOn("<foo>bar & blat</foo>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlPrimary()); assertEquals(E4XParser.XML_ELEMENT, tree.getType()); } public void testList() throws Exception { E4XParser parser = parserOn("<><foo/></>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlListInitialiser()); assertEquals(E4XParser.XML_LIST, tree.getType()); LinkedListTree child = tree.getFirstChild(); assertEquals(E4XParser.XML_EMPTY_ELEMENT, child.getType()); } public void testEmptyList() throws Exception { E4XParser parser = parserOn("<></>"); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlListInitialiser()); assertEquals(E4XParser.XML_LIST, tree.getType()); LinkedListTree child = tree.getFirstChild(); assertNull(child); } public void testAttribute() throws Exception { E4XParser parser = parserOn(" a=\"b\""); LinkedListTree tree = AS3FragmentParser.tree(parser.xmlAttribute()); assertEquals(E4XParser.XML_ATTRIBUTE, tree.getType()); assertEquals("a", tree.getFirstChild().getText()); assertEquals("\"b\"", tree.getLastChild().getText()); } private static E4XParser parserOn(String str) throws IOException { StringReader in = new StringReader(str); return E4XHelper.parserOn(in); } }