@Test
public void testDecode() throws BlockCodecException {

    BooleanCodec codec = new BooleanCodec();
    codec.setTrueValue("0");
    Assert.assertEquals("0", codec.getTrueValue());
    codec.setFalseValue("1");
    Assert.assertEquals("1", codec.getFalseValue());
    Assert.assertEquals(false, codec.decode(new byte[] { (byte) 0xbf }, 1));
    Assert.assertEquals(false, codec.decode(new byte[] { (byte) 0x3f }, 3));
    Assert.assertEquals(false, codec.decode(new byte[] { (byte) 0x02 }, 7));
    Assert.assertEquals(true, codec.decode(new byte[] { (byte) 0x01 }, 7));
    codec.reset();
    codec.setTrueValue("1");
    Assert.assertEquals("1", codec.getTrueValue());
    codec.setFalseValue("0");
    Assert.assertEquals("0", codec.getFalseValue());
    // 10111111
    Assert.assertEquals(true, codec.decode(new byte[] { (byte) 0xbf }, 1));
    // 00111111
    Assert.assertEquals(true, codec.decode(new byte[] { (byte) 0x3f }, 3));
    // 00000010
    Assert.assertEquals(true, codec.decode(new byte[] { (byte) 0x02 }, 7));
    // 00000001
    Assert.assertEquals(false, codec.decode(new byte[] { (byte) 0x01 }, 7));
}