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/MessageBufferTest.java

79 lines
2.3 KiB
Java

package com.jenkov.nioserver;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNotSame;
import static org.junit.jupiter.api.Assertions.assertSame;
import org.junit.jupiter.api.Test;
/**
* Project: <strong>java-nio-server</strong><br>
* File: <strong>MessageBufferTest.java</strong><br>
* Created: <strong>18 Oct 2015</strong><br>
*
* @author jjenkov
*/
public class MessageBufferTest {
@Test
public void testGetMessage() {
MessageBuffer messageBuffer = new MessageBuffer();
Message message = messageBuffer.getMessage();
assertNotNull(message);
assertEquals(0, message.offset);
assertEquals(0, message.length);
assertEquals(4 * 1024, message.capacity);
Message message2 = messageBuffer.getMessage();
assertNotNull(message2);
assertEquals(4096, message2.offset);
assertEquals(0, message2.length);
assertEquals(4 * 1024, message2.capacity);
// TODO: test what happens if the small buffer space is depleted of messages.
}
@Test
public void testExpandMessage() {
MessageBuffer messageBuffer = new MessageBuffer();
Message message = messageBuffer.getMessage();
byte[] smallSharedArray = message.sharedArray;
assertNotNull(message);
assertEquals(0, message.offset);
assertEquals(0, message.length);
assertEquals(4 * 1024, message.capacity);
messageBuffer.expandMessage(message);
assertEquals(0, message.offset);
assertEquals(0, message.length);
assertEquals(128 * 1024, message.capacity);
byte[] mediumSharedArray = message.sharedArray;
assertNotSame(smallSharedArray, mediumSharedArray);
messageBuffer.expandMessage(message);
assertEquals(0, message.offset);
assertEquals(0, message.length);
assertEquals(1024 * 1024, message.capacity);
byte[] largeSharedArray = message.sharedArray;
assertNotSame(smallSharedArray, largeSharedArray);
assertNotSame(mediumSharedArray, largeSharedArray);
// next expansion should not be possible.
assertFalse(messageBuffer.expandMessage(message));
assertEquals(0, message.offset);
assertEquals(0, message.length);
assertEquals(1024 * 1024, message.capacity);
assertSame(message.sharedArray, largeSharedArray);
}
}