triples.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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_Term
  11. *s0 = LSUP_iriref_new ("urn:s:0", NULL),
  12. *s5 = LSUP_iriref_new ("ns1:0", nsm),
  13. *p2 = LSUP_iriref_new ("urn:p:2", NULL),
  14. *p4 = LSUP_iriref_new ("ns2:2", nsm),
  15. *o5 = LSUP_literal_new (
  16. "String 1",
  17. LSUP_iriref_new ("urn:mydatatype:string", NULL));
  18. LSUP_Triple **trp = calloc (sizeof (LSUP_Triple), NUM_TRP + 1);
  19. trp[0] = LSUP_triple_new (
  20. s0,
  21. LSUP_iriref_new ("urn:p:0", NULL),
  22. LSUP_iriref_new ("urn:o:0", NULL));
  23. trp[1] = LSUP_triple_new (
  24. LSUP_iriref_new ("urn:s:1", NULL),
  25. LSUP_iriref_new ("urn:p:1", NULL),
  26. LSUP_iriref_new ("urn:o:1", NULL));
  27. trp[2] = LSUP_triple_new (
  28. LSUP_iriref_new ("urn:s:2", NULL),
  29. p2,
  30. LSUP_iriref_new ("urn:o:2", NULL));
  31. trp[3] = LSUP_triple_new (
  32. LSUP_iriref_new ("urn:s:0", NULL),
  33. LSUP_iriref_new ("urn:p:1", NULL),
  34. LSUP_iriref_new ("urn:o:2", NULL));
  35. trp[4] = LSUP_triple_new (
  36. LSUP_iriref_new ("urn:s:0", NULL),
  37. p4,
  38. LSUP_literal_new ("String 1", NULL));
  39. trp[5] = LSUP_triple_new (s5, LSUP_iriref_new ("urn:p:5", NULL), o5);
  40. trp[6] = LSUP_triple_new (
  41. LSUP_iriref_new ("urn:s:1", NULL),
  42. LSUP_iriref_new ("urn:p:6", NULL),
  43. LSUP_lt_literal_new ("String 1", "es-ES"));
  44. // Unique triple from reused pointers. Do not double-free.
  45. trp[7] = LSUP_triple_new (s0, p2, o5);
  46. // Duplicate of trp[7]. Do not double-free.
  47. trp[8] = LSUP_triple_new (s0, p2, o5);
  48. // Duplicate of trp[7] from different terms but semantically
  49. // identical. Do not double-free.
  50. trp[9] = LSUP_triple_new (s5, p4, o5);
  51. return trp;
  52. }
  53. void free_triples (LSUP_Triple **trp)
  54. {
  55. LSUP_nsmap_free (LSUP_iriref_nsm (trp[4]->p));
  56. // Last three triples are second pointers.
  57. for (int i=0; i < NUM_TRP - 3; i++)
  58. LSUP_triple_free (trp[i]);
  59. free (trp[7]);
  60. free (trp[8]);
  61. free (trp[9]);
  62. free(trp);
  63. }
  64. #endif /* _TEST_ASSETS_H */