|
@@ -25,14 +25,14 @@ static void rmdb() {
|
|
|
static int test_triple_store()
|
|
|
{
|
|
|
rmdb();
|
|
|
- EXPECT_PASS(LSUP_store_setup(&path));
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_setup(&path));
|
|
|
|
|
|
LSUP_MDBStore *store;
|
|
|
- store = LSUP_store_new(path, NULL);
|
|
|
+ LSUP_mdbstore_new(path, NULL, &store);
|
|
|
ASSERT(store != NULL, "Error initializing store!");
|
|
|
|
|
|
LSUP_Triple *trp = create_triples();
|
|
|
- LSUP_SerTerm sterms[NUM_TRP][3];
|
|
|
+ LSUP_Buffer sterms[NUM_TRP][3];
|
|
|
LSUP_SerTriple ser_trp[NUM_TRP];
|
|
|
|
|
|
for (int i = 0; i < NUM_TRP; i++) {
|
|
@@ -41,32 +41,52 @@ static int test_triple_store()
|
|
|
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_triple_pos(trp + i, j),
|
|
|
+ LSUP_striple_pos(ser_trp + i, j));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
- EXPECT_PASS(LSUP_store_add(store, NULL, ser_trp, NUM_TRP));
|
|
|
- EXPECT_INT_EQ(LSUP_store_size(store), 8);
|
|
|
+ size_t ins;
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_add(store, NULL, ser_trp, NUM_TRP, &ins));
|
|
|
+ EXPECT_INT_EQ(ins, 8);
|
|
|
+ EXPECT_INT_EQ(LSUP_mdbstore_size(store), 8);
|
|
|
|
|
|
|
|
|
- LSUP_SerTerm *lut[12][4] = {
|
|
|
- {NULL, NULL, NULL, NULL},
|
|
|
-
|
|
|
- {ser_trp[0].s, NULL, NULL, NULL},
|
|
|
- {ser_trp[2].s, NULL, NULL, ser_trp[2].s},
|
|
|
- {NULL, ser_trp[0].p, NULL, NULL},
|
|
|
- {NULL, ser_trp[0].s, NULL, NULL},
|
|
|
- {NULL, NULL, ser_trp[6].o, NULL},
|
|
|
-
|
|
|
- {ser_trp[4].s, ser_trp[4].p, NULL, NULL},
|
|
|
- {NULL, ser_trp[7].p, ser_trp[7].o, NULL},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, NULL},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, ser_trp[2].s},
|
|
|
-
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o, NULL},
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[6].o, NULL},
|
|
|
+ LSUP_SerTriple lut[12] = {
|
|
|
+ {NULL, NULL, NULL},
|
|
|
+
|
|
|
+ {ser_trp[0].s, NULL, NULL},
|
|
|
+ {ser_trp[2].s, NULL, NULL},
|
|
|
+ {NULL, ser_trp[0].p, NULL},
|
|
|
+ {NULL, ser_trp[0].s, NULL},
|
|
|
+ {NULL, NULL, ser_trp[6].o},
|
|
|
+
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, NULL},
|
|
|
+ {NULL, ser_trp[7].p, ser_trp[7].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
+
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[6].o},
|
|
|
+ };
|
|
|
+
|
|
|
+ LSUP_Buffer *luc[12] = {
|
|
|
+ NULL,
|
|
|
+
|
|
|
+ NULL,
|
|
|
+ ser_trp[2].s,
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
+
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
+ ser_trp[2].s,
|
|
|
+
|
|
|
+ NULL,
|
|
|
+ NULL,
|
|
|
};
|
|
|
|
|
|
size_t results[12] = {
|
|
@@ -82,10 +102,10 @@ static int test_triple_store()
|
|
|
|
|
|
TRACE("Testing triple lookup #%d.\n", i);
|
|
|
|
|
|
- EXPECT_PASS(LSUP_store_lookup(store, lut[i], &it, &ct));
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_lookup(store, lut + i, luc[i], &it, &ct));
|
|
|
EXPECT_INT_EQ(ct, results[i]);
|
|
|
|
|
|
- LSUP_store_it_free(it);
|
|
|
+ LSUP_mdbiter_free(it);
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < NUM_TRP; i++) {
|
|
@@ -94,7 +114,7 @@ static int test_triple_store()
|
|
|
LSUP_buffer_done(ser_trp[i].o);
|
|
|
}
|
|
|
|
|
|
- LSUP_store_free(store);
|
|
|
+ LSUP_mdbstore_free(store);
|
|
|
free_triples(trp);
|
|
|
|
|
|
return 0;
|
|
@@ -108,19 +128,20 @@ static int test_triple_store()
|
|
|
static int test_quad_store()
|
|
|
{
|
|
|
rmdb();
|
|
|
- EXPECT_PASS(LSUP_store_setup(&path));
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_setup(&path));
|
|
|
|
|
|
- LSUP_Term *ctx1 = LSUP_uri_new("urn:c:1");
|
|
|
- LSUP_SerTerm sc1_s;
|
|
|
- LSUP_SerTerm *sc1 = &sc1_s;
|
|
|
+ LSUP_Term *ctx1;
|
|
|
+ LSUP_uri_new("urn:c:1", ctx1);
|
|
|
+ LSUP_Buffer sc1_s;
|
|
|
+ LSUP_Buffer *sc1 = &sc1_s;
|
|
|
LSUP_term_serialize(ctx1, sc1);
|
|
|
|
|
|
LSUP_MDBStore *store;
|
|
|
- store = LSUP_store_new(path, sc1);
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_new(path, sc1, &store));
|
|
|
ASSERT(store != NULL, "Error initializing store!");
|
|
|
|
|
|
LSUP_Triple *trp = create_triples();
|
|
|
- LSUP_SerTerm sterms[NUM_TRP][3];
|
|
|
+ LSUP_Buffer sterms[NUM_TRP][3];
|
|
|
LSUP_SerTriple ser_trp[NUM_TRP];
|
|
|
|
|
|
for (int i = 0; i < NUM_TRP; i++) {
|
|
@@ -129,95 +150,126 @@ static int test_quad_store()
|
|
|
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_triple_pos(trp + i, j),
|
|
|
+ LSUP_striple_pos(ser_trp + i, j));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
- EXPECT_PASS(LSUP_store_add(store, NULL, ser_trp, 6));
|
|
|
-
|
|
|
- LSUP_Term *ctx2 = LSUP_uri_new("urn:c:2");
|
|
|
- LSUP_SerTerm sc2_s;
|
|
|
- LSUP_SerTerm *sc2 = &sc2_s;
|
|
|
+ size_t ct;
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_add(store, NULL, ser_trp, 6, &ct));
|
|
|
+ EXPECT_INT_EQ(ct, 6);
|
|
|
+
|
|
|
+ LSUP_Term *ctx2;
|
|
|
+ LSUP_uri_new("urn:c:2", ctx2);
|
|
|
+ LSUP_Buffer sc2_s;
|
|
|
+ LSUP_Buffer *sc2 = &sc2_s;
|
|
|
LSUP_term_serialize(ctx2, sc2);
|
|
|
|
|
|
|
|
|
- EXPECT_PASS(LSUP_store_add(store, &sc2_s, ser_trp + 4, 6));
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_add(store, &sc2_s, ser_trp + 4, 6, &ct));
|
|
|
+ EXPECT_INT_EQ(ct, 4);
|
|
|
|
|
|
|
|
|
- EXPECT_INT_EQ(LSUP_store_size(store), 10);
|
|
|
+ EXPECT_INT_EQ(LSUP_mdbstore_size(store), 10);
|
|
|
|
|
|
|
|
|
|
|
|
- LSUP_Term *ctx3 = LSUP_uri_new("urn:c:3");
|
|
|
- LSUP_SerTerm sc3_s;
|
|
|
- LSUP_SerTerm *sc3 = &sc3_s;
|
|
|
- LSUP_term_serialize(ctx3, &sc3_s);
|
|
|
+ LSUP_Term *ctx3;
|
|
|
+ LSUP_uri_new("urn:c:3", ctx3);
|
|
|
+ LSUP_Buffer sc3_s;
|
|
|
+ LSUP_Buffer *sc3 = &sc3_s;
|
|
|
+ LSUP_term_serialize(ctx3, sc3);
|
|
|
|
|
|
- LSUP_SerTerm *lut[41][4] = {
|
|
|
+ LSUP_SerTriple lut[41] = {
|
|
|
|
|
|
- {NULL, NULL, NULL, NULL},
|
|
|
+ {NULL, NULL, NULL},
|
|
|
|
|
|
- {ser_trp[0].s, NULL, NULL, NULL},
|
|
|
- {NULL, ser_trp[0].p, NULL, NULL},
|
|
|
- {NULL, ser_trp[0].s, NULL, NULL},
|
|
|
- {NULL, NULL, ser_trp[6].o, NULL},
|
|
|
+ {ser_trp[0].s, NULL, NULL},
|
|
|
+ {NULL, ser_trp[0].p, NULL},
|
|
|
+ {NULL, ser_trp[0].s, NULL},
|
|
|
+ {NULL, NULL, ser_trp[6].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, NULL, NULL},
|
|
|
- {NULL, ser_trp[7].p, ser_trp[7].o, NULL},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, NULL},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, NULL},
|
|
|
+ {NULL, ser_trp[7].p, ser_trp[7].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o, NULL},
|
|
|
- {ser_trp[2].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o},
|
|
|
+ {ser_trp[2].s, ser_trp[4].p, ser_trp[5].o},
|
|
|
|
|
|
|
|
|
- {NULL, NULL, NULL, sc1},
|
|
|
+ {NULL, NULL, NULL},
|
|
|
|
|
|
- {ser_trp[0].s, NULL, NULL, sc1},
|
|
|
- {ser_trp[2].s, NULL, NULL, sc1},
|
|
|
- {NULL, ser_trp[0].p, NULL, sc1},
|
|
|
- {NULL, ser_trp[6].p, NULL, sc1},
|
|
|
- {NULL, NULL, ser_trp[6].o, sc1},
|
|
|
+ {ser_trp[0].s, NULL, NULL},
|
|
|
+ {ser_trp[2].s, NULL, NULL},
|
|
|
+ {NULL, ser_trp[0].p, NULL},
|
|
|
+ {NULL, ser_trp[6].p, NULL},
|
|
|
+ {NULL, NULL, ser_trp[6].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, NULL, sc1},
|
|
|
- {NULL, ser_trp[7].p, ser_trp[7].o, sc1},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, sc1},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, NULL},
|
|
|
+ {NULL, ser_trp[7].p, ser_trp[7].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o, sc1},
|
|
|
- {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o, sc1},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o},
|
|
|
+ {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o},
|
|
|
|
|
|
|
|
|
|
|
|
- {NULL, NULL, NULL, sc2},
|
|
|
+ {NULL, NULL, NULL},
|
|
|
|
|
|
- {ser_trp[0].s, NULL, NULL, sc2},
|
|
|
- {NULL, ser_trp[0].p, NULL, sc2},
|
|
|
- {NULL, ser_trp[0].s, NULL, sc2},
|
|
|
- {NULL, NULL, ser_trp[6].o, sc2},
|
|
|
+ {ser_trp[0].s, NULL, NULL},
|
|
|
+ {NULL, ser_trp[0].p, NULL},
|
|
|
+ {NULL, ser_trp[0].s, NULL},
|
|
|
+ {NULL, NULL, ser_trp[6].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, NULL, sc2},
|
|
|
- {NULL, ser_trp[7].p, ser_trp[7].o, sc2},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, sc2},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, NULL},
|
|
|
+ {NULL, ser_trp[7].p, ser_trp[7].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o, sc2},
|
|
|
- {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o, sc2},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o},
|
|
|
+ {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o},
|
|
|
|
|
|
|
|
|
|
|
|
- {NULL, NULL, NULL, sc3},
|
|
|
+ {NULL, NULL, NULL},
|
|
|
|
|
|
- {ser_trp[0].s, NULL, NULL, sc3},
|
|
|
- {NULL, ser_trp[0].p, NULL, sc3},
|
|
|
- {NULL, ser_trp[0].s, NULL, sc3},
|
|
|
- {NULL, NULL, ser_trp[6].o, sc3},
|
|
|
+ {ser_trp[0].s, NULL, NULL},
|
|
|
+ {NULL, ser_trp[0].p, NULL},
|
|
|
+ {NULL, ser_trp[0].s, NULL},
|
|
|
+ {NULL, NULL, ser_trp[6].o},
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, NULL, sc3},
|
|
|
- {NULL, ser_trp[7].p, ser_trp[7].o, sc3},
|
|
|
- {ser_trp[5].s, NULL, ser_trp[5].o, sc3},
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, NULL},
|
|
|
+ {NULL, ser_trp[7].p, ser_trp[7].o},
|
|
|
+ {ser_trp[5].s, NULL, ser_trp[5].o},
|
|
|
+
|
|
|
+ {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o},
|
|
|
+ {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o},
|
|
|
+ };
|
|
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[4].o, sc3},
|
|
|
- {ser_trp[6].s, ser_trp[6].p, ser_trp[6].o, sc3},
|
|
|
+ LSUP_Buffer *luc[41] = {
|
|
|
+
|
|
|
+ NULL,
|
|
|
+ NULL, NULL, NULL, NULL,
|
|
|
+ NULL, NULL, NULL,
|
|
|
+ NULL, NULL,
|
|
|
+
|
|
|
+
|
|
|
+ sc1,
|
|
|
+ sc1, sc1, sc1, sc1, sc1,
|
|
|
+ sc1, sc1, sc1,
|
|
|
+ sc1, sc1,
|
|
|
+
|
|
|
+
|
|
|
+ sc2,
|
|
|
+ sc2, sc2, sc2, sc2,
|
|
|
+ sc2, sc2, sc2,
|
|
|
+ sc2, sc2,
|
|
|
+
|
|
|
+
|
|
|
+ sc3,
|
|
|
+ sc3, sc3, sc3, sc3,
|
|
|
+ sc3, sc3, sc3,
|
|
|
+ sc3, sc3,
|
|
|
};
|
|
|
|
|
|
size_t results[41] = {
|
|
@@ -252,26 +304,26 @@ static int test_quad_store()
|
|
|
|
|
|
printf("Testing triple lookup #%d: {", i);
|
|
|
|
|
|
- if(lut[i][0]) LSUP_buffer_print(lut[i][0]);
|
|
|
+ if(lut[i].s) LSUP_buffer_print(lut[i].s);
|
|
|
else printf("NULL");
|
|
|
- printf(" ");
|
|
|
+ printf(", ");
|
|
|
|
|
|
- if(lut[i][1]) LSUP_buffer_print(lut[i][1]);
|
|
|
+ if(lut[i].p) LSUP_buffer_print(lut[i].p);
|
|
|
else printf("NULL");
|
|
|
- printf(" ");
|
|
|
+ printf(", ");
|
|
|
|
|
|
- if(lut[i][2]) LSUP_buffer_print(lut[i][2]);
|
|
|
+ if(lut[i].o) LSUP_buffer_print(lut[i].o);
|
|
|
else printf("NULL");
|
|
|
- printf(" ");
|
|
|
+ printf(", ");
|
|
|
|
|
|
- if(lut[i][3]) LSUP_buffer_print(lut[i][3]);
|
|
|
+ if(luc[i]) LSUP_buffer_print(luc[i]);
|
|
|
else printf("NULL");
|
|
|
printf("}\n");
|
|
|
|
|
|
- EXPECT_PASS(LSUP_store_lookup(store, lut[i], &it, &ct));
|
|
|
+ EXPECT_PASS(LSUP_mdbstore_lookup(store, lut + i, luc[i], &it, &ct));
|
|
|
EXPECT_INT_EQ(ct, results[i]);
|
|
|
|
|
|
- LSUP_store_it_free(it);
|
|
|
+ LSUP_mdbiter_free(it);
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < NUM_TRP; i++) {
|
|
@@ -286,7 +338,7 @@ static int test_quad_store()
|
|
|
LSUP_buffer_done(&sc2_s);
|
|
|
free_triples(trp);
|
|
|
|
|
|
- LSUP_store_free(store);
|
|
|
+ LSUP_mdbstore_free(store);
|
|
|
|
|
|
return 0;
|
|
|
}
|