Exemplo n.º 1
0
void test_NewDelete(void)
{
	BFI bfi;
	int bfi_ret;
	int test_tapesize;
	int tapesize;
	const int *tapeptr;
	int c;
	int i;
	
	test_tapesize = 256;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), test_tapesize);
	
	PCU_ASSERT_PTR_NOT_EQUAL(NULL, bfi);
	
	bfi_ret = brainfuck_get_tapesize(bfi, &tapesize);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_EQUAL(test_tapesize, tapesize);
	
	bfi_ret = brainfuck_get_tapeptr(bfi, &tapeptr);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_PTR_NOT_EQUAL(&c, tapeptr);
	
	for(i = 0; i < tapesize; i++){
		PCU_ASSERT_EQUAL_MESSAGE(0, tapeptr[i], PCU_format("i=%d",i));
	}
	
	bfi_ret = brainfuck_delete(bfi);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
}
Exemplo n.º 2
0
void test_GetTapeptr_error(void)
{
	BFI bfi;
	int bfi_ret;
	const int *tapeptr;
	int c;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), 0);
	
	tapeptr = NULL;
	
	bfi_ret = brainfuck_get_tapeptr(bfi, &tapeptr);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(NULL, tapeptr);
	
	tapeptr = &c;
	
	bfi_ret = brainfuck_get_tapeptr(bfi, &tapeptr);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(&c, tapeptr);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 3
0
void test_GetSetPutcharGetchar_error(void)
{
	BFI bfi;
	int bfi_ret;
	BFI_Putchar func_putchar;
	BFI_Getchar func_getchar;
	
	func_putchar = NULL;
	func_getchar = NULL;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), 0);
	
	bfi_ret = brainfuck_set_putchar(bfi, putchar);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	
	bfi_ret = brainfuck_set_getchar(bfi, getchar);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	
	bfi_ret = brainfuck_get_putchar(bfi, &func_putchar);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(NULL, func_putchar);
	
	bfi_ret = brainfuck_get_getchar(bfi, &func_getchar);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(NULL, func_getchar);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 4
0
void test_GetSetPutcharGetchar(void)
{
	BFI bfi;
	int bfi_ret;
	int tapesize;
	int test_tapesize;
	BFI_Putchar func_putchar;
	BFI_Getchar func_getchar;
	
	test_tapesize = 256;
	func_putchar = NULL;
	func_getchar = NULL;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), test_tapesize);
	
	bfi_ret = brainfuck_set_putchar(bfi, putchar);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	
	bfi_ret = brainfuck_set_getchar(bfi, getchar);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	
	bfi_ret = brainfuck_get_putchar(bfi, &func_putchar);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(putchar, func_putchar);
	
	bfi_ret = brainfuck_get_getchar(bfi, &func_getchar);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(getchar, func_getchar);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 5
0
void test_GetProgramptr_error(void)
{
	BFI bfi;
	int bfi_ret;
	const char *programptr;
	char c;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), 0);
	
	programptr = NULL;
	
	bfi_ret = brainfuck_get_programptr(bfi, &programptr);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(NULL, programptr);
	
	programptr = &c;
	
	bfi_ret = brainfuck_get_programptr(bfi, &programptr);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_PTR_EQUAL(&c, programptr);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 6
0
static void test_f_int_args_callback(void)
{
	f_int_args_set_callback(f_int_args_callback, 4);
	PCU_ASSERT_EQUAL(5, f_int_args(1, 2, 3, 4));
	PCU_ASSERT_EQUAL(50, f_int_args(10, 20, 30, 40));
	PCU_ASSERT_EQUAL(500, f_int_args(100, 200, 300, 400));
	PCU_ASSERT_EQUAL(5000, f_int_args(1000, 2000, 3000, 4000));
}
Exemplo n.º 7
0
static int f_int_args_callback(int a, int b, int c, int d)
{
	const int expected_a[] = {1, 10, 100, 1000};
	const int expected_b[] = {2, 20, 200, 2000};
	const int expected_c[] = {3, 30, 300, 3000};
	const int expected_d[] = {4, 40, 400, 4000};
	const int retval[]     = {5, 50, 500, 5000};
	PCU_ASSERT_EQUAL(expected_a[f_int_args_num_calls()], a);
	PCU_ASSERT_EQUAL(expected_b[f_int_args_num_calls()], b);
	PCU_ASSERT_EQUAL(expected_c[f_int_args_num_calls()], c);
	PCU_ASSERT_EQUAL(expected_d[f_int_args_num_calls()], d);
	return retval[f_int_args_num_calls()];
}
Exemplo n.º 8
0
static void test_f_int_ptr_return_by_param_ptr(void)
{
	int a = 0;
	f_int_ptr_set_callback(f_int_ptr_callback, 4);
	f_int_ptr(&a);
	PCU_ASSERT_EQUAL(1, a);
	a = 0;
	f_int_ptr(&a);
	PCU_ASSERT_EQUAL(10, a);
	a = 0;
	f_int_ptr(&a);
	PCU_ASSERT_EQUAL(100, a);
	a = 0;
	f_int_ptr(&a);
	PCU_ASSERT_EQUAL(1000, a);
}
Exemplo n.º 9
0
/* data が複数行のとき、各行を取得できること。改行がCR。 */
static void test_sgetline_multilines_cr(void)
{
	const char *data = "abc\rdef\rghi";
	char* line;

	line = sgetline(&data);
	PCU_ASSERT_PTR_NOT_NULL(line);
	PCU_ASSERT_STRING_EQUAL("abc", line);

	free(line);

	line = sgetline(&data);
	PCU_ASSERT_PTR_NOT_NULL(line);
	PCU_ASSERT_STRING_EQUAL("def", line);

	free(line);

	line = sgetline(&data);
	PCU_ASSERT_PTR_NOT_NULL(line);
	PCU_ASSERT_STRING_EQUAL("ghi", line);

	free(line);

	PCU_ASSERT_EQUAL('\0', *data);
}
Exemplo n.º 10
0
static void test_f_int_args_2times(void)
{
	f_int_args_Expectation e[2] = {{0}};
	e[0].expected.a = 1;
	e[0].expected.b = 2;
	e[0].expected.c = 3;
	e[0].expected.d = 4;
	e[0].retval = 5;
	e[1].expected.a = 10;
	e[1].expected.b = 20;
	e[1].expected.c = 30;
	e[1].expected.d = 40;
	e[1].retval = 50;
	f_int_args_expect(e, sizeof e / sizeof e[0]);
	PCU_ASSERT_EQUAL(5, f_int_args(1, 2, 3, 4));
	PCU_ASSERT_EQUAL(50, f_int_args(10, 20, 30, 40));
}
Exemplo n.º 11
0
static void test_f_int_args_all_params_ignored(void)
{
	f_int_args_Expectation e[1] = {{0}};
	memset(&e[0].ignored, 0xFF, sizeof e[0].ignored);
	e[0].retval = 5;
	f_int_args_expect(e, sizeof e / sizeof e[0]);
	PCU_ASSERT_EQUAL(5, f_int_args(1, 2, 3, 4));
}
Exemplo n.º 12
0
/* 引数 data が無いとき、エラーとなること */
static void test_sgetline_data_null(void)
{
	char* line;

	line = sgetline(NULL);
	PCU_ASSERT_PTR_NULL(line);
	PCU_ASSERT_EQUAL(EINVAL, errno);
}
Exemplo n.º 13
0
void test_GetProgramsize(void)
{
	BFI bfi;
	int bfi_ret;
	int programsize;
	int test_tapesize;
	
	test_tapesize = 256;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), test_tapesize);
	
	bfi_ret = brainfuck_get_programsize(bfi, &programsize);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_EQUAL(sizeof(program1), programsize);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 14
