|
@@ -62,8 +62,55 @@ static int test_triple_store()
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+ *
|
|
|
+ * Insert the same triple set twice with different contexts.
|
|
|
+ */
|
|
|
static int test_quad_store()
|
|
|
{
|
|
|
+ rmdb();
|
|
|
+ EXPECT_PASS(LSUP_store_setup(&path));
|
|
|
+
|
|
|
+ LSUP_MDBStore *store;
|
|
|
+ store = LSUP_store_new(path, NULL);
|
|
|
+ ASSERT(store != NULL, "Error initializing store!");
|
|
|
+
|
|
|
+ LSUP_Triple *trp = create_triples();
|
|
|
+ LSUP_SerTerm sterms[NUM_TRP][3];
|
|
|
+ LSUP_SerTriple ser_trp[NUM_TRP];
|
|
|
+
|
|
|
+ for (int i = 0; i < NUM_TRP; i++) {
|
|
|
+ ser_trp[i].s = sterms[i];
|
|
|
+ ser_trp[i].p = sterms[i] + 1;
|
|
|
+ ser_trp[i].o = sterms[i] + 2;
|
|
|
+ for (int j = 0; j < 3; j++) {
|
|
|
+ LSUP_term_serialize(
|
|
|
+ LSUP_triple_term_by_pos(trp + i, j),
|
|
|
+ LSUP_ser_triple_term_by_pos(ser_trp + i, j));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ LSUP_Term *ctx1 = LSUP_uri_new("urn:c:1");
|
|
|
+ LSUP_SerTerm sc1_s;
|
|
|
+ LSUP_term_serialize(ctx1, &sc1_s);
|
|
|
+
|
|
|
+ EXPECT_PASS(LSUP_store_add(store, &sc1_s, ser_trp, NUM_TRP));
|
|
|
+
|
|
|
+ LSUP_Term *ctx2 = LSUP_uri_new("urn:c:2");
|
|
|
+ LSUP_SerTerm sc2_s;
|
|
|
+ LSUP_term_serialize(ctx2, &sc2_s);
|
|
|
+
|
|
|
+ EXPECT_PASS(LSUP_store_add(store, &sc2_s, ser_trp, NUM_TRP));
|
|
|
+
|
|
|
+ for (int i = 0; i < NUM_TRP; i++) {
|
|
|
+ LSUP_buffer_done(ser_trp[i].s);
|
|
|
+ LSUP_buffer_done(ser_trp[i].p);
|
|
|
+ LSUP_buffer_done(ser_trp[i].o);
|
|
|
+ }
|
|
|
+
|
|
|
+ LSUP_store_free(store);
|
|
|
+ free_triples(trp);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|