コード例 #1
0
ファイル: test-buffer.c プロジェクト: Achint08/soletta
static void
test_resize(void)
{
    struct sol_buffer buf = SOL_BUFFER_INIT_EMPTY;
    const int size = 1024;
    char *buf_data;
    int i;

    sol_buffer_resize(&buf, size);

    memset(buf.data, 22, size);

    sol_buffer_resize(&buf, size * 2);
    buf_data = buf.data;
    for (i = 0; i < size; i++) {
        ASSERT_INT_EQ(buf_data[i], 22);
    }

    sol_buffer_resize(&buf, size / 2);
    buf_data = buf.data;
    for (i = 0; i < size / 2; i++) {
        ASSERT_INT_EQ(buf_data[i], 22);
    }

    sol_buffer_fini(&buf);
}
コード例 #2
0
static void
test_resize(void)
{
    struct sol_buffer buf = SOL_BUFFER_EMPTY;
    const int size = 1024;
    int i;

    sol_buffer_resize(&buf, size);

    memset(buf.data, 22, size);

    sol_buffer_resize(&buf, size * 2);
    for (i = 0; i < size; i++) {
        ASSERT(buf.data[i] == 22);
    }

    sol_buffer_resize(&buf, size / 2);
    for (i = 0; i < size / 2; i++) {
        ASSERT(buf.data[i] == 22);
    }

    sol_buffer_fini(&buf);
}
コード例 #3
0
SOL_API int
sol_buffer_ensure(struct sol_buffer *buf, size_t min_size)
{
    int err;

    SOL_NULL_CHECK(buf, -EINVAL);

    if (min_size >= SIZE_MAX - nul_byte_size(buf))
        return -EINVAL;
    if (buf->capacity >= min_size)
        return 0;

    err = sol_buffer_resize(buf, align_power2(min_size + nul_byte_size(buf)));
    if (err == -EPERM)
        return -ENOMEM;
    return err;
}
コード例 #4
0
ファイル: test-buffer.c プロジェクト: Achint08/soletta
static void
test_memory_not_owned(void)
{
    struct sol_buffer buf;
    struct sol_str_slice slice;
    char backend[10];
    int err;

    sol_buffer_init_flags(&buf, backend, sizeof(backend), SOL_BUFFER_FLAGS_MEMORY_NOT_OWNED);

    err = sol_buffer_ensure(&buf, 0);
    ASSERT_INT_EQ(err, 0);

    /* ensure considers null-byte, so we use sizeof - 1 */
    err = sol_buffer_ensure(&buf, sizeof(backend) - 1);
    ASSERT_INT_EQ(err, 0);

    err = sol_buffer_ensure(&buf, sizeof(backend) * 2);
    ASSERT_INT_EQ(err, -ENOMEM);

    err = sol_buffer_resize(&buf, 0);
    ASSERT_INT_EQ(err, -EPERM);

    slice = sol_str_slice_from_str("test");
    err = sol_buffer_append_slice(&buf, slice);
    ASSERT_INT_EQ(err, 0);
    ASSERT_STR_EQ(buf.data, "test");

    slice = sol_str_slice_from_str("other");
    err = sol_buffer_append_slice(&buf, slice);
    ASSERT_INT_EQ(err, 0);
    ASSERT_STR_EQ(buf.data, "testother");

    slice = sol_str_slice_from_str("OVERFLOW");
    err = sol_buffer_append_slice(&buf, slice);
    ASSERT_INT_EQ(err, -ENOMEM);

    sol_buffer_fini(&buf);
}