#ifndef _TEST_ASSETS_TRIPLES_H #define _TEST_ASSETS_TRIPLES_H #include "lsup/term.h" #define NUM_TRP 10 /* * This results in the following set: * . * . * . * . * "String 1" . * "String 1"^^ . * "String 1"@es-ES . * "String 1"^^ . */ LSUP_Triple **create_triples() { LSUP_nsmap_add ("ns1", "urn:s:"); LSUP_nsmap_add ("ns2", "urn:p:"); LSUP_Term *s0 = LSUP_iriref_new ("urn:s:0"), *s5 = LSUP_iriref_new_ns ("ns1:0"), *p2 = LSUP_iriref_new ("urn:p:2"), *p4 = LSUP_iriref_new_ns ("ns2:2"), *o5 = LSUP_literal_new ( "String 1", LSUP_iriref_new ("urn:mydatatype:string")); LSUP_Triple **trp = calloc (sizeof (*trp), NUM_TRP + 1); trp[0] = LSUP_triple_new ( s0, LSUP_iriref_new ("urn:p:0"), LSUP_iriref_new ("urn:o:0")); trp[1] = LSUP_triple_new ( LSUP_iriref_new ("urn:s:1"), LSUP_iriref_new ("urn:p:1"), LSUP_iriref_new ("urn:o:1")); trp[2] = LSUP_triple_new ( LSUP_iriref_new ("urn:s:2"), p2, LSUP_iriref_new ("urn:o:2")); trp[3] = LSUP_triple_new ( LSUP_iriref_new ("urn:s:0"), LSUP_iriref_new ("urn:p:1"), LSUP_iriref_new ("urn:o:2")); trp[4] = LSUP_triple_new ( LSUP_iriref_new ("urn:s:0"), p4, LSUP_literal_new ("String 1", NULL)); trp[5] = LSUP_triple_new (s5, LSUP_iriref_new ("urn:p:5"), o5); trp[6] = LSUP_triple_new ( LSUP_iriref_new ("urn:s:1"), LSUP_iriref_new ("urn:p:6"), LSUP_lt_literal_new ("String 1", "es-ES")); // Unique triple from reused pointers. Do not double-free. trp[7] = LSUP_triple_new (s0, p2, o5); // Duplicate of trp[7]. Do not double-free. trp[8] = LSUP_triple_new (s0, p2, o5); // Duplicate of trp[7] from different reused terms but semantically // identical. Do not double-free. trp[9] = LSUP_triple_new (s5, p4, o5); return trp; } void free_triples (LSUP_Triple **trp) { // Last three triples are second pointers. for (int i=0; i < NUM_TRP - 3; i++) LSUP_triple_free (trp[i]); free (trp[7]); free (trp[8]); free (trp[9]); free(trp); } #endif /* _TEST_ASSETS_TRIPLES_H */