1 4 package org.oddjob.arooa.handlers; 5 6 import java.io.ByteArrayInputStream ; 7 8 import junit.framework.TestCase; 9 10 import org.oddjob.arooa.ArooaHandler; 11 import org.oddjob.arooa.ArooaContext; 12 import org.oddjob.arooa.xml.XMLDefinitionHelper; 13 import org.xml.sax.Attributes ; 14 import org.xml.sax.InputSource ; 15 16 19 public class RootHandlerTest extends TestCase { 20 21 public void testContext() { 22 class TestHandler extends ArooaHandler { 23 public void onStartElement(String uri, String tag, String qname, 24 Attributes attrs, ArooaContext context) { 25 context.set("test", "something"); 26 } 27 28 public ArooaHandler onStartChild(String uri, String tag, 29 String qname, Attributes attrs, ArooaContext context) { 30 assertEquals("context", "something", context.getLocal("test")); 31 return this; 32 } 33 34 public void onEndChild(String uri, String tag, String qname, 35 ArooaContext context) { 36 context.set("test2", "otherthing"); 37 assertEquals("context", "something", context.getLocal("test")); 38 } 39 40 public void onEndElement(String uri, String tag, 41 ArooaContext context) { 42 assertEquals("context", "something", context.getLocal("test")); 43 if ("a".equals(tag)) { 44 assertEquals("context", "otherthing", context.getLocal("test2")); 45 } 46 } 47 48 public void characters(char[] buf, int start, int count, 49 ArooaContext context) { 50 assertEquals("context", "something", context.getLocal("test")); 51 } 52 } 53 54 String s = "<a>x<b/>y</a>"; 55 XMLDefinitionHelper h = new XMLDefinitionHelper(new ArooaContext()); 56 h.parse(new InputSource (new ByteArrayInputStream (s.getBytes())), 57 new MainHandler(new TestHandler())); 58 } 59 60 public void testCalled() { 61 class TestHandler extends ArooaHandler { 62 int startE = 0; 63 int startC = 0; 64 int endC = 0; 65 int endE = 0; 66 int c = 0; 67 68 public void onStartElement(String uri, String tag, String qname, 69 Attributes attrs, ArooaContext context) { 70 startE++; 71 } 72 73 public ArooaHandler onStartChild(String uri, String tag, 74 String qname, Attributes attrs, ArooaContext context) { 75 startC++; 76 return this; 77 } 78 79 public void onEndChild(String uri, String tag, String qname, 80 ArooaContext context) { 81 endC++; 82 } 83 84 public void onEndElement(String uri, String tag, 85 ArooaContext context) { 86 endE++; 87 } 88 89 public void characters(char[] buf, int start, int count, 90 ArooaContext context) { 91 c++; 92 } 93 } 94 95 String s = "<a>x<b/>y</a>"; 96 TestHandler t = new TestHandler(); 97 XMLDefinitionHelper h = new XMLDefinitionHelper(new ArooaContext()); 98 h.parse(new InputSource (new ByteArrayInputStream (s.getBytes())), 99 new MainHandler(t)); 100 101 assertEquals("startE", 2, t.startE); 102 assertEquals("startC", 1, t.startC); 103 assertEquals("endC", 1, t.endC); 104 assertEquals("endE", 2, t.endE); 105 assertEquals("c", 2, t.c); 106 } 107 108 public void testTags() { 109 class TestHandler extends ArooaHandler { 110 public void onStartElement(String uri, String tag, String qname, 111 Attributes attrs, ArooaContext context) { 112 if (context.getParent().getLocal("tag") == null) { 113 assertEquals("tag", "a", tag); 114 context.set("tag", tag); 115 } 116 else { 117 assertEquals("tag", "b", tag); 118 } 119 } 120 121 public ArooaHandler onStartChild(String uri, String tag, 122 String qname, Attributes attrs, ArooaContext context) { 123 assertEquals("tag", "b", tag); 124 return this; 125 } 126 127 public void onEndChild(String uri, String tag, String qname, 128 ArooaContext context) { 129 assertEquals("tag", "b", tag); 130 } 131 132 public void onEndElement(String uri, String tag, 133 ArooaContext context) { 134 if (context.getParent().getLocal("tag") == null) { 135 assertEquals("tag", "a", tag); 136 context.set("tag", tag); 137 } 138 else { 139 assertEquals("tag", "b", tag); 140 } 141 } 142 143 } 144 145 String s = "<a><b/></a>"; 146 XMLDefinitionHelper h = new XMLDefinitionHelper(new ArooaContext()); 147 h.parse(new InputSource (new ByteArrayInputStream (s.getBytes())), 148 new MainHandler(new TestHandler())); 149 } 150 } 151 | Popular Tags |