ObjectTest.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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/object.h>
  13. #include <uecho/profile.h>
  14. BOOST_AUTO_TEST_CASE(ObjectNew)
  15. {
  16. uEchoObject* obj = uecho_object_new();
  17. BOOST_CHECK(obj);
  18. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)uEchoObjectCodeMin);
  19. BOOST_CHECK(!uecho_object_getparentnode(obj));
  20. uecho_object_delete(obj);
  21. }
  22. BOOST_AUTO_TEST_CASE(ObjectSetCode)
  23. {
  24. uEchoObject* obj = uecho_object_new();
  25. BOOST_CHECK(obj);
  26. uecho_object_setcode(obj, uEchoObjectCodeMin);
  27. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)uEchoObjectCodeMin);
  28. uecho_object_setcode(obj, (uEchoObjectCodeMin + 1));
  29. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)(uEchoObjectCodeMin + 1));
  30. uecho_object_setcode(obj, (uEchoObjectCodeMax / 2));
  31. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)(uEchoObjectCodeMax / 2));
  32. uecho_object_setcode(obj, uEchoObjectCodeMax);
  33. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)uEchoObjectCodeMax);
  34. uecho_object_setcode(obj, uEchoNodeProfileObject);
  35. BOOST_CHECK_EQUAL(uecho_object_getcode(obj), (uEchoObjectCode)uEchoNodeProfileObject);
  36. uecho_object_delete(obj);
  37. }
  38. BOOST_AUTO_TEST_CASE(ObjectSetCodes)
  39. {
  40. uEchoObject* obj = uecho_object_new();
  41. BOOST_CHECK(obj);
  42. srand((int)time(NULL));
  43. for (int n = 0; n < 10; n++) {
  44. byte code;
  45. code = rand() % 255;
  46. uecho_object_setgroupcode(obj, code);
  47. BOOST_CHECK_EQUAL(uecho_object_getgroupcode(obj), code);
  48. code = rand() % 255;
  49. uecho_object_setclasscode(obj, code);
  50. BOOST_CHECK_EQUAL(uecho_object_getclasscode(obj), code);
  51. code = rand() % 255;
  52. uecho_object_setinstancecode(obj, code);
  53. BOOST_CHECK_EQUAL(uecho_object_getinstancecode(obj), code);
  54. }
  55. uecho_object_delete(obj);
  56. }
  57. BOOST_AUTO_TEST_CASE(ObjectSetProperty)
  58. {
  59. uEchoObject* obj = uecho_object_new();
  60. BOOST_CHECK(obj);
  61. uecho_object_clearproperties(obj);
  62. BOOST_CHECK_EQUAL(uecho_object_getpropertycount(obj), 0);
  63. for (size_t n = uEchoPropertyCodeMin; n <= uEchoPropertyCodeMax; n++) {
  64. byte* prop_data = (byte*)malloc(n);
  65. BOOST_CHECK(prop_data);
  66. BOOST_CHECK(uecho_object_setpropertydata(obj, n, prop_data, n));
  67. free(prop_data);
  68. }
  69. BOOST_CHECK_EQUAL(uecho_object_getpropertycount(obj), (uEchoPropertyCodeMax - uEchoPropertyCodeMin + 1));
  70. for (size_t n = uEchoPropertyCodeMin; n <= uEchoPropertyCodeMax; n++) {
  71. uEchoProperty* prop = uecho_object_getproperty(obj, n);
  72. BOOST_CHECK(prop);
  73. BOOST_CHECK_EQUAL(uecho_property_getcode(prop), n);
  74. BOOST_CHECK_EQUAL(uecho_property_getdatasize(prop), n);
  75. }
  76. BOOST_CHECK_EQUAL(uecho_object_getpropertycount(obj), (uEchoPropertyCodeMax - uEchoPropertyCodeMin + 1));
  77. uecho_object_delete(obj);
  78. }
  79. BOOST_AUTO_TEST_CASE(ObjectMandatoryProperties)
  80. {
  81. uEchoObject* obj = uecho_object_new();
  82. BOOST_CHECK(obj);
  83. uecho_object_delete(obj);
  84. }