Browse Source

OSC: added unit tests for round-trip correctness (receiver to sender).

tags/2021-05-28
Timur Doumler 8 years ago
parent
commit
3945f1d29b
1 changed files with 206 additions and 0 deletions
  1. +206
    -0
      modules/juce_osc/osc/juce_OSCSender.cpp

+ 206
- 0
modules/juce_osc/osc/juce_OSCSender.cpp View File

@@ -633,4 +633,210 @@ public:
static OSCBinaryWriterTests OSCBinaryWriterUnitTests;
//==============================================================================
class OSCRoundTripTests : public UnitTest
{
public:
OSCRoundTripTests() : UnitTest ("OSCRoundTripTests class") {}
void runTest()
{
beginTest ("Empty OSC message");
{
OSCMessage outMessage ("/test/empty");
OSCOutputStream output;
output.writeMessage (outMessage);
OSCInputStream input (output.getData(), output.getDataSize());
OSCMessage inMessage = input.readMessage();
expectEquals (inMessage.size(), 0);
}
beginTest ("OSC message with single argument");
{
OSCMessage outMessage ("/test/one_arg", 42);
OSCOutputStream output;
output.writeMessage (outMessage);
OSCInputStream input (output.getData(), output.getDataSize());
OSCMessage inMessage = input.readMessage();
expectEquals (inMessage.size(), 1);
expectEquals (inMessage[0].getInt32(), 42);
}
beginTest ("OSC message with multiple arguments");
{
OSCMessage outMessage ("/test/four_args", 42, 0.5f, String ("foo"), String ("bar"));
OSCOutputStream output;
output.writeMessage (outMessage);
OSCInputStream input (output.getData(), output.getDataSize());
OSCMessage inMessage = input.readMessage();
expectEquals (inMessage.size(), 4);
expectEquals (inMessage[0].getInt32(), 42);
expectEquals (inMessage[1].getFloat32(), 0.5f);
expectEquals (inMessage[2].getString(), String ("foo"));
expectEquals (inMessage[3].getString(), String ("bar"));
}
beginTest ("Empty OSC bundle");
{
OSCBundle outBundle;
OSCOutputStream output;
output.writeBundle (outBundle);
OSCInputStream input (output.getData(), output.getDataSize());
OSCBundle inBundle = input.readBundle();
expectEquals (inBundle.size(), 0);
}
beginTest ("OSC bundle with single message");
{
OSCMessage outMessage ("/test/one_arg", 42);
OSCBundle outBundle;
outBundle.addElement (outMessage);
OSCOutputStream output;
output.writeBundle (outBundle);
OSCInputStream input (output.getData(), output.getDataSize());
OSCBundle inBundle = input.readBundle();
expectEquals (inBundle.size(), 1);
OSCMessage inMessage = inBundle[0].getMessage();
expectEquals (inMessage.getAddressPattern().toString(), String ("/test/one_arg"));
expectEquals (inMessage.size(), 1);
expectEquals (inMessage[0].getInt32(), 42);
}
beginTest ("OSC bundle with multiple messages");
{
OSCMessage outMessage1 ("/test/empty");
OSCMessage outMessage2 ("/test/one_arg", 42);
OSCMessage outMessage3 ("/test/four_args", 42, 0.5f, String ("foo"), String ("bar"));
OSCBundle outBundle;
outBundle.addElement (outMessage1);
outBundle.addElement (outMessage2);
outBundle.addElement (outMessage3);
OSCOutputStream output;
output.writeBundle (outBundle);
OSCInputStream input (output.getData(), output.getDataSize());
OSCBundle inBundle = input.readBundle();
expectEquals (inBundle.size(), 3);
{
OSCMessage inMessage = inBundle[0].getMessage();
expectEquals (inMessage.getAddressPattern().toString(), String ("/test/empty"));
expectEquals (inMessage.size(), 0);
}
{
OSCMessage inMessage = inBundle[1].getMessage();
expectEquals (inMessage.getAddressPattern().toString(), String ("/test/one_arg"));
expectEquals (inMessage.size(), 1);
expectEquals (inMessage[0].getInt32(), 42);
}
{
OSCMessage inMessage = inBundle[2].getMessage();
expectEquals (inMessage.getAddressPattern().toString(), String ("/test/four_args"));
expectEquals (inMessage.size(), 4);
expectEquals (inMessage[0].getInt32(), 42);
expectEquals (inMessage[1].getFloat32(), 0.5f);
expectEquals (inMessage[2].getString(), String ("foo"));
expectEquals (inMessage[3].getString(), String ("bar"));
}
}
beginTest ("OSC bundle containing another bundle");
{
OSCBundle outBundleNested;
outBundleNested.addElement (OSCMessage ("/test/one_arg", 42));
OSCBundle outBundle;
outBundle.addElement (outBundleNested);
OSCOutputStream output;
output.writeBundle (outBundle);
OSCInputStream input (output.getData(), output.getDataSize());
OSCBundle inBundle = input.readBundle();
expectEquals (inBundle.size(), 1);
expect (inBundle[0].isBundle());
OSCBundle inBundleNested = inBundle[0].getBundle();
expectEquals (inBundleNested.size(), 1);
expect (inBundleNested[0].isMessage());
OSCMessage msg = inBundleNested[0].getMessage();
expectEquals (msg.getAddressPattern().toString(), String ("/test/one_arg"));
expectEquals (msg.size(), 1);
expectEquals (msg[0].getInt32(), 42);
}
beginTest ("OSC bundle containing multiple other bundles");
{
OSCBundle outBundleNested1;
outBundleNested1.addElement (OSCMessage ("/test/empty"));
OSCBundle outBundleNested2;
outBundleNested2.addElement (OSCMessage ("/test/one_arg", 42));
OSCBundle outBundle;
outBundle.addElement (outBundleNested1);
outBundle.addElement (outBundleNested2);
OSCOutputStream output;
output.writeBundle (outBundle);
OSCInputStream input (output.getData(), output.getDataSize());
OSCBundle inBundle = input.readBundle();
expectEquals (inBundle.size(), 2);
{
expect (inBundle[0].isBundle());
OSCBundle inBundleNested = inBundle[0].getBundle();
expectEquals (inBundleNested.size(), 1);
expect (inBundleNested[0].isMessage());
OSCMessage msg = inBundleNested[0].getMessage();
expectEquals (msg.getAddressPattern().toString(), String ("/test/empty"));
expectEquals (msg.size(), 0);
}
{
expect (inBundle[1].isBundle());
OSCBundle inBundleNested = inBundle[1].getBundle();
expectEquals (inBundleNested.size(), 1);
expect (inBundleNested[0].isMessage());
OSCMessage msg = inBundleNested[0].getMessage();
expectEquals (msg.getAddressPattern().toString(), String ("/test/one_arg"));
expectEquals (msg.size(), 1);
expectEquals (msg[0].getInt32(), 42);
}
}
}
};
static OSCRoundTripTests OSCRoundTripUnitTests;
//==============================================================================
#endif // JUCE_UNIT_TESTS

Loading…
Cancel
Save