124 lines
3.3 KiB
C++
124 lines
3.3 KiB
C++
#include <ArduinoUnit.h>
|
|
#include <OSCBundle.h>
|
|
#include "TestPrint.h"
|
|
|
|
#define HAS_DOUBLE sizeof(double) == 8
|
|
|
|
test(bundle_address){
|
|
OSCBundle bundle;
|
|
bundle.add("/address").add(1);
|
|
assertEqual(bundle.size(), 1);
|
|
OSCMessage msg = bundle.getOSCMessage("/address");
|
|
assertTrue(msg.isInt(0));
|
|
assertEqual(msg.getInt(0), 1);
|
|
}
|
|
|
|
test(bundle_message_position){
|
|
OSCBundle bundle;
|
|
bundle.add("/one").add(1);
|
|
bundle.add("/two").add(2);
|
|
assertEqual(bundle.size(), 2);
|
|
OSCMessage msg0 = bundle.getOSCMessage(0);
|
|
assertTrue(msg0.isInt(0));
|
|
assertEqual(msg0.getInt(0), 1);
|
|
OSCMessage msg1 = bundle.getOSCMessage(1);
|
|
assertTrue(msg1.isInt(0));
|
|
assertEqual(msg1.getInt(0), 2);
|
|
}
|
|
|
|
test(bundle_add_message){
|
|
OSCMessage msg("/msg");
|
|
OSCBundle bundle;
|
|
bundle.add(msg).add(1);
|
|
assertEqual(bundle.size(), 1);
|
|
OSCMessage test_msg = bundle.getOSCMessage(0);
|
|
assertTrue(test_msg.isInt(0));
|
|
assertEqual(test_msg.getInt(0), 1);
|
|
}
|
|
|
|
void routeA(OSCMessage & msg, int offset){
|
|
assertTrue(msg.isInt(0));
|
|
assertEqual(msg.getInt(0), 1);
|
|
}
|
|
|
|
void routeB(OSCMessage & msg, int offset){
|
|
assertTrue(msg.isInt(0));
|
|
assertEqual(msg.getInt(0), 2);
|
|
}
|
|
|
|
test(bundle_route){
|
|
OSCMessage msg("/msg");
|
|
OSCBundle bundle;
|
|
bundle.add("/a").add(1);
|
|
bundle.add("/b/1").add(2);
|
|
assertEqual(bundle.size(), 2);
|
|
assertTrue(bundle.route("/a", routeA));
|
|
assertTrue(bundle.route("/b", routeB));
|
|
}
|
|
|
|
void dispatchA(OSCMessage & msg){
|
|
assertTrue(msg.isInt(0));
|
|
assertEqual(msg.getInt(0), 1);
|
|
}
|
|
|
|
void dispatchB(OSCMessage & msg){
|
|
assertTrue(msg.isInt(0));
|
|
assertEqual(msg.getInt(0), 2);
|
|
}
|
|
|
|
test(bundle_dispatch){
|
|
OSCMessage msg("/msg");
|
|
OSCBundle bundle;
|
|
bundle.add("/a").add(1);
|
|
bundle.add("/b").add(2);
|
|
assertEqual(bundle.size(), 2);
|
|
assertTrue(bundle.route("/a", routeA));
|
|
assertTrue(bundle.route("/b", routeB));
|
|
}
|
|
|
|
test(bundle_encode){
|
|
TestPrint printer;
|
|
//this is the desired output
|
|
uint8_t testBuffer[] = {35, 98, 117, 110, 100, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 47, 97, 0, 0, 44, 105, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 47, 98, 0, 0, 44, 105, 0, 0, 0, 0, 0, 2};
|
|
OSCBundle bundle;
|
|
bundle.add("/a").add(1);
|
|
bundle.add("/b").add(2);
|
|
bundle.send(printer);
|
|
assertEqual(printer.size(), sizeof(testBuffer));
|
|
for (int i = 0; i < sizeof(testBuffer); i++){
|
|
assertEqual(testBuffer[i], printer.at(i));
|
|
}
|
|
}
|
|
|
|
test(bundle_decode){
|
|
uint8_t testBuffer[] = {35, 98, 117, 110, 100, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 47, 97, 0, 0, 44, 105, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 47, 98, 0, 0, 44, 105, 0, 0, 0, 0, 0, 2};
|
|
OSCBundle bundle;
|
|
bundle.fill(testBuffer, sizeof(testBuffer));
|
|
assertEqual(bundle.size(), 2);
|
|
OSCMessage msgA = bundle.getOSCMessage("/a");
|
|
assertTrue(msgA.isInt(0));
|
|
assertEqual(msgA.getInt(0), 1);
|
|
OSCMessage msgB = bundle.getOSCMessage("/b");
|
|
assertTrue(msgB.isInt(0));
|
|
assertEqual(msgB.getInt(0), 2);
|
|
}
|
|
|
|
test(bundle_decode_invalid){
|
|
uint8_t testBuffer[] = {35, 98, 117, 110, 100, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 47, 97, 0, 0, 44, 105, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 47, 98, 0, 0, 44, 105, 0, 0, 0, 0, 2};
|
|
OSCBundle bundle;
|
|
bundle.fill(testBuffer, sizeof(testBuffer));
|
|
assertTrue(bundle.hasError());
|
|
}
|
|
|
|
|
|
void setup()
|
|
{
|
|
Serial.begin(9600);
|
|
while(!Serial); // for the Arduino Leonardo/Micro only
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
Test::run();
|
|
}
|