#include #include #include #include #include #include #include #include #include #include #define PAC_SIZ 107898 #define FNAME "test_file_1" char *str2snd = NULL; int clear_file_from_sess_call = 0; extern void *print_str_arr; void __wrap_clear_file_from_sess(session *s) { clear_file_from_sess_call++; s->file = NULL; return; } void test__download_confirm__continue(void **state) { s_file_t file = {.package_rest = 0}; session sess = {.state = OP_DOWNLOAD_WAIT_CONFIRM_PACKAGE, .file = &file}; char line[128]; sprintf(line, "continue %d\n", PAC_SIZ); download_confirm(line, &sess, NULL); assert_int_equal(sess.state, OP_DOWNLOAD); assert_int_equal(sess.file->package_rest, PAC_SIZ); } void test__download_confirm__continue_no_size(void **state) { s_file_t file = {.package_rest = 0}; session sess = {.state = OP_DOWNLOAD_WAIT_CONFIRM_PACKAGE, .file = &file}; char line[128]; sprintf(line, "continue"); download_confirm(line, &sess, NULL); assert_int_equal(sess.state, OP_DOWNLOAD); assert_int_equal(sess.file->package_rest, PACKAGE_SIZE); } void test__download_confirm__cancel(void **state) { s_file_t file = {.package_rest = 0, .name = FNAME}; session sess = {.state = OP_DOWNLOAD_WAIT_CONFIRM_PACKAGE, .file = &file}; const char *fmt_args[] = {"Downloading of %s is canceled by the client\n", FNAME, NULL}; print_str_arr = fmt_args; download_confirm("cancel\n", &sess, NULL); assert_int_equal(sess.state, OP_WAIT); assert_ptr_equal(sess.file, NULL); } void test__download_confirm__noise(void **state) { s_file_t file = {.package_rest = 0, .name = FNAME}; session sess = {.state = OP_DOWNLOAD_WAIT_CONFIRM_PACKAGE, .file = &file}; const char *fmt_args[] = {"The answer is not correct. Send either \"continue " "\%PACKAGE_SIZE\% or \"cancel\"", NULL}; print_str_arr = fmt_args; download_confirm("jasdf", &sess, NULL); assert_int_equal(sess.state, OP_DOWNLOAD_WAIT_CONFIRM_PACKAGE); } int setup(void **state) { return 0; } int tear_down(void **state) { return 0; } int main(int argc, char **argv) { const struct CMUnitTest tests[] = { cmocka_unit_test(test__download_confirm__continue), cmocka_unit_test(test__download_confirm__continue_no_size), cmocka_unit_test(test__download_confirm__cancel), cmocka_unit_test(test__download_confirm__noise), }; return cmocka_run_group_tests(tests, setup, tear_down); }