package org.exist.util.serializer;
import static org.easymock.EasyMock.aryEq;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.isNull;
import static org.easymock.EasyMock.matches;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import java.io.OutputStream;
import java.util.List;
import junit.framework.Assert;
import org.easymock.Capture;
import org.exist.dom.QName;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.Attributes;
import com.siemens.ct.exi.api.sax.SAXEncoder;
public class EXISerializerTest {
private EXISerializer serializer;
private OutputStream mockOutputStream;
private SAXEncoder mockEncoder;
@Before
public void setUp() throws Exception {
mockOutputStream = createMock(OutputStream.class);
serializer = new EXISerializer(mockOutputStream);
mockEncoder = createMock(SAXEncoder.class);
serializer.setEncoder(mockEncoder);
}
@Test
public void testStartDocument() throws Exception {
mockEncoder.startDocument();
replay(mockEncoder);
serializer.startDocument();
verify(mockEncoder);
}
@Test
public void testEndDocument() throws Exception {
mockEncoder.endDocument();
replay(mockEncoder);
serializer.endDocument();
verify(mockEncoder);
}
@Test
public void testStartPrefixMapping() throws Exception {
mockEncoder.startPrefixMapping("prefix", "uri");
replay(mockEncoder);
serializer.startPrefixMapping("prefix", "uri");
verify(mockEncoder);
}
@Test
public void testEndPrefixMapping() throws Exception {
mockEncoder.endPrefixMapping("prefix");
replay(mockEncoder);
serializer.endPrefixMapping("prefix");
verify(mockEncoder);
}
@Test
public void testStartElement() throws Exception {
QName testQName = new QName("local", "uri", "prefix");
AttrList testAttrList = new AttrList();
testAttrList.addAttribute(new QName("local", "uri"), "value");
Capture<Attributes> capturedAttributes = new Capture<Attributes>();
mockEncoder.startElement(matches("uri"), matches("local"), (String)isNull(), capture(capturedAttributes));
replay(mockEncoder);
serializer.startElement(testQName, testAttrList);
verify(mockEncoder);
List<Attributes> capturedAttributeList = capturedAttributes.getValues();
Assert.assertEquals("local", capturedAttributeList.get(0).getLocalName(0));
Assert.assertEquals("uri", capturedAttributeList.get(0).getURI(0));
Assert.assertEquals("value", capturedAttributeList.get(0).getValue(0));
}
@Test
public void testEndElement() throws Exception {
QName testQName = new QName("local", "uri", "prefix");
mockEncoder.endElement(matches("uri"), matches("local"), (String)isNull());
replay(mockEncoder);
serializer.endElement(testQName);
verify(mockEncoder);
}
@Test
public void testCharacters() throws Exception {
String testString = "test";
CharSequence testSeq = testString;
mockEncoder.characters(aryEq(testString.toCharArray()), eq(0), eq(testString.length()));
replay(mockEncoder);
serializer.characters(testSeq);
verify(mockEncoder);
}
}