refactoring; finishing integration of CMocka; several test cases covered
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# ---/ create_user /-------------------------------------------------
|
||||
|
||||
add_executable(create_user
|
||||
create_user.c
|
||||
)
|
||||
|
||||
target_link_libraries(create_user
|
||||
cmocka
|
||||
user
|
||||
main
|
||||
db
|
||||
)
|
||||
|
||||
target_link_options(create_user PRIVATE -Wl,--wrap=db_user_create,--wrap=session_send_string)
|
||||
|
||||
add_test(NAME user_test_1 COMMAND create_user)
|
||||
|
||||
# ---/ db_user_create /-------------------------------------------------
|
||||
|
||||
add_executable(db_user_create
|
||||
db_user_create.c
|
||||
)
|
||||
|
||||
target_link_libraries(db_user_create
|
||||
cmocka
|
||||
user
|
||||
main
|
||||
db
|
||||
)
|
||||
|
||||
target_link_options(db_user_create PRIVATE -Wl,--wrap=db_user_create,--wrap=session_send_string)
|
||||
|
||||
add_test(NAME user_test_2 COMMAND db_user_create)
|
||||
@@ -0,0 +1,55 @@
|
||||
#include <cmocka.h>
|
||||
#include <db/db.h>
|
||||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <main.h>
|
||||
#include <string.h>
|
||||
#include <user.h>
|
||||
|
||||
#define UNAME "test_user"
|
||||
#define PASS "1234"
|
||||
#define EMAIL "test_user@test.com"
|
||||
|
||||
int32_t __wrap_db_user_create(i_db_user_create *args) { return mock_type(int); }
|
||||
|
||||
void __wrap_session_send_string(struct session *sess, const char *fmt, ...) {}
|
||||
|
||||
/* TODO: divide into separate cases and check messages */
|
||||
|
||||
void test_create_user(void **state) {
|
||||
session sess = {};
|
||||
i_db_user_create p;
|
||||
int32_t ret = 0;
|
||||
char line[sizeof "register" + sizeof UNAME + sizeof PASS + sizeof EMAIL + 5];
|
||||
sprintf(line, "register %s %s %s\n", UNAME, PASS, EMAIL);
|
||||
/* Case: success */
|
||||
will_return(__wrap_db_user_create, 123);
|
||||
ret = create_user(&sess, line);
|
||||
assert_int_equal(ret, 123);
|
||||
/* Case: username exist */
|
||||
will_return(__wrap_db_user_create, -2);
|
||||
ret = create_user(&sess, line);
|
||||
assert_int_equal(ret, -2);
|
||||
/* Case: email exist */
|
||||
will_return(__wrap_db_user_create, -3);
|
||||
ret = create_user(&sess, line);
|
||||
assert_int_equal(ret, -3);
|
||||
/* Case: error */
|
||||
will_return(__wrap_db_user_create, -4);
|
||||
ret = create_user(&sess, line);
|
||||
assert_int_equal(ret, -4);
|
||||
}
|
||||
|
||||
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_create_user)};
|
||||
|
||||
return cmocka_run_group_tests(tests, setup, tear_down);
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
#include <cmocka.h>
|
||||
#include <db/db.h>
|
||||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <main.h>
|
||||
#include <string.h>
|
||||
#include <user.h>
|
||||
|
||||
#define UNAME "test_user"
|
||||
#define PASS "1234"
|
||||
#define EMAIL "test_user@test.com"
|
||||
|
||||
void __wrap_session_send_string(struct session *sess, const char *fmt, ...) {}
|
||||
|
||||
int32_t __wrap_db_user_create(i_db_user_create *args) {
|
||||
assert_memory_equal(args->uname, UNAME, strlen(args->uname));
|
||||
assert_memory_equal(args->pass, PASS, strlen(args->pass));
|
||||
assert_memory_equal(args->email, EMAIL, strlen(args->email));
|
||||
return mock_type(int);
|
||||
}
|
||||
|
||||
void test_create_user(void **state) {
|
||||
session sess = {};
|
||||
i_db_user_create p;
|
||||
int32_t ret = 0;
|
||||
char line[sizeof "register" + sizeof UNAME + sizeof PASS + sizeof EMAIL + 5];
|
||||
sprintf(line, "register %s %s %s\n", UNAME, PASS, EMAIL);
|
||||
will_return(__wrap_db_user_create, 123);
|
||||
ret = create_user(&sess, line);
|
||||
assert_int_equal(ret, 123);
|
||||
}
|
||||
|
||||
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_create_user)};
|
||||
|
||||
return cmocka_run_group_tests(tests, setup, tear_down);
|
||||
}
|
||||
Reference in New Issue
Block a user