mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
OSC: added unit tests for round-trip correctness (receiver to sender).
This commit is contained in:
parent
8313ba7a23
commit
3945f1d29b
1 changed files with 206 additions and 0 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue