test_term.c 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #include "test.h"
  2. static int test_term_stack()
  3. {
  4. TRACE(STR, "Test term, stack-allocated.");
  5. LSUP_Term term_s;
  6. LSUP_Term *term = &term_s;
  7. char *data = "http://hello.org";
  8. LSUP_term_init(
  9. term, LSUP_TERM_URI, data, NULL, NULL);
  10. EXPECT_STR_EQ(term->data, data);
  11. ASSERT(term->datatype == NULL,"Term datatype is not NULL!" );
  12. ASSERT(strlen(term->lang) == 0, "Term lang incorrect!");
  13. TRACE(STR, "freeing term.");
  14. LSUP_term_done(term);
  15. return 0;
  16. }
  17. static int test_term_heap()
  18. {
  19. char *data = "hello";
  20. char *datatype = "xsd:string";
  21. char *lang = "en-US";
  22. TRACE(STR, "Test term, heap-allocated.");
  23. LSUP_Term *term = LSUP_term_new(
  24. LSUP_TERM_LITERAL, data, datatype, lang);
  25. TRACE("Term data: %s", term->data);
  26. EXPECT_STR_EQ(term->data, data);
  27. EXPECT_STR_EQ(term->datatype, datatype);
  28. EXPECT_STR_EQ(term->lang, lang);
  29. LSUP_term_free(term);
  30. return 0;
  31. }
  32. static int test_term_serialize_deserialize()
  33. {
  34. LSUP_Term *uri = LSUP_term_new(
  35. LSUP_TERM_URI, "http://hello.org", NULL, NULL);
  36. LSUP_Term *lit = LSUP_term_new(
  37. LSUP_TERM_LITERAL, "hello", NULL, NULL);
  38. LSUP_Term *tlit = LSUP_term_new(
  39. LSUP_TERM_LITERAL, "hello", "xsd:string", NULL);
  40. LSUP_Term *tllit = LSUP_term_new(
  41. LSUP_TERM_LITERAL, "hello", "xsd:string", "en-US");
  42. LSUP_Buffer sterm_s;
  43. LSUP_Buffer *sterm = &sterm_s;
  44. LSUP_Term dsterm_s;
  45. LSUP_Term *dsterm = &dsterm_s;
  46. LSUP_term_serialize(uri, sterm);
  47. TRACE("%s", "Serialized URI: ");
  48. LSUP_buffer_print(sterm);
  49. TRACE("%s", "\n");
  50. LSUP_term_deserialize(sterm, dsterm);
  51. ASSERT(LSUP_term_equals(dsterm, uri), "URI serialization error!");
  52. LSUP_term_done(dsterm);
  53. LSUP_buffer_done(sterm);
  54. LSUP_term_free(uri);
  55. LSUP_term_serialize(lit, sterm);
  56. TRACE("%s", "Serialized literal: ");
  57. LSUP_buffer_print(sterm);
  58. TRACE("%s", "\n");
  59. LSUP_term_deserialize(sterm, dsterm);
  60. ASSERT(LSUP_term_equals(dsterm, lit), "lit serialization error!");
  61. LSUP_term_done(dsterm);
  62. LSUP_buffer_done(sterm);
  63. LSUP_term_free(lit);
  64. LSUP_term_serialize(tlit, sterm);
  65. TRACE("%s", "Serialized typed literal: ");
  66. LSUP_buffer_print(sterm);
  67. TRACE("%s", "\n");
  68. LSUP_term_deserialize(sterm, dsterm);
  69. ASSERT(LSUP_term_equals(dsterm, tlit), "tlit serialization error!");
  70. LSUP_term_done(dsterm);
  71. LSUP_buffer_done(sterm);
  72. LSUP_term_free(tlit);
  73. LSUP_term_serialize(tllit, sterm);
  74. TRACE("%s", "Serialized typed and language-tagged URI: ");
  75. LSUP_buffer_print(sterm);
  76. TRACE("%s", "\n");
  77. LSUP_term_deserialize(sterm, dsterm);
  78. ASSERT(LSUP_term_equals(dsterm, tllit), "URI serialization error!");
  79. LSUP_term_done(dsterm);
  80. LSUP_buffer_done(sterm);
  81. LSUP_term_free(tllit);
  82. return 0;
  83. }
  84. static int test_term_to_key()
  85. {
  86. LSUP_Term *uri = LSUP_term_new(
  87. LSUP_TERM_URI, "http://hello.org", NULL, NULL);
  88. LSUP_Term *lit = LSUP_term_new(
  89. LSUP_TERM_LITERAL, "hello", NULL, NULL);
  90. LSUP_Term *tlit = LSUP_term_new(
  91. LSUP_TERM_LITERAL, "hello", "xsd:string", NULL);
  92. LSUP_Term *tllit1 = LSUP_term_new(
  93. LSUP_TERM_LITERAL, "hello", "xsd:string", "en-US");
  94. LSUP_Term *tllit2 = LSUP_term_new(
  95. LSUP_TERM_LITERAL, "hello", "xsd:string", "en-GB");
  96. LSUP_Key uri_key = LSUP_term_to_key(uri);
  97. LSUP_Key lit_key = LSUP_term_to_key(lit);
  98. LSUP_Key tlit_key = LSUP_term_to_key(tlit);
  99. LSUP_Key tllit1_key = LSUP_term_to_key(tllit1);
  100. LSUP_Key tllit2_key = LSUP_term_to_key(tllit2);
  101. ASSERT(uri_key != lit_key, "URI key conflict!");
  102. ASSERT(lit_key != tlit_key, "URI key conflict!");
  103. ASSERT(lit_key != tllit1_key, "URI key conflict!");
  104. ASSERT(tlit_key != tllit1_key, "URI key conflict!");
  105. ASSERT(tllit1_key != tllit2_key, "URI key conflict!");
  106. LSUP_term_free(uri);
  107. LSUP_term_free(lit);
  108. LSUP_term_free(tlit);
  109. LSUP_term_free(tllit1);
  110. LSUP_term_free(tllit2);
  111. return 0;
  112. }
  113. int term_tests() {
  114. RUN(test_term_stack);
  115. RUN(test_term_heap);
  116. RUN(test_term_serialize_deserialize);
  117. RUN(test_term_to_key);
  118. return 0;
  119. }