test_term.c 3.7 KB

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