test_term.c 4.1 KB

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