/*
* Copyright (C) 2015-2016 Neo Visionaries Inc.
*
* Licensed 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 com.neovisionaries.ws.client;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
public class WebSocketFrameTest
{
@Test
public void test001()
{
WebSocketFrame frame = WebSocketFrame.createTextFrame(null);
assertTrue(frame.toString().endsWith("Payload=null)"));
}
@Test
public void test002()
{
WebSocketFrame frame = WebSocketFrame.createTextFrame("dummy");
frame.setRsv1(true);
assertTrue(frame.toString().endsWith("Payload=compressed)"));
}
@Test
public void test003()
{
WebSocketFrame frame = WebSocketFrame.createTextFrame("hello");
assertTrue(frame.toString().endsWith("Payload=\"hello\")"));
}
@Test
public void test004()
{
WebSocketFrame frame = WebSocketFrame.createBinaryFrame(null);
assertTrue(frame.toString().endsWith("Payload=null)"));
}
@Test
public void test005()
{
byte[] payload = new byte[] { (byte)0x01, (byte)0x23, (byte)0xAB };
WebSocketFrame frame = WebSocketFrame.createBinaryFrame(payload);
frame.setRsv1(true);
assertTrue(frame.toString().endsWith("Payload=compressed)"));
}
@Test
public void test006()
{
byte[] payload = new byte[] { (byte)0x01, (byte)0x23, (byte)0xAB };
WebSocketFrame frame = WebSocketFrame.createBinaryFrame(payload);
assertTrue(frame.toString().endsWith("Payload=01 23 AB)"));
}
@Test
public void test007()
{
WebSocketFrame frame = WebSocketFrame.createTextFrame("0123456789");
List<WebSocketFrame> list = WebSocketFrame.splitIfNecessary(frame, 3, null);
assertNotNull(list);
assertEquals(4, list.size());
frame = list.get(0);
assertEquals("012", frame.getPayloadText());
assertEquals(true, frame.isTextFrame());
assertEquals(false, frame.getFin());
frame = list.get(1);
assertEquals("345", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(false, frame.getFin());
frame = list.get(2);
assertEquals("678", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(false, frame.getFin());
frame = list.get(3);
assertEquals("9", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(true, frame.getFin());
}
@Test
public void test008()
{
WebSocketFrame frame = WebSocketFrame.createContinuationFrame("ABCDEF");
List<WebSocketFrame> list = WebSocketFrame.splitIfNecessary(frame, 2, null);
assertNotNull(list);
assertEquals(3, list.size());
frame = list.get(0);
assertEquals("AB", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(false, frame.getFin());
frame = list.get(1);
assertEquals("CD", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(false, frame.getFin());
frame = list.get(2);
assertEquals("EF", frame.getPayloadText());
assertEquals(true, frame.isContinuationFrame());
assertEquals(false, frame.getFin());
}
@Test
public void test009()
{
String payload = "000000000000000000000000000000";
WebSocketFrame frame = WebSocketFrame.createTextFrame(payload);
PerMessageCompressionExtension pmce = new PerMessageDeflateExtension();
// splitIfNecessary() compresses the WebSocket frame and does not split it.
List<WebSocketFrame> list = WebSocketFrame.splitIfNecessary(frame, payload.length() - 1, pmce);
assertNull(list);
// splitIfNecessary() compresses the WebSocket frame and
list = WebSocketFrame.splitIfNecessary(frame, 1, pmce);
assertNotNull(list);
}
@Test
public void test010()
{
String payload = "000000000000000000000000000000111111111111111111111111111111";
WebSocketFrame frame = WebSocketFrame.createTextFrame(payload);
PerMessageCompressionExtension pmce = new PerMessageDeflateExtension();
// splitIfNecessary() compresses the WebSocket frame and splits it.
List<WebSocketFrame> list = WebSocketFrame.splitIfNecessary(frame, 1, pmce);
assertNotNull(list);
// Compute the total payload length of the WebSocket frames.
int totalLength = 0;
for (WebSocketFrame f : list)
{
totalLength += f.getPayloadLength();
}
// The total payload length of the WebSocket frames should be less
// than the payload length of the original WebSocket frame.
assertTrue(totalLength < payload.length());
}
}