package net.sf.nmedit.jpdl; import junit.framework.*; public class PdlTester extends TestCase { protected void setUp() { System.out.println(""); } private String testpdl = null; public String getTestPdlFileName() { if (testpdl == null) { // get location of test.pdl testpdl = getClass().getClassLoader().getResource("test.pdl").getFile(); } return testpdl; } public void testDecode() throws Exception { try { Protocol p = new Protocol(getTestPdlFileName()); p.useTracer(new TestTracer()); BitStream stream = new BitStream(); Packet packet = new Packet(); stream.append(0xf0, 8); stream.append(0x33, 8); stream.append( 0, 1); stream.append(0x16, 5); stream.append( 0, 2); stream.append(0x06, 8); stream.append( 0, 1); stream.append( 15, 7); stream.append( 0, 1); stream.append(0x7f, 7); stream.append( 0, 1); stream.append( 16, 7); stream.append( 0, 1); stream.append( 127, 7); stream.append(0xf7, 8); p.getPacketParser("Sysex").parse(stream, packet); Assert.assertEquals(0x16, packet.getVariable("cc")); Assert.assertEquals(0, packet.getVariable("slot")); Assert.assertEquals("ACK", packet.getPacket("data").getName()); Assert.assertEquals(15, packet.getPacket("data") .getVariable("pid1")); Assert.assertEquals(16, packet.getPacket("data") .getVariable("pid2")); Assert.assertEquals(127, packet.getPacket("data") .getVariable("checksum")); } catch(Exception e) { e.printStackTrace(); throw e; } } public void testEncode() throws Exception { Protocol p = new Protocol(getTestPdlFileName()); p.useTracer(new TestTracer()); BitStream bstream = new BitStream(); IntStream istream = new IntStream(); istream.append(0x16); istream.append(3); istream.append(4); istream.append(5); istream.append(6); p.getPacketParser("Sysex").generate(istream, bstream); Assert.assertEquals(0xf0, bstream.getInt(8)); Assert.assertEquals(0x33, bstream.getInt(8)); Assert.assertEquals(0, bstream.getInt(1)); Assert.assertEquals(0x16, bstream.getInt(5)); Assert.assertEquals(3, bstream.getInt(2)); Assert.assertEquals(0x06, bstream.getInt(8)); Assert.assertEquals(4, bstream.getInt(8)); Assert.assertEquals(0x7f, bstream.getInt(8)); Assert.assertEquals(5, bstream.getInt(8)); Assert.assertEquals(6, bstream.getInt(8)); Assert.assertEquals(0xf7, bstream.getInt(8)); } public void testGreedy() throws Exception { try { Protocol p = new Protocol(getTestPdlFileName()); p.useTracer(new TestTracer()); BitStream stream = new BitStream(); Packet packet = new Packet(); stream.append(1, 8); stream.append(2, 8); stream.append(3, 8); stream.append(4, 8); stream.append(5, 8); stream.append(6, 8); p.getPacketParser("Variable").parse(stream, packet); } catch(Exception e) { e.printStackTrace(); throw e; } } class TestTracer implements Tracer { public void trace(String msg) { System.out.println("TRACE: " + msg); } } }