You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
3.6 KiB
155 lines
3.6 KiB
/* |
|
* Unit test for util.h |
|
* |
|
* This test utiliy functions |
|
*/ |
|
#include "test.h" |
|
#include "stream.h" |
|
|
|
#include <stdlib.h> |
|
|
|
static |
|
void test_mem_new() |
|
{ |
|
int ret; |
|
IsoStream *stream; |
|
unsigned char *buf; |
|
|
|
buf = malloc(3000); |
|
ret = iso_memory_stream_new(buf, 3000, &stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
iso_stream_unref(stream); |
|
|
|
ret = iso_memory_stream_new(NULL, 3000, &stream); |
|
CU_ASSERT_EQUAL(ret, ISO_NULL_POINTER); |
|
|
|
ret = iso_memory_stream_new(buf, 3000, NULL); |
|
CU_ASSERT_EQUAL(ret, ISO_NULL_POINTER); |
|
} |
|
|
|
static |
|
void test_mem_open() |
|
{ |
|
int ret; |
|
IsoStream *stream; |
|
unsigned char *buf; |
|
|
|
buf = malloc(3000); |
|
ret = iso_memory_stream_new(buf, 3000, &stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
ret = iso_stream_open(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
/* try to open an already opened stream */ |
|
ret = iso_stream_open(stream); |
|
CU_ASSERT_EQUAL(ret, ISO_FILE_ALREADY_OPENNED); |
|
|
|
ret = iso_stream_close(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
ret = iso_stream_close(stream); |
|
CU_ASSERT_EQUAL(ret, ISO_FILE_NOT_OPENNED); |
|
|
|
iso_stream_unref(stream); |
|
} |
|
|
|
static |
|
void test_mem_read() |
|
{ |
|
int ret; |
|
IsoStream *stream; |
|
unsigned char *buf; |
|
unsigned char rbuf[3000]; |
|
|
|
buf = malloc(3000); |
|
memset(buf, 2, 200); |
|
memset(buf + 200, 3, 300); |
|
memset(buf + 500, 5, 500); |
|
memset(buf + 1000, 10, 1000); |
|
memset(buf + 2000, 56, 48); |
|
memset(buf + 2048, 137, 22); |
|
memset(buf + 2070, 13, 130); |
|
memset(buf + 2200, 88, 800); |
|
|
|
ret = iso_memory_stream_new(buf, 3000, &stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
/* test 1: read full buf */ |
|
ret = iso_stream_open(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
ret = iso_stream_read(stream, rbuf, 3000); |
|
CU_ASSERT_EQUAL(ret, 3000); |
|
CU_ASSERT_NSTRING_EQUAL(rbuf, buf, 3000); |
|
|
|
/* read again is EOF */ |
|
ret = iso_stream_read(stream, rbuf, 20); |
|
CU_ASSERT_EQUAL(ret, 0); |
|
|
|
ret = iso_stream_close(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
/* test 2: read more than available bytes */ |
|
ret = iso_stream_open(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
ret = iso_stream_read(stream, rbuf, 3050); |
|
CU_ASSERT_EQUAL(ret, 3000); |
|
CU_ASSERT_NSTRING_EQUAL(rbuf, buf, 3000); |
|
|
|
/* read again is EOF */ |
|
ret = iso_stream_read(stream, rbuf, 20); |
|
CU_ASSERT_EQUAL(ret, 0); |
|
|
|
ret = iso_stream_close(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
/* test 3: read in block size */ |
|
ret = iso_stream_open(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
ret = iso_stream_read(stream, rbuf, 2048); |
|
CU_ASSERT_EQUAL(ret, 2048); |
|
CU_ASSERT_NSTRING_EQUAL(rbuf, buf, 2048); |
|
|
|
ret = iso_stream_read(stream, rbuf, 2048); |
|
CU_ASSERT_EQUAL(ret, 3000 - 2048); |
|
CU_ASSERT_NSTRING_EQUAL(rbuf, buf + 2048, 3000 - 2048); |
|
|
|
ret = iso_stream_read(stream, rbuf, 20); |
|
CU_ASSERT_EQUAL(ret, 0); |
|
|
|
ret = iso_stream_close(stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
iso_stream_unref(stream); |
|
} |
|
|
|
static |
|
void test_mem_size() |
|
{ |
|
int ret; |
|
off_t size; |
|
IsoStream *stream; |
|
unsigned char *buf; |
|
|
|
buf = malloc(3000); |
|
ret = iso_memory_stream_new(buf, 3000, &stream); |
|
CU_ASSERT_EQUAL(ret, 1); |
|
|
|
size = iso_stream_get_size(stream); |
|
CU_ASSERT_EQUAL(size, 3000); |
|
|
|
iso_stream_unref(stream); |
|
} |
|
|
|
void add_stream_suite() |
|
{ |
|
CU_pSuite pSuite = CU_add_suite("IsoStreamSuite", NULL, NULL); |
|
|
|
CU_add_test(pSuite, "iso_memory_stream_new()", test_mem_new); |
|
CU_add_test(pSuite, "MemoryStream->open()", test_mem_open); |
|
CU_add_test(pSuite, "MemoryStream->read()", test_mem_read); |
|
CU_add_test(pSuite, "MemoryStream->get_size()", test_mem_size); |
|
}
|
|
|