Beispiel #1
0
fs_tbchain *fs_tbchain_open(fs_backend *be, const char *label, int flags)
{
    char *fname = fname_from_label(be, label);
    fs_tbchain *c = fs_tbchain_open_filename(fname, flags);
    c->be = be;
    g_free(fname);

    return c;
}
Beispiel #2
0
END_TEST


START_TEST (check_tbchain_iterate)
{

    int i;
    double begin = test_time();
    fs_tbchain *bc = fs_tbchain_open_filename("./tmp/check_test.tbchain",O_RDWR | O_CREAT | O_TRUNC);
    fail_if(bc == NULL);
    fs_index_node b = fs_tbchain_new_chain(bc);
    fail_if(fs_tbchain_length(bc, b) != 0);

    fs_rid search[3] = {FS_RID_NULL, FS_RID_NULL, FS_RID_NULL};

    fs_tbchain_it *it = fs_tbchain_new_iterator(bc, FS_RID_NULL, b);
    int count = 0;
    while (fs_tbchain_it_next(it, search) > 0) {
        fail_if(b == 1);
        fail_if(1 == 1);
        count ++;
    }
    fail_if(count !=0 );
    fs_tbchain_it_free(it);

    fs_rid triple[3];
    triple[0] = 0xABC;
    triple[1] = 0xABC;
    triple[2] = 0xABC;
    b = fs_tbchain_add_triple(bc, b, triple);
    fail_if(fs_tbchain_length(bc, b) != 1);

    it = fs_tbchain_new_iterator(bc, FS_RID_NULL, b);
    count = 0;
    while (fs_tbchain_it_next(it, search) > 0) {
        fail_if(b == 1);
        fail_if(search[0] != 0xABC && search[1] != 0xABC && search[2] != 0xABC);
        count ++;
    }
    fail_if(count != 1);
    fs_tbchain_it_free(it);



    fs_index_node c = fs_tbchain_new_chain(bc);
    fs_index_node d = fs_tbchain_new_chain(bc);
    int dcount=0, ccount =0, bcount =1;
    for(i=1; i < 10000; i++) {
        triple[0] = i; triple[1] = i;triple[2] = i + 777;

        b = fs_tbchain_add_triple(bc, b, triple);
        bcount += 1;

        if (c<2) fail_if(1==1);
        if ((i % 7 == 0) && (i % 5 ==0)) {
            c = fs_tbchain_add_triple(bc, c, triple);
            ccount += 1;
        }
        if ((i % 7 == 0) || (i % 5 ==0)) {
            d = fs_tbchain_add_triple(bc, d, triple);
            dcount += 1;
        }
    }

    it = fs_tbchain_new_iterator(bc, FS_RID_NULL, c);
    count = 0;
    while (i>0) {
        i = fs_tbchain_it_next(it, search);
        if (i != 1) {
            fail_if(search[0] != FS_RID_NULL || search[1] != FS_RID_NULL || search[2] != FS_RID_NULL);
            break;
        }
        ccount -= 1;
        int j=0;
        int test = 0;
        for (j=0;j<2 && !test;j++)
            test = (search[j] % 7 == 0) && (search[j] % 5 == 0);
        fail_if(test != 1);
        fail_if(search[2] - 777 != search[1]);
    }
    fail_if(ccount != 0);
    fs_tbchain_it_free(it);

    it = fs_tbchain_new_iterator(bc, FS_RID_NULL, d);
    count = 0;
    i = 1;
    while (i>0) {
        i = fs_tbchain_it_next(it, search);
        if (i != 1) {
            fail_if(search[0] != FS_RID_NULL || search[1] != FS_RID_NULL || search[2] != FS_RID_NULL);
            break;
        }
        dcount -= 1;
        int j=0;
        int test = 0;
        for (j=0;j<2 && !test;j++)
            test = (search[j] % 7 == 0) || (search[j] % 5 == 0);
        fail_if(test != 1);
        fail_if(search[2] - 777 != search[1]);
    }
    fail_if(dcount != 0);
    fs_tbchain_it_free(it);


    it = fs_tbchain_new_iterator(bc, FS_RID_NULL, b);
    count = 0;
    i = 1;
    while (i>0) {
        i = fs_tbchain_it_next(it, search);
        if (i != 1) {
            fail_if(search[0] != FS_RID_NULL || search[1] != FS_RID_NULL || search[2] != FS_RID_NULL);
            break;
        }
        bcount -= 1;
        if (search[0] != 0xABC && bcount > 0)
            fail_if(search[2] - 777 != search[1]);
    }
    fail_if(bcount != 0);
    fs_tbchain_it_free(it);


    fs_tbchain_close(bc);

    TIME(ts_timing_report);
    double end = test_time();
    printf("TIMES: check_tbchain_create %.4f\n", (end - begin));
}