|
@@ -110,10 +110,11 @@ static int test_quad_store()
|
|
|
|
|
|
LSUP_Term *ctx1 = LSUP_uri_new("urn:c:1");
|
|
LSUP_Term *ctx1 = LSUP_uri_new("urn:c:1");
|
|
LSUP_SerTerm sc1_s;
|
|
LSUP_SerTerm sc1_s;
|
|
- LSUP_term_serialize(ctx1, &sc1_s);
|
|
|
|
|
|
+ LSUP_SerTerm *sc1 = &sc1_s;
|
|
|
|
+ LSUP_term_serialize(ctx1, sc1);
|
|
|
|
|
|
LSUP_MDBStore *store;
|
|
LSUP_MDBStore *store;
|
|
- store = LSUP_store_new(path, &sc1_s); // quad store.
|
|
|
|
|
|
+ store = LSUP_store_new(path, sc1); // quad store.
|
|
ASSERT(store != NULL, "Error initializing store!");
|
|
ASSERT(store != NULL, "Error initializing store!");
|
|
|
|
|
|
LSUP_Triple *trp = create_triples();
|
|
LSUP_Triple *trp = create_triples();
|
|
@@ -136,7 +137,8 @@ static int test_quad_store()
|
|
|
|
|
|
LSUP_Term *ctx2 = LSUP_uri_new("urn:c:2");
|
|
LSUP_Term *ctx2 = LSUP_uri_new("urn:c:2");
|
|
LSUP_SerTerm sc2_s;
|
|
LSUP_SerTerm sc2_s;
|
|
- LSUP_term_serialize(ctx2, &sc2_s);
|
|
|
|
|
|
+ LSUP_SerTerm *sc2 = &sc2_s;
|
|
|
|
+ LSUP_term_serialize(ctx2, sc2);
|
|
|
|
|
|
// Only triples 4÷9 in default context.
|
|
// Only triples 4÷9 in default context.
|
|
EXPECT_PASS(LSUP_store_add(store, &sc2_s, ser_trp + 4, 6));
|
|
EXPECT_PASS(LSUP_store_add(store, &sc2_s, ser_trp + 4, 6));
|
|
@@ -148,15 +150,15 @@ static int test_quad_store()
|
|
// This context is not with any triple.
|
|
// This context is not with any triple.
|
|
LSUP_Term *ctx3 = LSUP_uri_new("urn:c:3");
|
|
LSUP_Term *ctx3 = LSUP_uri_new("urn:c:3");
|
|
LSUP_SerTerm sc3_s;
|
|
LSUP_SerTerm sc3_s;
|
|
|
|
+ LSUP_SerTerm *sc3 = &sc3_s;
|
|
LSUP_term_serialize(ctx2, &sc3_s);
|
|
LSUP_term_serialize(ctx2, &sc3_s);
|
|
|
|
|
|
size_t ct;
|
|
size_t ct;
|
|
- LSUP_SerTerm *lut[12][4] = {
|
|
|
|
- // No context
|
|
|
|
|
|
+ LSUP_SerTerm *lut[41][4] = {
|
|
|
|
+ // Any context
|
|
{NULL, NULL, NULL, NULL},
|
|
{NULL, NULL, NULL, NULL},
|
|
|
|
|
|
{ser_trp[0].s, 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].p, NULL, NULL},
|
|
{NULL, ser_trp[0].s, NULL, NULL},
|
|
{NULL, ser_trp[0].s, NULL, NULL},
|
|
{NULL, NULL, ser_trp[6].o, NULL},
|
|
{NULL, NULL, ser_trp[6].o, NULL},
|
|
@@ -164,74 +166,104 @@ static int test_quad_store()
|
|
{ser_trp[4].s, ser_trp[4].p, NULL, NULL},
|
|
{ser_trp[4].s, ser_trp[4].p, NULL, NULL},
|
|
{NULL, ser_trp[7].p, ser_trp[7].o, 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, NULL},
|
|
- {ser_trp[6].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[4].o, NULL},
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
|
|
|
+ {ser_trp[2].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
|
|
|
- // Context 1
|
|
|
|
- {NULL, NULL, NULL, NULL},
|
|
|
|
|
|
+ // Context 1 (trp[0÷5])
|
|
|
|
+ {NULL, NULL, NULL, sc1},
|
|
|
|
|
|
- {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[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[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[6].s, NULL, ser_trp[5].o, ser_trp[2].s},
|
|
|
|
|
|
+ {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, ser_trp[4].o, NULL},
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
|
|
|
+ {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},
|
|
|
|
|
|
|
|
|
|
- // Context 2
|
|
|
|
- {NULL, NULL, NULL, NULL},
|
|
|
|
|
|
+ // Context 2 (trp[4÷9])
|
|
|
|
+ {NULL, NULL, NULL, sc2},
|
|
|
|
|
|
- {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[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[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[6].s, NULL, ser_trp[5].o, ser_trp[2].s},
|
|
|
|
|
|
+ {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, ser_trp[4].o, NULL},
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
|
|
|
+ {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},
|
|
|
|
|
|
|
|
|
|
// Non-existing context
|
|
// Non-existing context
|
|
- {NULL, NULL, NULL, NULL},
|
|
|
|
|
|
+ {NULL, NULL, NULL, sc3},
|
|
|
|
|
|
- {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[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[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[6].s, NULL, ser_trp[5].o, ser_trp[2].s},
|
|
|
|
|
|
+ {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, ser_trp[4].o, NULL},
|
|
|
|
- {ser_trp[4].s, ser_trp[4].p, ser_trp[5].o, NULL},
|
|
|
|
|
|
+ {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},
|
|
};
|
|
};
|
|
|
|
|
|
- size_t results[12] = {
|
|
|
|
|
|
+ size_t results[40] = {
|
|
|
|
+ // NULL ctx
|
|
8,
|
|
8,
|
|
- 5, 1, 1, 0, 1,
|
|
|
|
- 2, 1, 2, 0,
|
|
|
|
|
|
+ 5, 1, 0, 1,
|
|
|
|
+ 2, 1, 2,
|
|
1, 0,
|
|
1, 0,
|
|
|
|
+
|
|
|
|
+ // ctx1
|
|
|
|
+ 6,
|
|
|
|
+ 4, 1, 0, 0,
|
|
|
|
+ 1, 0, 0,
|
|
|
|
+ 1, 0,
|
|
|
|
+
|
|
|
|
+ // ctx2
|
|
|
|
+ 4,
|
|
|
|
+ 3, 0, 0, 1,
|
|
|
|
+ 2, 1, 1,
|
|
|
|
+ 1, 1,
|
|
|
|
+
|
|
|
|
+ // ctx3
|
|
|
|
+ 0,
|
|
|
|
+ 0, 0, 0, 0,
|
|
|
|
+ 0, 0, 0,
|
|
|
|
+ 0, 0,
|
|
};
|
|
};
|
|
|
|
|
|
- for (int i = 0; i < 8; i++) {
|
|
|
|
- TRACE("Testing triple lookup #%d.\n", i);
|
|
|
|
|
|
+ for (int i = 0; i < 41; i++) {
|
|
|
|
+ printf("Testing triple lookup #%d: {", i);
|
|
|
|
+
|
|
|
|
+ if(lut[i][0]) LSUP_buffer_print(lut[i][0]);
|
|
|
|
+ else printf("NULL");
|
|
|
|
+ printf(" ");
|
|
|
|
+
|
|
|
|
+ if(lut[i][1]) LSUP_buffer_print(lut[i][1]);
|
|
|
|
+ else printf("NULL");
|
|
|
|
+ printf(" ");
|
|
|
|
+
|
|
|
|
+ if(lut[i][2]) LSUP_buffer_print(lut[i][2]);
|
|
|
|
+ else printf("NULL");
|
|
|
|
+ printf(" ");
|
|
|
|
+
|
|
|
|
+ if(lut[i][3]) LSUP_buffer_print(lut[i][3]);
|
|
|
|
+ else printf("NULL");
|
|
|
|
+ printf("}\n");
|
|
|
|
+
|
|
int rc = LSUP_store_lookup(store, lut[i], &ct, NULL, NULL);
|
|
int rc = LSUP_store_lookup(store, lut[i], &ct, NULL, NULL);
|
|
if (ct > 0) EXPECT_INT_EQ(rc, LSUP_OK);
|
|
if (ct > 0) EXPECT_INT_EQ(rc, LSUP_OK);
|
|
else if (ct == 0) EXPECT_INT_EQ(rc, LSUP_NORESULT);
|
|
else if (ct == 0) EXPECT_INT_EQ(rc, LSUP_NORESULT);
|