package com.netthreads.audio.test;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import org.junit.Test;
import com.netthreads.osc.common.domain.OSCEncoder;
import com.netthreads.osc.common.domain.OSCMessage;
public class TestOSCMessage
{
private String MESSAGE1_ADDRESS = "/oscillator/4/frequency";
private byte[] MESSAGE1 =
{
(byte) 0x2f, (byte) 0x6f, (byte) 0x73, (byte) 0x63, (byte) 0x69, (byte) 0x6c, (byte) 0x6c, (byte) 0x61, (byte) 0x74, (byte) 0x6f, (byte) 0x72, (byte) 0x2f, (byte) 0x34, (byte) 0x2f, (byte) 0x66, (byte) 0x72, (byte) 0x65, (byte) 0x71, (byte) 0x75, (byte) 0x65, (byte) 0x6e, (byte) 0x63, (byte) 0x79, (byte) 0x0, (byte) 0x2c, (byte) 0x66, (byte) 0x0, (byte) 0x0, (byte) 0x43, (byte) 0xdc, (byte) 0x0, (byte) 0x0
};
private String MESSAGE2_ADDRESS = "/foo";
private byte[] MESSAGE2 =
{
(byte) 0x2f, (byte) 0x66, (byte) 0x6f, (byte) 0x6f, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2c, (byte) 0x69, (byte) 0x69, (byte) 0x73, (byte) 0x66, (byte) 0x66, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3, (byte) 0xe8, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x68, (byte) 0x65, (byte) 0x6c, (byte) 0x6c, (byte) 0x6f, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3f, (byte) 0x9d, (byte) 0xf3, (byte) 0xb6, (byte) 0x40, (byte) 0xb5, (byte) 0xb2,
(byte) 0x2d
};
private String MESSAGE3_ADDRESS = "/instrumenta/noteon";
private byte[] MESSAGE3 =
{
(byte) 0x2f, /* [/] - 47 */
(byte) 0x69, /* [i] - 105 */
(byte) 0x6e, /* [n] - 110 */
(byte) 0x73, /* [s] - 115 */
(byte) 0x74, /* [t] - 116 */
(byte) 0x72, /* [r] - 114 */
(byte) 0x75, /* [u] - 117 */
(byte) 0x6d, /* [m] - 109 */
(byte) 0x65, /* [e] - 101 */
(byte) 0x6e, /* [n] - 110 */
(byte) 0x74, /* [t] - 116 */
(byte) 0x61, /* [a] - 97 */
(byte) 0x2f, /* [/] - 47 */
(byte) 0x6e, /* [n] - 110 */
(byte) 0x6f, /* [o] - 111 */
(byte) 0x74, /* [t] - 116 */
(byte) 0x65, /* [e] - 101 */
(byte) 0x6f, /* [o] - 111 */
(byte) 0x6e, /* [n] - 110 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x2c, /* [,] - 44 */
(byte) 0x69, /* [i] - 105 */
(byte) 0x69, /* [i] - 105 */
(byte) 0x69, /* [i] - 105 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x40, /* [@] - 64 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x20, /* [ ] - 32 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x0, /* [^@ (NUL)] - 0 */
(byte) 0x10, /* [^P] - 16 */
};
/**
* Test message.
*/
@Test
public void test1()
{
// Test arguments
float value1 = 440.0f;
// Build message
OSCMessage oscMessage = OSCMessage.$(MESSAGE1_ADDRESS);
oscMessage.addArgument(value1);
// Stream to buffer.
ByteBuf buffer = Unpooled.buffer(MESSAGE1.length);
OSCEncoder encoder = new OSCEncoder();
encoder.encode(oscMessage, buffer);
// Test buffer matches expected output.
byte[] outStream = buffer.array();
boolean match = TestHelper.compareBuffer(MESSAGE1, outStream);
junit.framework.Assert.assertTrue(match);
}
/**
* Test message.
*/
@Test
public void test2()
{
// Test arguments
int value1 = 1000;
int value2 = -1;
String value3 = "hello";
float value4 = 1.234f;
float value5 = 5.678f;
// Build message
OSCMessage oscMessage = OSCMessage.$(MESSAGE2_ADDRESS);
oscMessage.addArgument(value1);
oscMessage.addArgument(value2);
oscMessage.addArgument(value3);
oscMessage.addArgument(value4);
oscMessage.addArgument(value5);
// Stream to buffer.
ByteBuf buffer = Unpooled.buffer(MESSAGE2.length);
OSCEncoder encoder = new OSCEncoder();
encoder.encode(oscMessage, buffer);
// Test buffer matches expected output.
byte[] outStream = buffer.array();
boolean match = TestHelper.compareBuffer(MESSAGE2, outStream);
junit.framework.Assert.assertTrue(match);
}
/**
* Test message.
*
*/
@Test
public void test3()
{
// Test arguments
int value1 = 64;
int value2 = 32;
int value3 = 16;
// Build message
OSCMessage oscMessage = OSCMessage.$(MESSAGE3_ADDRESS);
oscMessage.addArgument(value1); // channel
oscMessage.addArgument(value2); // note
oscMessage.addArgument(value3); // velocity
// Stream to buffer.
ByteBuf buffer = Unpooled.buffer(MESSAGE3.length);
OSCEncoder encoder = new OSCEncoder();
encoder.encode(oscMessage, buffer);
// Test buffer matches expected output.
byte[] outStream = buffer.array();
boolean match = TestHelper.compareBuffer(MESSAGE3, outStream);
junit.framework.Assert.assertTrue(match);
}
}