1 package com.thoughtworks.xstream.xml; 2 3 import junit.framework.TestCase; 4 5 public abstract class AbstractXMLReaderTest extends TestCase { 6 7 // factory method 8 protected abstract XMLReader createReader(String xml) throws Exception; 9 10 public void testStartsAtRootTag() throws Exception { 11 XMLReader xmlReader = createReader("<hello/>"); 12 assertEquals("hello", xmlReader.name()); 13 } 14 15 public void testCanNavigateDownChildTagsByIndex() throws Exception { 16 XMLReader xmlReader = createReader("<a><b><ooh/></b><b><aah/></b></a>"); 17 18 assertEquals("a", xmlReader.name()); 19 assertEquals(2, xmlReader.childCount()); 20 21 xmlReader.child(0); 22 { 23 assertEquals("b", xmlReader.name()); 24 assertEquals(1, xmlReader.childCount()); 25 26 xmlReader.child(0); 27 { 28 assertEquals("ooh", xmlReader.name()); 29 assertEquals(0, xmlReader.childCount()); 30 } 31 xmlReader.pop(); 32 33 } 34 xmlReader.pop(); 35 36 xmlReader.child(1); 37 { 38 assertEquals("b", xmlReader.name()); 39 assertEquals(1, xmlReader.childCount()); 40 41 xmlReader.child(0); 42 { 43 assertEquals("aah", xmlReader.name()); 44 assertEquals(0, xmlReader.childCount()); 45 } 46 xmlReader.pop(); 47 48 } 49 xmlReader.pop(); 50 } 51 52 public void testCanNavigateDownChildTagsByName() throws Exception { 53 XMLReader xmlReader = createReader("<a><hello/><world/></a>"); 54 55 assertEquals(2, xmlReader.childCount()); 56 57 xmlReader.child("hello"); 58 assertEquals("hello", xmlReader.name()); 59 xmlReader.pop(); 60 61 xmlReader.child("world"); 62 assertEquals("world", xmlReader.name()); 63 xmlReader.pop(); 64 } 65 66 public void testChildTagsCanBeMixedWithOtherNodes() throws Exception { 67 XMLReader xmlReader = createReader("<!-- xx --><a> <hello/> <!-- x --> text <world/></a>"); 68 69 assertEquals(2, xmlReader.childCount()); 70 71 xmlReader.child("hello"); 72 assertEquals("hello", xmlReader.name()); 73 xmlReader.pop(); 74 75 xmlReader.child("world"); 76 assertEquals("world", xmlReader.name()); 77 xmlReader.pop(); 78 } 79 80 public void testFetchingChildTagByNameOnlyGetsDirectDescendant() throws Exception { 81 XMLReader xmlReader = createReader("" + 82 "<root>" + 83 " <something>" + 84 " <findme>" + 85 " <BAD/>" + 86 " </findme>" + 87 " </something>" + 88 " <findme>" + 89 " <GOOD/>" + 90 " </findme>" + 91 "</root>" 92 ); 93 94 xmlReader.child("findme"); 95 xmlReader.child(0); 96 assertEquals("GOOD", xmlReader.name()); 97 98 } 99 100 public void testAttributesCanBeFetchedFromTags() throws Exception { 101 XMLReader xmlReader = createReader("" + 102 "<hello one=\"1\" two=\"2\">" + 103 " <child three=\"3\"/>" + 104 "</hello>"); 105 106 assertEquals("1", xmlReader.attribute("one")); 107 assertEquals("2", xmlReader.attribute("two")); 108 assertNull(xmlReader.attribute("three")); 109 110 xmlReader.child(0); 111 assertNull(xmlReader.attribute("one")); 112 assertNull(xmlReader.attribute("two")); 113 assertEquals("3", xmlReader.attribute("three")); 114 115 } 116 117 public void testTextCanBeExtractedFromTag() throws Exception { 118 XMLReader xmlReader = createReader("<root><a>some<!-- ignore me --> text!</a><b>more</b></root>"); 119 120 xmlReader.child(0); 121 assertEquals("some text!", xmlReader.text()); 122 xmlReader.pop(); 123 124 xmlReader.child(1); 125 assertEquals("more", xmlReader.text()); 126 xmlReader.pop(); 127 } 128 129 public void testChildElementsCanBeTestedToSeeIfTheyExist() throws Exception { 130 XMLReader xmlReader = createReader("<root><present/></root>"); 131 132 assertTrue(xmlReader.childExists("present")); 133 assertTrue(!xmlReader.childExists("not-present")); 134 135 } 136 }

This page was automatically generated by Maven