0
static void test_StrToken(void)
{
    size_t i;

    PCU_ASSERT_EQUAL(data->expected_count, StrToken_count(tok));
    for (i = 0; i < data->expected_count; i++) {
        PCU_ASSERT_STRING_EQUAL_MESSAGE(data->expected_token[i], StrToken_get(tok, i), PCU_format("%dth token err", i));
    }
}
Exemplo n.º 15
0
static void test_f_int_args(void)
{
	f_int_args_Expectation e[1] = {{0}};
	e[0].expected.a = 1;
	e[0].expected.b = 2;
	e[0].expected.c = 3;
	e[0].expected.d = 4;
	e[0].retval = 5;
	f_int_args_expect(e, sizeof e / sizeof e[0]);
	PCU_ASSERT_EQUAL(5, f_int_args(1, 2, 3, 4));
}
Exemplo n.º 16
0
static void test_f_int_args_param_ignored(void)
{
	f_int_args_Expectation e[1] = {{0}};
	e[0].expected.a = 1;
	e[0].ignored.b = 1;
	e[0].expected.c = 3;
	e[0].ignored.d = 1;
	e[0].retval = 5;
	f_int_args_expect(e, sizeof e / sizeof e[0]);
	PCU_ASSERT_EQUAL(5, f_int_args(1, 1000, 3, 1000));
}
Exemplo n.º 17
0
/* data が1行のとき、1行を取得し、'\0' が返ること */
static void test_sgetline_oneline(void)
{
	const char *data = "abc";
	char* line;

	line = sgetline(&data);
	PCU_ASSERT_PTR_NOT_NULL(line);
	PCU_ASSERT_STRING_EQUAL("abc", line);
	free(line);

	PCU_ASSERT_EQUAL('\0', *data);

}
Exemplo n.º 18
0
void test_GetProgramsize_error(void)
{
	BFI bfi;
	int bfi_ret;
	int programsize;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), 0);
	
	programsize = 0;
	
	bfi_ret = brainfuck_get_programsize(bfi, &programsize);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_EQUAL(0, programsize);
	
	programsize = 256;
	
	bfi_ret = brainfuck_get_programsize(bfi, &programsize);
	
	PCU_ASSERT_EQUAL(BFI_ERROR, bfi_ret);
	PCU_ASSERT_EQUAL(256, programsize);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 19
0
void test_GetTapeptr(void)
{
	BFI bfi;
	int bfi_ret;
	int tapesize;
	int test_tapesize;
	const int *tapeptr;
	int c;
	
	test_tapesize = 256;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), test_tapesize);
	
	tapeptr = &c;
	
	bfi_ret = brainfuck_get_tapeptr(bfi, &tapeptr);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_PTR_NOT_EQUAL(&c, tapeptr);
	
	bfi_ret = brainfuck_delete(bfi);
}
Exemplo n.º 20
0
void test_GetProgramptr(void)
{
	BFI bfi;
	int bfi_ret;
	int tapesize;
	int test_tapesize;
	const char *programptr;
	char c;
	
	test_tapesize = 256;
	
	bfi = brainfuck_new(program1, sizeof(program1)/sizeof(program1[0]), test_tapesize);
	
	programptr = &c;
	
	bfi_ret = brainfuck_get_programptr(bfi, &programptr);
	
	PCU_ASSERT_EQUAL(BFI_SUCCESS, bfi_ret);
	PCU_ASSERT_PTR_NOT_EQUAL(&c, programptr);
	PCU_ASSERT_PTR_NOT_EQUAL(program1, programptr);
		
	bfi_ret = brainfuck_delete(bfi);
}