package com.berryworks.edireader;
import com.berryworks.edireader.error.EDISyntaxExceptionHandler;
import com.berryworks.edireader.tokenizer.Tokenizer;
import org.junit.Test;
import org.xml.sax.*;
import java.io.IOException;
import java.io.Writer;
import static org.junit.Assert.*;
public class EDIReaderWrapperTest {
EDIReaderWrapper wrapper;
final MockEDIReader ediReader = new MockEDIReader();
@Test
public void testWrapper() throws IOException, SAXException {
wrapper = new EDIReaderWrapper(ediReader);
assertSame(ediReader, wrapper.getWrappedEDIReader());
assertFalse(ediReader.isCalled("preview"));
wrapper.preview();
assertTrue(ediReader.isCalled("preview"));
assertFalse(ediReader.isCalled("parse"));
wrapper.parse((InputSource) null);
assertTrue(ediReader.isCalled("parse"));
assertFalse(ediReader.isCalled("getXMLTags"));
wrapper.getXMLTags();
assertTrue(ediReader.isCalled("getXMLTags"));
assertFalse(ediReader.isCalled("setXMLTags"));
wrapper.setXMLTags(null);
assertTrue(ediReader.isCalled("setXMLTags"));
assertFalse(ediReader.isCalled("getTerminator"));
wrapper.getTerminator();
assertTrue(ediReader.isCalled("getTerminator"));
assertFalse(ediReader.isCalled("setTerminator"));
wrapper.setTerminator(' ');
assertTrue(ediReader.isCalled("setTerminator"));
assertFalse(ediReader.isCalled("getTerminatorSuffix"));
wrapper.getTerminatorSuffix();
assertTrue(ediReader.isCalled("getTerminatorSuffix"));
assertFalse(ediReader.isCalled("setTerminatorSuffix"));
wrapper.setTerminatorSuffix(null);
assertTrue(ediReader.isCalled("setTerminatorSuffix"));
assertFalse(ediReader.isCalled("getDelimiter"));
wrapper.getDelimiter();
assertTrue(ediReader.isCalled("getDelimiter"));
assertFalse(ediReader.isCalled("setDelimiter"));
wrapper.setDelimiter(' ');
assertTrue(ediReader.isCalled("setDelimiter"));
assertFalse(ediReader.isCalled("getSubDelimiter"));
wrapper.getSubDelimiter();
assertTrue(ediReader.isCalled("getSubDelimiter"));
assertFalse(ediReader.isCalled("setSubDelimiter"));
wrapper.setSubDelimiter(' ');
assertTrue(ediReader.isCalled("setSubDelimiter"));
assertFalse(ediReader.isCalled("getSubSubDelimiter"));
wrapper.getSubSubDelimiter();
assertTrue(ediReader.isCalled("getSubSubDelimiter"));
assertFalse(ediReader.isCalled("setSubSubDelimiter"));
wrapper.setSubSubDelimiter(' ');
assertTrue(ediReader.isCalled("setSubSubDelimiter"));
assertFalse(ediReader.isCalled("getRelease"));
wrapper.getRelease();
assertTrue(ediReader.isCalled("getRelease"));
assertFalse(ediReader.isCalled("setRelease"));
wrapper.setRelease(' ');
assertTrue(ediReader.isCalled("setRelease"));
assertFalse(ediReader.isCalled("getReleaseCharacter"));
wrapper.getReleaseCharacter();
assertTrue(ediReader.isCalled("getReleaseCharacter"));
assertFalse(ediReader.isCalled("isReleaseCharacterDefined"));
wrapper.isReleaseCharacterDefined();
assertTrue(ediReader.isCalled("isReleaseCharacterDefined"));
assertFalse(ediReader.isCalled("getDecimalMark"));
wrapper.getDecimalMark();
assertTrue(ediReader.isCalled("getDecimalMark"));
assertFalse(ediReader.isCalled("setDecimalMark"));
wrapper.setDecimalMark(' ');
assertTrue(ediReader.isCalled("setDecimalMark"));
assertFalse(ediReader.isCalled("getRepetitionSeparator"));
wrapper.getRepetitionSeparator();
assertTrue(ediReader.isCalled("getRepetitionSeparator"));
assertFalse(ediReader.isCalled("setRepetitionSeparator"));
wrapper.setRepetitionSeparator(' ');
assertTrue(ediReader.isCalled("setRepetitionSeparator"));
assertFalse(ediReader.isCalled("getTokenizer"));
wrapper.getTokenizer();
assertTrue(ediReader.isCalled("getTokenizer"));
assertFalse(ediReader.isCalled("setTokenizer"));
wrapper.setTokenizer(null);
assertTrue(ediReader.isCalled("setTokenizer"));
assertFalse(ediReader.isCalled("setCopyWriter"));
wrapper.setCopyWriter(null);
assertTrue(ediReader.isCalled("setCopyWriter"));
assertFalse(ediReader.isCalled("getAcknowledgmentSyntaxDescriptor"));
wrapper.getAcknowledgmentSyntaxDescriptor();
assertTrue(ediReader.isCalled("getAcknowledgmentSyntaxDescriptor"));
assertFalse(ediReader.isCalled("setAcknowledgmentSyntaxDescriptor"));
wrapper.setAcknowledgmentSyntaxDescriptor(null);
assertTrue(ediReader.isCalled("setAcknowledgmentSyntaxDescriptor"));
assertFalse(ediReader.isCalled("getTransactionCallback"));
wrapper.getTransactionCallback();
assertTrue(ediReader.isCalled("getTransactionCallback"));
assertFalse(ediReader.isCalled("setTransactionCallback"));
wrapper.setTransactionCallback(null);
assertTrue(ediReader.isCalled("setTransactionCallback"));
assertFalse(ediReader.isCalled("getSyntaxExceptionHandler"));
wrapper.getSyntaxExceptionHandler();
assertTrue(ediReader.isCalled("getSyntaxExceptionHandler"));
assertFalse(ediReader.isCalled("setSyntaxExceptionHandler"));
wrapper.setSyntaxExceptionHandler(null);
assertTrue(ediReader.isCalled("setSyntaxExceptionHandler"));
assertFalse(ediReader.isCalled("getContentHandler"));
wrapper.getContentHandler();
assertTrue(ediReader.isCalled("getContentHandler"));
assertFalse(ediReader.isCalled("setContentHandler"));
wrapper.setContentHandler(null);
assertTrue(ediReader.isCalled("setContentHandler"));
assertFalse(ediReader.isCalled("getFeature"));
wrapper.getFeature(null);
assertTrue(ediReader.isCalled("getFeature"));
assertFalse(ediReader.isCalled("setFeature"));
wrapper.setFeature(null, false);
assertTrue(ediReader.isCalled("setFeature"));
assertFalse(ediReader.isCalled("getProperty"));
wrapper.getProperty(null);
assertTrue(ediReader.isCalled("getProperty"));
assertFalse(ediReader.isCalled("setProperty"));
wrapper.setProperty(null, false);
assertTrue(ediReader.isCalled("setProperty"));
assertFalse(ediReader.isCalled("getFirstSegment"));
wrapper.getFirstSegment();
assertTrue(ediReader.isCalled("getFirstSegment"));
assertFalse(ediReader.isCalled("setFirstSegment"));
wrapper.setFirstSegment(null);
assertTrue(ediReader.isCalled("setFirstSegment"));
}
@Test(expected = RuntimeException.class)
public void testDefaultConstructor() {
new EDIReaderWrapper();
}
class MockEDIReader extends EDIReader {
private String called = "|";
@Override
public void preview() throws EDISyntaxException, IOException {
called("preview");
}
@Override
public void parse(InputSource source) throws SAXException, IOException {
called("parse");
}
@Override
public XMLTags getXMLTags() {
called("getXMLTags");
return null;
}
@Override
public void setXMLTags(XMLTags tags) {
called("setXMLTags");
}
@Override
public char getTerminator() {
called("getTerminator");
return ' ';
}
@Override
public void setTerminator(char terminator) {
called("setTerminator");
}
@Override
public String getTerminatorSuffix() {
called("getTerminatorSuffix");
return null;
}
@Override
public void setTerminatorSuffix(String terminatorSuffix) {
called("setTerminatorSuffix");
}
@Override
public char getDelimiter() {
called("getDelimiter");
return ' ';
}
@Override
public void setDelimiter(char delimiter) {
called("setDelimiter");
}
@Override
public char getSubDelimiter() {
called("getSubDelimiter");
return ' ';
}
@Override
public void setSubDelimiter(char delimiter) {
called("setSubDelimiter");
}
@Override
public char getSubSubDelimiter() {
called("getSubSubDelimiter");
return ' ';
}
@Override
public void setSubSubDelimiter(char delimiter) {
called("setSubSubDelimiter");
}
@Override
public int getRelease() {
called("getRelease");
return ' ';
}
@Override
public void setRelease(int n) {
called("setRelease");
}
@Override
public char getReleaseCharacter() {
called("getReleaseCharacter");
return ' ';
}
@Override
public boolean isReleaseCharacterDefined() {
called("isReleaseCharacterDefined");
return false;
}
@Override
public void setDecimalMark(char decimalMark) {
called("setDecimalMark");
}
@Override
public char getDecimalMark() {
called("getDecimalMark");
return ' ';
}
@Override
public char getRepetitionSeparator() {
called("getRepetitionSeparator");
return ' ';
}
@Override
public void setRepetitionSeparator(char repetitionSeparator) {
called("setRepetitionSeparator");
}
@Override
public Tokenizer getTokenizer() {
called("getTokenizer");
return null;
}
@Override
public void setCopyWriter(Writer writer) {
called("setCopyWriter");
}
@Override
public void setTokenizer(Tokenizer t) {
called("setTokenizer");
}
@Override
public SyntaxDescriptor getAcknowledgmentSyntaxDescriptor() {
called("getAcknowledgmentSyntaxDescriptor");
return null;
}
@Override
public void setAcknowledgmentSyntaxDescriptor(SyntaxDescriptor syntaxDescriptor) {
called("setAcknowledgmentSyntaxDescriptor");
}
@Override
public TransactionCallback getTransactionCallback() {
called("getTransactionCallback");
return null;
}
@Override
public EDISyntaxExceptionHandler getSyntaxExceptionHandler() {
called("getSyntaxExceptionHandler");
return null;
}
@Override
public void setSyntaxExceptionHandler(EDISyntaxExceptionHandler syntaxExceptionHandler) {
called("setSyntaxExceptionHandler");
}
@Override
public void setTransactionCallback(TransactionCallback transactionCallback) {
called("setTransactionCallback");
}
@Override
public ContentHandler getContentHandler() {
called("getContentHandler");
return null;
}
@Override
public void setContentHandler(ContentHandler handler) {
called("setContentHandler");
}
@Override
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
called("getFeature");
return false;
}
@Override
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
called("setFeature");
}
@Override
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
called("getProperty");
return false;
}
@Override
public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
called("setProperty");
}
@Override
public String getFirstSegment() {
called("getFirstSegment");
return null;
}
@Override
public void setFirstSegment(String firstSegment) {
called("setFirstSegment");
}
public boolean isCalled(String method) {
return called.contains('|' + method + '|');
}
private void called(String method) {
called += method + '|';
}
}
}