PlatformIO package of the Teensy core framework compatible with GCC 10 & C++20
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OSCMessage_test.ino 2.1KB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #include <ArduinoUnit.h>
  2. #include <OSCMessage.h>
  3. #define HAS_DOUBLE sizeof(double) == 8
  4. test(message_addres){
  5. OSCMessage msg("/hihi");
  6. char addr[6];
  7. msg.getAddress(addr);
  8. assertEqual(strcmp(addr, "/hihi"), 0);
  9. }
  10. test(message_addres_offset){
  11. OSCMessage msg("/foo/bar");
  12. char addr[5];
  13. msg.getAddress(addr, 4);
  14. assertEqual(strcmp(addr, "/bar"), 0);
  15. }
  16. test(message_copy){
  17. OSCMessage msg("/hihi");
  18. msg.add(1);
  19. OSCMessage cpy(&msg);
  20. assertEqual(cpy.size(), 1);
  21. assertTrue(cpy.isInt(0));
  22. assertEqual(cpy.getInt(0), 1);
  23. }
  24. test(message_int){
  25. OSCMessage msg("/foo");
  26. msg.add(1);
  27. assertTrue(msg.isInt(0));
  28. assertEqual(msg.getInt(0), 1);
  29. assertEqual(msg.getDataLength(0), 4);
  30. }
  31. test(message_float){
  32. OSCMessage msg("/foo");
  33. msg.add(1.0f);
  34. assertTrue(msg.isFloat(0));
  35. assertEqual(msg.getFloat(0), 1.0f);
  36. assertEqual(msg.getDataLength(0), 4);
  37. }
  38. test(message_string){
  39. OSCMessage msg("/foo");
  40. msg.add("oh hi");
  41. assertTrue(msg.isString(0));
  42. char str[6];
  43. msg.getString(0, str, 6);
  44. assertEqual(strcmp(str, "oh hi"), 0);
  45. assertEqual(msg.getDataLength(0), 6);
  46. }
  47. test(message_blob){
  48. OSCMessage msg("/foo");
  49. uint8_t b[] = {0, 1, 2, 3, 4};
  50. msg.add(b, 5);
  51. assertTrue(msg.isBlob(0));
  52. uint8_t blob[5];
  53. msg.getBlob(0, blob, 5);
  54. for (int i = 0; i < 5; i++){
  55. assertEqual(blob[i], b[i]);
  56. }
  57. //9 because it includes the 4 byte length
  58. assertEqual(msg.getDataLength(0), 9);
  59. }
  60. test(message_boolean){
  61. OSCMessage msg("/foo");
  62. msg.add(true);
  63. assertTrue(msg.isBoolean(0));
  64. assertEqual(msg.getBoolean(0), true);
  65. assertEqual(msg.getDataLength(0), 0);
  66. }
  67. test(mixed_message_type){
  68. OSCMessage msg("/foo");
  69. msg.add(true);
  70. msg.add(1.0f);
  71. msg.add(2);
  72. msg.add("test");
  73. assertEqual(msg.size(), 4);
  74. assertEqual(msg.getType(0), 'T');
  75. assertTrue(msg.isBoolean(0));
  76. assertFalse(msg.isBoolean(1));
  77. assertTrue(msg.isFloat(1));
  78. assertTrue(msg.isInt(2));
  79. assertTrue(msg.isString(3));
  80. assertEqual(msg.getInt(2), 2);
  81. assertEqual(msg.getInt(3), NULL);
  82. }
  83. void setup()
  84. {
  85. Serial.begin(9600);
  86. while(!Serial); // for the Arduino Leonardo/Micro only
  87. }
  88. void loop()
  89. {
  90. Test::run();
  91. }