NodeTest.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /******************************************************************
  2. *
  3. * uEcho for C
  4. *
  5. * Copyright (C) Satoshi Konno 2015
  6. *
  7. * This is licensed under BSD-style license, see file COPYING.
  8. *
  9. ******************************************************************/
  10. #include <boost/test/unit_test.hpp>
  11. #include <uecho/_node.h>
  12. #include <uecho/profile.h>
  13. BOOST_AUTO_TEST_CASE(NodeDefault)
  14. {
  15. uEchoNode* node = uecho_node_new();
  16. BOOST_CHECK(node);
  17. BOOST_CHECK_EQUAL(uecho_node_getobjectcount(node), 1);
  18. BOOST_CHECK(uecho_node_hasobjectbycode(node, uEchoNodeProfileObject));
  19. uecho_node_delete(node);
  20. }
  21. BOOST_AUTO_TEST_CASE(NodeAddress)
  22. {
  23. const char* test_addr = "192.168.0.1";
  24. uEchoNode* node = uecho_node_new();
  25. BOOST_CHECK(node);
  26. BOOST_CHECK_EQUAL(uecho_node_isaddress(node, test_addr), false);
  27. uecho_node_setaddress(node, test_addr);
  28. BOOST_CHECK_EQUAL(uecho_node_isaddress(node, test_addr), true);
  29. uecho_node_delete(node);
  30. }
  31. BOOST_AUTO_TEST_CASE(NodeTID)
  32. {
  33. uEchoNode* node = uecho_node_new();
  34. uEchoTID first_tid = uecho_node_getnexttid(node);
  35. BOOST_CHECK(uEchoTidMin <= first_tid);
  36. BOOST_CHECK(first_tid <= uEchoTidMax);
  37. uEchoTID prev_tid = first_tid;
  38. for (int n = 0; n < 100; n++) {
  39. uEchoTID tid = uecho_node_getnexttid(node);
  40. BOOST_CHECK(uEchoTidMin <= tid);
  41. BOOST_CHECK(prev_tid < tid);
  42. BOOST_CHECK(tid <= uEchoTidMax);
  43. }
  44. uecho_node_delete(node);
  45. }
  46. BOOST_AUTO_TEST_CASE(NodeSetObjects)
  47. {
  48. uEchoNode* node = uecho_node_new();
  49. BOOST_CHECK(node);
  50. const int u_echo_test_object_code_max = uEchoObjectCodeMax % 100;
  51. uecho_node_clear(node);
  52. BOOST_CHECK_EQUAL(uecho_node_getobjectcount(node), 0);
  53. for (size_t n = uEchoObjectCodeMin; n <= u_echo_test_object_code_max; n++) {
  54. uecho_node_setobject(node, (uEchoObjectCode)n);
  55. }
  56. BOOST_CHECK_EQUAL(uecho_node_getobjectcount(node), (u_echo_test_object_code_max - uEchoObjectCodeMin + 1));
  57. for (size_t n = uEchoObjectCodeMin; n <= u_echo_test_object_code_max; n++) {
  58. uEchoObject* obj = uecho_node_getobjectbycode(node, (uEchoObjectCode)n);
  59. BOOST_CHECK(obj);
  60. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), n);
  61. BOOST_CHECK_EQUAL(uecho_object_getparentnode(obj), node);
  62. }
  63. BOOST_CHECK_EQUAL(uecho_node_getobjectcount(node), (u_echo_test_object_code_max - uEchoObjectCodeMin + 1));
  64. uecho_node_delete(node);
  65. }
  66. BOOST_AUTO_TEST_CASE(NodeProfileClass)
  67. {
  68. uEchoNode* node = uecho_node_new();
  69. BOOST_CHECK(node);
  70. BOOST_CHECK(uecho_node_setobject(node, 0x001101));
  71. BOOST_CHECK(uecho_node_setobject(node, 0x001102));
  72. BOOST_CHECK(uecho_node_setobject(node, 0x001201));
  73. BOOST_CHECK(uecho_node_hasobjectbycode(node, 0x001101));
  74. BOOST_CHECK(uecho_node_hasobjectbycode(node, 0x001102));
  75. BOOST_CHECK(uecho_node_hasobjectbycode(node, 0x001201));
  76. uEchoObject* obj = uecho_node_getnodeprofileclassobject(node);
  77. BOOST_CHECK(obj);
  78. BOOST_CHECK_EQUAL(uecho_nodeprofile_getclasscount(obj), 3);
  79. BOOST_CHECK_EQUAL(uecho_nodeprofile_getinstancecount(obj), 3);
  80. // Class List
  81. BOOST_CHECK_EQUAL(uecho_object_getpropertydatasize(obj, uEchoNodeProfileClassSelfNodeClassListS), ((2 * 2) + 1));
  82. byte cls_list[] = { 0x02, 0x00, 0x11, 0x00, 0x12 };
  83. byte* node_cls_list = uecho_nodeprofile_getclasslist(obj);
  84. BOOST_CHECK(node_cls_list);
  85. for (int n = 0; n < sizeof(cls_list); n++) {
  86. BOOST_CHECK_EQUAL(cls_list[n], node_cls_list[n]);
  87. }
  88. // Instance List
  89. BOOST_CHECK_EQUAL(uecho_object_getpropertydatasize(obj, uEchoNodeProfileClassSelfNodeInstanceListS), ((3 * 3) + 1));
  90. byte ins_list[] = { 0x03, 0x00, 0x11, 0x01, 0x00, 0x11, 0x02, 0x00, 0x12, 0x01 };
  91. byte* node_ins_list = uecho_nodeprofile_getinstancelist(obj);
  92. BOOST_CHECK(node_ins_list);
  93. for (int n = 0; n < sizeof(ins_list); n++) {
  94. BOOST_CHECK_EQUAL(ins_list[n], node_ins_list[n]);
  95. }
  96. // Notification Instance List
  97. node_ins_list = uecho_nodeprofile_getnotificationinstancelist(obj);
  98. BOOST_CHECK(node_ins_list);
  99. for (int n = 0; n < sizeof(ins_list); n++) {
  100. BOOST_CHECK_EQUAL(ins_list[n], node_ins_list[n]);
  101. }
  102. uecho_node_delete(node);
  103. }