    @Test
    public void testEx1() {

        ProtocolMonitor<Object> monitor = this.protocol.createMonitor("abc");

        Assert.assertEquals("IdleState", monitor.getStateInfo());
        monitor.read((byte) 0x8a);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x8a);
        Assert.assertEquals("RunningState", monitor.getStateInfo());

        monitor.read((byte) 0x41);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x42);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x43);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x44);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x44);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x45);
        Assert.assertEquals("IdleState", monitor.getStateInfo());

        monitor.read((byte) 0x46);
        Assert.assertEquals("IdleState", monitor.getStateInfo());

        monitor.read((byte) 0x8a);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x8a);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x47);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0x48);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0xa8);
        Assert.assertEquals("RunningState", monitor.getStateInfo());
        monitor.read((byte) 0xa8);
        Assert.assertEquals("IdleState", monitor.getStateInfo());
    }