/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.jafka.message;
import static org.junit.Assert.*;
import java.nio.ByteBuffer;
import io.jafka.common.UnknownMagicByteException;
import org.junit.Test;
import io.jafka.utils.Utils;
/**
* @author adyliu (imxylz@gmail.com)
* @since 1.0
*/
public class MessageTest {
/**
* Test method for {@link Message#crcOffset(byte)}.
*/
@Test
public void testCrcOffset() {
assertEquals(2, Message.crcOffset((byte)1));
try {
Message.crcOffset((byte)0);
fail();
} catch (UnknownMagicByteException e) {
//ignore
}
}
/**
* Test method for {@link Message#payloadOffset(byte)}.
*/
@Test
public void testPayloadOffset() {
assertEquals(6, Message.payloadOffset((byte)1));
}
/**
* Test method for {@link Message#headerSize(byte)}.
*/
@Test
public void testHeaderSize() {
assertEquals(6, Message.headerSize((byte)1));
}
/**
* Test method for {@link Message#getSizeInBytes()}.
*/
@Test
public void testGetSizeInBytes() {
Message m = new Message("demo".getBytes());
assertEquals(6+4, m.getSizeInBytes());
}
/**
* Test method for {@link Message#magic()}.
*/
@Test
public void testMagic() {
Message m = new Message("demo".getBytes());
assertEquals(1,m.magic());
}
/**
* Test method for {@link Message#payloadSize()}.
*/
@Test
public void testPayloadSize() {
Message m = new Message("demo".getBytes());
assertEquals(4,m.payloadSize());
}
/**
* Test method for {@link Message#attributes()}.
*/
@Test
public void testAttributes() {
Message m = new Message("demo".getBytes());
assertEquals((byte)0,m.attributes());
}
/**
* Test method for {@link Message#compressionCodec()}.
*/
@Test
public void testCompressionCodec() {
Message m = new Message("demo".getBytes());
assertEquals(CompressionCodec.NoCompressionCodec, m.compressionCodec());
}
/**
* Test method for {@link Message#checksum()}.
*/
@Test
public void testChecksum() {
Message m = new Message("demo".getBytes());
assertEquals(Utils.crc32("demo".getBytes()), m.checksum());
}
/**
* Test method for {@link Message#payload()}.
*/
@Test
public void testPayload() {
Message m = new Message("demo".getBytes());
assertEquals(ByteBuffer.wrap("demo".getBytes()), m.payload());
}
/**
* Test method for {@link Message#isValid()}.
*/
@Test
public void testIsValid() {
Message m = new Message("demo".getBytes());
ByteBuffer buf = m.buffer;
assertTrue(m.isValid());
buf.put(buf.limit()-1, (byte)(1+ buf.get(buf.limit()-1)));
assertFalse(m.isValid());
}
/**
* Test method for {@link Message#serializedSize()}.
*/
@Test
public void testSerializedSize() {
Message m = new Message("demo".getBytes());
assertEquals(4+6+("demo".length()),m.serializedSize());
}
/**
* Test method for {@link Message#serializeTo(java.nio.ByteBuffer)}.
*/
@Test
public void testSerializeTo() {
Message m = new Message("demo".getBytes());
ByteBuffer buffer = ByteBuffer.allocate(m.serializedSize());
m.serializeTo(buffer);
assertFalse(buffer.hasRemaining());
}
}