#include #include #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(); }