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); }
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); }
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); }
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); }
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); }
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)); }
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()]; }
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); }
/* 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); }
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)); }
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)); }
/* 引数 data が無いとき、エラーとなること */ static void test_sgetline_data_null(void) { char* line; line = sgetline(NULL); PCU_ASSERT_PTR_NULL(line); PCU_ASSERT_EQUAL(EINVAL, errno); }
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); }
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)); } }
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)); }
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)); }
/* 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); }
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); }
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); }
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); }