package org.jooby.internal; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.List; import java.util.Map; import org.jooby.Err; import org.jooby.Mutant; import org.jooby.test.MockUnit; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import com.google.common.base.Charsets; @RunWith(PowerMockRunner.class) @PrepareForTest({WsBinaryMessage.class, ByteArrayInputStream.class, InputStreamReader.class }) public class WsBinaryMessageTest { @Test public void toByteArray() { byte[] bytes = "bytes".getBytes(); ByteBuffer buffer = ByteBuffer.wrap(bytes); assertArrayEquals(bytes, new WsBinaryMessage(buffer).to(byte[].class)); } @Test public void toByteBuffer() { byte[] bytes = "bytes".getBytes(); ByteBuffer buffer = ByteBuffer.wrap(bytes); assertEquals(buffer, new WsBinaryMessage(buffer).to(ByteBuffer.class)); } @Test public void toInputStream() throws Exception { byte[] bytes = "bytes".getBytes(); ByteBuffer buffer = ByteBuffer.wrap(bytes); new MockUnit() .expect(unit -> { InputStream stream = unit.mockConstructor(ByteArrayInputStream.class, new Class[]{byte[].class }, bytes); unit.registerMock(InputStream.class, stream); }) .run(unit -> { assertEquals(unit.get(InputStream.class), new WsBinaryMessage(buffer).to(InputStream.class)); }); } @Test public void toReader() throws Exception { byte[] bytes = "bytes".getBytes(); ByteBuffer buffer = ByteBuffer.wrap(bytes); new MockUnit() .expect( unit -> { InputStream stream = unit.mockConstructor(ByteArrayInputStream.class, new Class[]{byte[].class }, bytes); Reader reader = unit.mockConstructor(InputStreamReader.class, new Class[]{ InputStream.class, Charset.class }, stream, Charsets.UTF_8); unit.registerMock(Reader.class, reader); }) .run(unit -> { assertEquals(unit.get(Reader.class), new WsBinaryMessage(buffer).to(Reader.class)); }); } @Test(expected = Err.class) public void toUnsupportedType() throws Exception { byte[] bytes = "bytes".getBytes(); ByteBuffer buffer = ByteBuffer.wrap(bytes); new WsBinaryMessage(buffer).to(List.class); } @Test(expected = Err.class) public void booleanValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).booleanValue(); } @Test(expected = Err.class) public void byteValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).byteValue(); } @Test(expected = Err.class) public void shortValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).shortValue(); } @Test(expected = Err.class) public void intValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).intValue(); } @Test(expected = Err.class) public void longValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).longValue(); } @Test(expected = Err.class) public void value() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).value(); } @Test(expected = Err.class) public void floatValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).floatValue(); } @Test(expected = Err.class) public void doubleValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).doubleValue(); } @SuppressWarnings("unchecked") @Test(expected = Err.class) public void enumValue() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).toEnum(Enum.class); } @Test(expected = Err.class) public void toList() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).toList(String.class); } @Test(expected = Err.class) public void toSet() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).toSet(String.class); } @Test(expected = Err.class) public void toSortedSet() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).toSortedSet(String.class); } @Test(expected = Err.class) public void toOptional() throws Exception { new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).toOptional(String.class); } @Test public void isSet() throws Exception { assertEquals(true, new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())).isSet()); } @Test public void toMap() throws Exception { WsBinaryMessage msg = new WsBinaryMessage(ByteBuffer.wrap("bytes".getBytes())); Map<String, Mutant> map = msg.toMap(); assertEquals(msg, map.get("message")); } }