triples.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef _TEST_ASSETS_TRIPLES_H
  2. #define _TEST_ASSETS_TRIPLES_H
  3. #include "lsup/term.h"
  4. #define NUM_TRP 10
  5. /*
  6. * This results in the following set:
  7. * <urn:s:0> <urn:p:0> <urn:o:0> .
  8. * <urn:s:1> <urn:p:1> <urn:o:1> .
  9. * <urn:s:2> <urn:p:2> <urn:o:2> .
  10. * <urn:s:0> <urn:p:1> <urn:o:2> .
  11. * <urn:s:0> <urn:p:2> "String 1" .
  12. * <urn:s:0> <urn:p:5> "String 1"^^<urn:mydatatype:string> .
  13. * <urn:s:1> <urn:p:6> "String 1"@es-ES .
  14. * <urn:s:0> <urn:p:2> "String 1"^^<urn:mydatatype:string> .
  15. */
  16. LSUP_Triple **create_triples()
  17. {
  18. LSUP_nsmap_add ("ns1", "urn:s:");
  19. LSUP_nsmap_add ("ns2", "urn:p:");
  20. LSUP_Term
  21. *s0 = LSUP_iriref_new ("urn:s:0"),
  22. *s5 = LSUP_iriref_new_ns ("ns1:0"),
  23. *p2 = LSUP_iriref_new ("urn:p:2"),
  24. *p4 = LSUP_iriref_new_ns ("ns2:2"),
  25. *o5 = LSUP_literal_new (
  26. "String 1",
  27. LSUP_iriref_new ("urn:mydatatype:string"));
  28. LSUP_Triple **trp = calloc (sizeof (*trp), NUM_TRP + 1);
  29. trp[0] = LSUP_triple_new (
  30. s0,
  31. LSUP_iriref_new ("urn:p:0"),
  32. LSUP_iriref_new ("urn:o:0"));
  33. trp[1] = LSUP_triple_new (
  34. LSUP_iriref_new ("urn:s:1"),
  35. LSUP_iriref_new ("urn:p:1"),
  36. LSUP_iriref_new ("urn:o:1"));
  37. trp[2] = LSUP_triple_new (
  38. LSUP_iriref_new ("urn:s:2"),
  39. p2,
  40. LSUP_iriref_new ("urn:o:2"));
  41. trp[3] = LSUP_triple_new (
  42. LSUP_iriref_new ("urn:s:0"),
  43. LSUP_iriref_new ("urn:p:1"),
  44. LSUP_iriref_new ("urn:o:2"));
  45. trp[4] = LSUP_triple_new (
  46. LSUP_iriref_new ("urn:s:0"),
  47. p4,
  48. LSUP_literal_new ("String 1", NULL));
  49. trp[5] = LSUP_triple_new (s5, LSUP_iriref_new ("urn:p:5"), o5);
  50. trp[6] = LSUP_triple_new (
  51. LSUP_iriref_new ("urn:s:1"),
  52. LSUP_iriref_new ("urn:p:6"),
  53. LSUP_lt_literal_new ("String 1", "es-ES"));
  54. // Unique triple from reused pointers. Do not double-free.
  55. trp[7] = LSUP_triple_new (s0, p2, o5);
  56. // Duplicate of trp[7]. Do not double-free.
  57. trp[8] = LSUP_triple_new (s0, p2, o5);
  58. // Duplicate of trp[7] from different reused terms but semantically
  59. // identical. Do not double-free.
  60. trp[9] = LSUP_triple_new (s5, p4, o5);
  61. return trp;
  62. }
  63. void free_triples (LSUP_Triple **trp)
  64. {
  65. // Last three triples are second pointers.
  66. for (int i=0; i < NUM_TRP - 3; i++)
  67. LSUP_triple_free (trp[i]);
  68. free (trp[7]);
  69. free (trp[8]);
  70. free (trp[9]);
  71. free(trp);
  72. }
  73. #endif /* _TEST_ASSETS_TRIPLES_H */