package org.simpleframework.xml.stream;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.xmlpull.v1.XmlPullParser;
public class PullReaderTest extends TestCase {
private static final String SOURCE =
"<?xml version=\"1.0\" encoding='UTF-8'?>\n"+
"<x:override id='12' flag='true' xmlns:x='http://www.x.com/x'>\n"+
" <x:text>entry text</x:text> \n\r"+
" <name>some name</name> \n"+
" <third>added to schema</third>\n"+
"</x:override>";
public void testInputStream() throws Exception {
Provider provider = new PullProvider();
byte[] array = SOURCE.getBytes("UTF-8");
InputStream source = new ByteArrayInputStream(array);
EventReader reader = provider.provide(source);
EventNode node = reader.peek();
assertEquals(node.getName(), "override");
assertEquals(node.getLine(), 2);
assertEquals(node.getPrefix(), "x");
assertEquals(node.getReference(), "http://www.x.com/x");
assertTrue(XmlPullParser.class.isAssignableFrom(node.getSource().getClass()));
List<Attribute> attributes = new ArrayList<Attribute>();
for(Attribute attribute : node) {
attributes.add(attribute);
}
assertEquals(attributes.size(), 2);
assertEquals(attributes.get(0).getName(), "id");
assertEquals(attributes.get(0).getValue(), "12");
assertTrue(XmlPullParser.class.isAssignableFrom(attributes.get(0).getSource().getClass()));
assertEquals(attributes.get(1).getName(), "flag");
assertEquals(attributes.get(1).getValue(), "true");
assertTrue(XmlPullParser.class.isAssignableFrom(attributes.get(1).getSource().getClass()));
}
public void testReader() throws Exception {
Provider provider = new PullProvider();
Reader source = new StringReader(SOURCE);
EventReader reader = provider.provide(source);
EventNode node = reader.peek();
assertEquals(node.getName(), "override");
assertEquals(node.getLine(), 2);
assertEquals(node.getPrefix(), "x");
assertEquals(node.getReference(), "http://www.x.com/x");
assertTrue(XmlPullParser.class.isAssignableFrom(node.getSource().getClass()));
List<Attribute> attributes = new ArrayList<Attribute>();
for(Attribute attribute : node) {
attributes.add(attribute);
}
assertEquals(attributes.size(), 2);
assertEquals(attributes.get(0).getName(), "id");
assertEquals(attributes.get(0).getValue(), "12");
assertTrue(XmlPullParser.class.isAssignableFrom(attributes.get(0).getSource().getClass()));
assertEquals(attributes.get(1).getName(), "flag");
assertEquals(attributes.get(1).getValue(), "true");
assertTrue(XmlPullParser.class.isAssignableFrom(attributes.get(1).getSource().getClass()));
attributes.clear();
node = reader.next();
assertEquals(node.getName(), "override");
assertEquals(node.getLine(), 2);
assertTrue(XmlPullParser.class.isAssignableFrom(node.getSource().getClass()));
node = reader.next();
assertEquals(node.getName(), null);
assertTrue(node.isText());
node = reader.next();
assertEquals(node.getName(), "text");
assertEquals(node.getLine(), 3);
assertEquals(node.getPrefix(), "x");
assertEquals(node.getReference(), "http://www.x.com/x");
assertEquals(node.getValue(), null);
assertTrue(node.isStart());
node = reader.next();
assertEquals(node.getName(), null);
assertEquals(node.getValue(), "entry text");
assertTrue(node.isText());
}
}