triples.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #ifndef _TEST_ASSETS_H
  2. #define _TEST_ASSETS_H
  3. #include "term.h"
  4. #define NUM_TRP 10
  5. LSUP_Triple *create_triples()
  6. {
  7. LSUP_NSMap *nsm = LSUP_nsmap_new();
  8. LSUP_nsmap_add (nsm, "ns1", "urn:s:");
  9. LSUP_nsmap_add (nsm, "ns2", "urn:p:");
  10. LSUP_Triple *trp;
  11. // Leave 1 spare NULL as a sentinel
  12. trp = calloc (NUM_TRP + 1, sizeof (LSUP_Triple));
  13. if (!trp) abort();
  14. trp[0].s = LSUP_iriref_new("urn:s:0", NULL);
  15. trp[0].p = LSUP_iriref_new("urn:p:0", NULL);
  16. trp[0].o = LSUP_iriref_new("urn:o:0", NULL);
  17. trp[1].s = LSUP_iriref_new("urn:s:1", NULL);
  18. trp[1].p = LSUP_iriref_new("urn:p:1", NULL);
  19. trp[1].o = LSUP_iriref_new("urn:o:1", NULL);
  20. trp[2].s = LSUP_iriref_new("urn:s:2", NULL);
  21. trp[2].p = LSUP_iriref_new("urn:p:2", NULL);
  22. trp[2].o = LSUP_iriref_new("urn:o:2", NULL);
  23. trp[3].s = LSUP_iriref_new("urn:s:0", NULL);
  24. trp[3].p = LSUP_iriref_new("urn:p:1", NULL);
  25. trp[3].o = LSUP_iriref_new("urn:o:2", NULL);
  26. trp[4].s = LSUP_iriref_new("urn:s:0", NULL);
  27. trp[4].p = LSUP_iriref_new("ns2:2", nsm);
  28. trp[4].o = LSUP_literal_new ("String 1", NULL);
  29. trp[5].s = LSUP_iriref_new("ns1:0", nsm);
  30. trp[5].p = LSUP_iriref_new("urn:p:5", NULL);
  31. trp[5].o = LSUP_literal_new(
  32. "String 1", LSUP_iriref_new ("urn:mydatatype:string", NULL));
  33. trp[6].s = LSUP_iriref_new("urn:s:1", NULL);
  34. trp[6].p = LSUP_iriref_new("urn:p:6", NULL);
  35. trp[6].o = LSUP_lt_literal_new("String 1", "es-ES");
  36. // Unique triple from reused pointers. Do not double-free.
  37. trp[7].s = trp[0].s; // <urn:s:0>
  38. trp[7].p = trp[2].p; // <urn:p:2>
  39. trp[7].o = trp[5].o; // "String 1"^^xsd:string
  40. // Duplicate of trp[7]. Do not double-free.
  41. trp[8].s = trp[0].s;
  42. trp[8].p = trp[2].p;
  43. trp[8].o = trp[5].o;
  44. // Duplicate of trp[7] from different term type but semantically identical.
  45. // Do not double-free.
  46. trp[9].s = trp[5].s;
  47. trp[9].p = trp[4].p;
  48. trp[9].o = trp[5].o;
  49. return trp;
  50. }
  51. void free_triples (LSUP_Triple *trp)
  52. {
  53. LSUP_nsmap_free (LSUP_iriref_nsm (trp[4].p));
  54. // Last three triples are second pointers.
  55. for (int i=0; i < NUM_TRP - 3; i++) {
  56. LSUP_term_free (trp[i].s);
  57. LSUP_term_free (trp[i].p);
  58. LSUP_term_free (trp[i].o);
  59. }
  60. free (trp);
  61. }
  62. #endif /* _TEST_ASSETS_H */