@Test
 public void testByteArrayIsTruncated() {
   byte[] bytes = new byte[] {0, 1, 2, 3, 4, 5};
   ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
   ByteStreamReadingMessageSource source = new ByteStreamReadingMessageSource(stream);
   source.setBytesPerMessage(4);
   Message<?> message1 = source.receive();
   assertEquals(4, ((byte[]) message1.getPayload()).length);
   Message<?> message2 = source.receive();
   assertEquals(2, ((byte[]) message2.getPayload()).length);
   Message<?> message3 = source.receive();
   assertNull(message3);
 }
 @Test
 public void testEndOfStream() {
   byte[] bytes = new byte[] {1, 2, 3};
   ByteArrayInputStream stream = new ByteArrayInputStream(bytes);
   ByteStreamReadingMessageSource source = new ByteStreamReadingMessageSource(stream);
   Message<?> message1 = source.receive();
   byte[] payload = (byte[]) message1.getPayload();
   assertEquals(3, payload.length);
   assertEquals(1, payload[0]);
   assertEquals(2, payload[1]);
   assertEquals(3, payload[2]);
   Message<?> message2 = source.receive();
   assertNull(message2);
 }