package com.tecspy.protocol;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import junit.framework.TestCase;
/**
*
* @author Michael Erskine
*
*/public class EtxMessageByteSinkTest extends TestCase {
public EtxMessageByteSinkTest(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
}
/**
* A simple EtxMessageByteSink that has 'z' as etx and writes its messages
* to a List.
*/
public class Testerw extends EtxMessageByteSink {
public List<String> results = new LinkedList<String>();
public Testerw() {
super();
etx = (byte) 'z';
maxmsg = 1000;
msg = new StringBuilder(1000);
}
@Override
protected void handleMsg() {
results.add("msg(" + msg.length() + "): '" + msg.toString() + "'");
}
@Override
public void processEof() {
results.add("EOF");
}
@Override
public void processException(IOException e) {
results.add("IOException: " + e.getMessage());
}
}
public final void test1() {
}
public final void testEtxMessageByteSink() {
// create simple implementation and feed it test byte streams
// expect certain things to have occurred
Testerw sink = new Testerw();
String t1 = "message1zmessage2zmessage3z";
byte[] bytes = t1.getBytes();
List<String> expected = new LinkedList<String>();
expected.add("msg(8): 'message1'");
expected.add("msg(8): 'message2'");
expected.add("msg(8): 'message3'");
sink.processBytes(bytes, bytes.length);
EtxMessageByteSink.log.debug("expected: " + expected.toString());
EtxMessageByteSink.log.debug("actual: " + sink.results.toString());
if (!sink.results.equals(expected)) {
EtxMessageByteSink.log.error("expected: " + expected.toString());
EtxMessageByteSink.log
.error("actual: " + sink.results.toString());
fail("result doesn't match expected");
}
}
}