Exemple #1
0
END_TEST

START_TEST(xpost_memory_grow)
{
    char memorypat[] = "preserve this data across grow()";
    Xpost_Memory_File mem = {0};
    unsigned int addr;
    int ret;

    ret = xpost_memory_file_init(&mem, NULL, -1, NULL, NULL, NULL);
    ck_assert_int_eq (ret, 1);
    ck_assert(mem.base != NULL);

    ret = xpost_memory_file_alloc(&mem, sizeof memorypat, &addr);
    ck_assert_int_eq (ret, 1);
    strcpy((char *)mem.base + addr, memorypat);

    ret = xpost_memory_file_grow(&mem, 4096);
    ck_assert_int_eq (ret, 1);
    ck_assert(mem.base != NULL);
    ck_assert_str_eq ((char *)mem.base + addr, memorypat);

    ret = xpost_memory_file_exit(&mem);
    ck_assert_int_eq (ret, 1);
}
Exemple #2
0
/* add a string to the ternary search tree */
static
int tstinsert(Xpost_Memory_File *mem,
              unsigned int tadr,
              const char *s,
              unsigned int *retval)
{
    tst *p;
    unsigned int t; //temporary
    unsigned int nstk;
    int ret;

    if (!tadr) {
        if (!xpost_memory_file_alloc(mem, sizeof(tst), &tadr))
        {
            XPOST_LOG_ERR("cannot allocate tree node");
            return VMerror;
        }
        p = (void *)(mem->base + tadr);
        p->val = *s;
        p->lo = p->eq = p->hi = 0;
    }
    p = (void *)(mem->base + tadr);
    if ((unsigned int)*s < p->val) {
        ret = tstinsert(mem, p->lo, s, &t);
        if (ret)
            return ret;
        p = (void *)(mem->base + tadr); //recalc pointer
        p->lo = t;
    } else if ((unsigned int)*s == p->val) {
        if (*s) {
            ret = tstinsert(mem, p->eq, ++s, &t);
            if (ret)
                return ret;
            p = (void *)(mem->base + tadr); //recalc pointer
            p->eq = t;
        }else {
            xpost_memory_table_get_addr(mem,
                    XPOST_MEMORY_TABLE_SPECIAL_NAME_STACK, &nstk);
            p->eq = xpost_stack_count(mem, nstk); /* payload when val == '\0' */
        }
    } else {
        ret = tstinsert(mem, p->hi, s, &t);
        if (ret)
            return ret;
        p = (void *)(mem->base + tadr); //recalc pointer
        p->hi = t;
    }
    //return tadr;
    *retval = tadr;
    return 0;
}
Exemple #3
0
END_TEST

START_TEST(xpost_memory_not_init)
{
    Xpost_Memory_File mem = {0};
    unsigned int addr;
    int ret;

    mem.base = NULL;
    XPOST_LOG_ERR("you should see an error just below");
    ret = xpost_memory_file_alloc(&mem, 64, &addr);
    ck_assert_int_eq (ret, 0);
    /* ck_assert_int_eq (xpost_memory_file_grow(&mem, 4096), 0); */
    /* ck_assert_int_eq (xpost_memory_file_exit(&mem), 0); */
}
Exemple #4
0
END_TEST

START_TEST(xpost_memory_init_)
{
    Xpost_Memory_File mem;
    unsigned int addr;
    int ret;

    memset(&mem, 0, sizeof(Xpost_Memory_File));
    ret = xpost_memory_file_init(&mem, NULL, -1, NULL, NULL, NULL);
    ck_assert_int_eq (ret, 1);
    ck_assert(mem.base != NULL);
    ret = xpost_memory_file_alloc(&mem, 64, &addr);
    ck_assert_int_eq (ret, 1);
    ck_assert(mem.base != NULL);
    ret = xpost_memory_file_exit(&mem);
    ck_assert_int_eq (ret, 1);
}