test_index.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include "test.h"
  2. static int test_index_add()
  3. {
  4. LSUP_Term *uri = LSUP_term_new(
  5. LSUP_TERM_URI, "http://hello.org", NULL, NULL);
  6. LSUP_Term *lit = LSUP_term_new(
  7. LSUP_TERM_LITERAL, "hello", NULL, NULL);
  8. LSUP_Term *tlit = LSUP_term_new(
  9. LSUP_TERM_LITERAL, "hello", "xsd:string", NULL);
  10. LSUP_Term *tllit1 = LSUP_term_new(
  11. LSUP_TERM_LITERAL, "hello", "xsd:string", "en-US");
  12. LSUP_Term *tllit2 = LSUP_term_new(
  13. LSUP_TERM_LITERAL, "hello", "xsd:string", "en-GB");
  14. // Make capacity lower intentionally, to test expansion.
  15. LSUP_Index *idx = LSUP_index_new(3);
  16. LSUP_Key key;
  17. LSUP_SerTerm *s_uri = malloc(sizeof(LSUP_SerTerm));
  18. LSUP_term_serialize(uri, s_uri);
  19. LSUP_index_add(idx, s_uri);
  20. key = LSUP_term_to_key(uri);
  21. ASSERT(
  22. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_uri),
  23. "URI not found!");
  24. LSUP_SerTerm *s_lit = malloc(sizeof(LSUP_SerTerm));
  25. LSUP_term_serialize(lit, s_lit);
  26. LSUP_index_add(idx, s_lit);
  27. key = LSUP_term_to_key(lit);
  28. ASSERT(
  29. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_lit),
  30. "Literal not found!");
  31. LSUP_SerTerm *s_tlit = malloc(sizeof(LSUP_SerTerm));
  32. LSUP_term_serialize(tlit, s_tlit);
  33. LSUP_index_add(idx, s_tlit);
  34. key = LSUP_term_to_key(tlit);
  35. ASSERT(
  36. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_tlit),
  37. "Typed literal not found!");
  38. LSUP_SerTerm *s_tllit1 = malloc(sizeof(LSUP_SerTerm));
  39. LSUP_term_serialize(tllit1, s_tllit1);
  40. LSUP_index_add(idx, s_tllit1);
  41. key = LSUP_term_to_key(tllit1);
  42. ASSERT(
  43. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_tllit1),
  44. "US lang literal not found!");
  45. LSUP_SerTerm *s_tllit2 = malloc(sizeof(LSUP_SerTerm));
  46. LSUP_term_serialize(tllit2, s_tllit2);
  47. LSUP_index_add(idx, s_tllit2);
  48. key = LSUP_term_to_key(tllit2);
  49. ASSERT(
  50. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_tllit2),
  51. "GB lang literal not found!");
  52. LSUP_term_free(uri);
  53. LSUP_term_free(lit);
  54. LSUP_term_free(tlit);
  55. LSUP_term_free(tllit1);
  56. LSUP_term_free(tllit2);
  57. LSUP_index_free(idx);
  58. LSUP_buffer_done(s_uri);
  59. free(s_uri);
  60. LSUP_buffer_done(s_lit);
  61. free(s_lit);
  62. LSUP_buffer_done(s_tlit);
  63. free(s_tlit);
  64. LSUP_buffer_done(s_tllit1);
  65. free(s_tllit1);
  66. LSUP_buffer_done(s_tllit2);
  67. free(s_tllit2);
  68. return 0;
  69. }
  70. int test_index_add_pair()
  71. {
  72. LSUP_Term *uri = LSUP_term_new(
  73. LSUP_TERM_URI, "http://hello.org", NULL, NULL);
  74. LSUP_Index *idx = LSUP_index_new(1);
  75. LSUP_SerTerm *s_uri = malloc(sizeof(LSUP_SerTerm));
  76. LSUP_term_serialize(uri, s_uri);
  77. LSUP_index_add(idx, s_uri);
  78. LSUP_Key key;
  79. key = LSUP_term_to_key(uri);
  80. LSUP_index_add_pair(idx, key, s_uri);
  81. ASSERT(
  82. LSUP_buffer_eq(LSUP_index_lookup(idx, key), s_uri),
  83. "URI not found!");
  84. LSUP_index_free(idx);
  85. LSUP_term_free(uri);
  86. LSUP_buffer_done(s_uri);
  87. free(s_uri);
  88. return 0;
  89. }
  90. int index_tests() {
  91. RUN(test_index_add);
  92. RUN(test_index_add_pair);
  93. return 0;
  94. }