This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
java-nio-server/src/test/java/com/jenkov/nioserver/MessageTest.java

60 lines
1.7 KiB
Java

package com.jenkov.nioserver;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import java.nio.ByteBuffer;
/**
* Created by jjenkov on 18-10-2015.
*/
public class MessageTest {
@Test
public void testWriteToMessage() {
MessageBuffer messageBuffer = new MessageBuffer();
Message message = messageBuffer.getMessage();
ByteBuffer byteBuffer = ByteBuffer.allocate(1024 * 1024);
fill(byteBuffer, 4096);
int written = message.writeToMessage(byteBuffer);
assertEquals(4096, written);
assertEquals(4096, message.length);
assertSame(messageBuffer.smallMessageBuffer, message.sharedArray);
fill(byteBuffer, 124 * 1024);
written = message.writeToMessage(byteBuffer);
assertEquals(124 * 1024, written);
assertEquals(128 * 1024, message.length);
assertSame(messageBuffer.mediumMessageBuffer, message.sharedArray);
fill(byteBuffer, (1024-128) * 1024);
written = message.writeToMessage(byteBuffer);
assertEquals(896 * 1024, written);
assertEquals(1024 * 1024, message.length);
assertSame(messageBuffer.largeMessageBuffer, message.sharedArray);
fill(byteBuffer, 1);
written = message.writeToMessage(byteBuffer);
assertEquals(-1, written);
}
private void fill(ByteBuffer byteBuffer, int length){
byteBuffer.clear();
for(int i=0; i<length; i++){
byteBuffer.put((byte) (i%128));
}
byteBuffer.flip();
}
}