test_term.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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. log_info ("Test term, heap-allocated.");
  8. LSUP_Term *term = LSUP_term_new (LSUP_TERM_LITERAL, data, datatype, lang);
  9. log_info ("Term data: %s", term->data);
  10. EXPECT_STR_EQ (term->data, data);
  11. EXPECT_STR_EQ (term->datatype, datatype);
  12. EXPECT_STR_EQ (term->lang, lang);
  13. log_info ("Reset term.");
  14. char *uri_data = "urn:id:2144564356";
  15. LSUP_term_init (term, LSUP_TERM_URI, uri_data, NULL, NULL);
  16. EXPECT_STR_EQ (term->data, uri_data);
  17. LSUP_term_free (term);
  18. return 0;
  19. }
  20. static int test_term_serialize_deserialize()
  21. {
  22. LSUP_Term *uri = LSUP_uri_new ("http://hello.org");
  23. LSUP_Term *lit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", NULL, NULL);
  24. LSUP_Term *tlit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", "xsd:string", NULL);
  25. LSUP_Term *tllit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", "xsd:string", "en-US");
  26. LSUP_Buffer *sterm = BUF_DUMMY;
  27. LSUP_Term *dsterm = TERM_DUMMY;
  28. LSUP_term_serialize (uri, sterm);
  29. //log_info ("%s", "Serialized URI: ");
  30. //LSUP_buffer_print (sterm);
  31. //log_info ("%s", "\n");
  32. LSUP_term_deserialize (sterm, dsterm);
  33. ASSERT (LSUP_term_equals (dsterm, uri), "URI serialization error!");
  34. LSUP_term_free (uri);
  35. LSUP_term_serialize (lit, sterm);
  36. //log_info ("%s", "Serialized literal: ");
  37. //LSUP_buffer_print (sterm);
  38. //log_info ("%s", "\n");
  39. LSUP_term_deserialize (sterm, dsterm);
  40. ASSERT (LSUP_term_equals (dsterm, lit), "lit serialization error!");
  41. LSUP_term_free (lit);
  42. LSUP_term_serialize (tlit, sterm);
  43. //log_info ("%s", "Serialized typed literal: ");
  44. //LSUP_buffer_print (sterm);
  45. //log_info ("%s", "\n");
  46. LSUP_term_deserialize (sterm, dsterm);
  47. ASSERT (LSUP_term_equals (dsterm, tlit), "tlit serialization error!");
  48. LSUP_term_free (tlit);
  49. LSUP_term_serialize (tllit, sterm);
  50. //log_info ("%s", "Serialized typed and language-tagged URI: ");
  51. //LSUP_buffer_print (sterm);
  52. //log_info ("%s", "\n");
  53. LSUP_term_deserialize (sterm, dsterm);
  54. ASSERT (LSUP_term_equals (dsterm, tllit), "URI serialization error!");
  55. LSUP_term_free (tllit);
  56. LSUP_term_free (dsterm);
  57. LSUP_buffer_free (sterm);
  58. return 0;
  59. }
  60. static int test_term_to_key()
  61. {
  62. LSUP_Term *uri = LSUP_uri_new ("http://hello.org");
  63. LSUP_Term *lit = LSUP_term_new (LSUP_TERM_LITERAL, "hello", NULL, NULL);
  64. LSUP_Term *tlit = LSUP_term_new(
  65. LSUP_TERM_LITERAL, "hello", DEFAULT_DTYPE, NULL);
  66. LSUP_Term *tllit1 = LSUP_term_new(
  67. LSUP_TERM_LITERAL, "hello", NULL, "en-US");
  68. LSUP_Term *tllit2 = LSUP_term_new(
  69. LSUP_TERM_LITERAL, "hello",
  70. "http://www.w3.org/2001/XMLSchema#string", "en-GB");
  71. LSUP_Key uri_key = LSUP_term_hash (uri);
  72. LSUP_Key lit_key = LSUP_term_hash (lit);
  73. LSUP_Key tlit_key = LSUP_term_hash (tlit);
  74. LSUP_Key tllit1_key = LSUP_term_hash (tllit1);
  75. LSUP_Key tllit2_key = LSUP_term_hash (tllit2);
  76. ASSERT (uri_key != lit_key, "URI key conflict!");
  77. ASSERT (lit_key == tlit_key, "URI keys differ!");
  78. ASSERT (lit_key != tllit1_key, "URI key conflict!");
  79. ASSERT (tlit_key != tllit1_key, "URI key conflict!");
  80. ASSERT (tllit1_key != tllit2_key, "URI key conflict!");
  81. LSUP_term_free (uri);
  82. LSUP_term_free (lit);
  83. LSUP_term_free (tlit);
  84. LSUP_term_free (tllit1);
  85. LSUP_term_free (tllit2);
  86. return 0;
  87. }
  88. int term_tests() {
  89. RUN (test_term_new);
  90. RUN (test_term_serialize_deserialize);
  91. RUN (test_term_to_key);
  92. return 0;
  93. }