Mock test for keyboardinput and fixed the found issues
This commit is contained in:
parent
2feeb5cbcf
commit
138cba1400
|
@ -219,6 +219,8 @@ IF (CMOCKA_FOUND)
|
|||
|
||||
add_executable(test_keyboardinput test/test_keyboardinput src/keyboardinput src/keyboard)
|
||||
target_link_libraries(test_keyboardinput ${CMOCKA_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
|
||||
set_target_properties(test_keyboardinput PROPERTIES
|
||||
LINK_FLAGS "-Wl,--wrap,keyboard_direction_press -Wl,--wrap,keyboard_press")
|
||||
add_test(test_keyboardinput test_keyboardinput)
|
||||
ENDIF (CMOCKA_FOUND )
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ keyboardinput_handle_event(KeyboardInput *input, SDL_Event *event)
|
|||
}
|
||||
for (int i = SDLK_0; i <= SDLK_9; ++i) {
|
||||
if (keyboard_press(i, event))
|
||||
input->currentState |= (1 << i);
|
||||
input->currentState |= (KEY_NUM0 << (i - SDLK_0));
|
||||
}
|
||||
|
||||
if (keyboard_direction_release(UP, event)) {
|
||||
|
@ -59,7 +59,7 @@ keyboardinput_handle_event(KeyboardInput *input, SDL_Event *event)
|
|||
}
|
||||
for (int i = SDLK_0; i <= SDLK_9; ++i) {
|
||||
if (keyboard_release(i, event))
|
||||
input->currentState &= ~(1 << i);
|
||||
input->currentState &= ~(KEY_NUM0 << (i - SDLK_0));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,13 +22,58 @@
|
|||
#include <setjmp.h>
|
||||
#include <cmocka.h>
|
||||
#include "../src/keyboardinput.h"
|
||||
#include "../src/keyboard.h"
|
||||
|
||||
static KeyboardInput input = { 0, 0 };
|
||||
|
||||
bool __wrap_keyboard_direction_press(Direction, SDL_Event*);
|
||||
bool __wrap_keyboard_press(Uint64, SDL_Event*);
|
||||
|
||||
bool
|
||||
__wrap_keyboard_direction_press(Direction d, SDL_Event *event)
|
||||
{
|
||||
(void) d;
|
||||
(void) event;
|
||||
return mock_type(bool);
|
||||
}
|
||||
|
||||
bool
|
||||
__wrap_keyboard_press(Uint64 key, SDL_Event *event)
|
||||
{
|
||||
(void) key;
|
||||
(void) event;
|
||||
return mock_type(bool);
|
||||
}
|
||||
|
||||
static void
|
||||
test_event_parse(void **state)
|
||||
{
|
||||
(void) state;
|
||||
KeyboardInput input = { 0, 0 };
|
||||
|
||||
will_return(__wrap_keyboard_direction_press, true); // KEY_UP
|
||||
will_return(__wrap_keyboard_press, true); // NUM0
|
||||
will_return(__wrap_keyboard_press, false); // NUM1
|
||||
will_return(__wrap_keyboard_press, false); // NUM2
|
||||
will_return(__wrap_keyboard_press, false); // NUM3
|
||||
will_return(__wrap_keyboard_press, false); // NUM4
|
||||
will_return(__wrap_keyboard_press, false); // NUM5
|
||||
will_return(__wrap_keyboard_press, false); // NUM6
|
||||
will_return(__wrap_keyboard_press, false); // NUM7
|
||||
will_return(__wrap_keyboard_press, false); // NUM8
|
||||
will_return(__wrap_keyboard_press, false); // NUM9
|
||||
|
||||
SDL_Event event;
|
||||
keyboardinput_handle_event(&input, &event);
|
||||
|
||||
assert_true(key_is_pressed(&input, KEY_UP));
|
||||
assert_true(key_is_pressed(&input, KEY_NUM0));
|
||||
}
|
||||
|
||||
static void
|
||||
test_keypress(void **state)
|
||||
{
|
||||
(void) state;
|
||||
KeyboardInput input = { 0, 0 };
|
||||
input.lastState = 0;
|
||||
input.currentState = KEY_UP;
|
||||
assert_true(key_is_pressed(&input, KEY_UP));
|
||||
|
@ -38,6 +83,7 @@ static void
|
|||
test_keyrelease(void **state)
|
||||
{
|
||||
(void) state;
|
||||
KeyboardInput input = { 0, 0 };
|
||||
input.lastState = KEY_UP;
|
||||
input.currentState = 0;
|
||||
assert_true(key_is_released(&input, KEY_UP));
|
||||
|
@ -47,6 +93,7 @@ static void
|
|||
test_keydown(void **state)
|
||||
{
|
||||
(void) state;
|
||||
KeyboardInput input = { 0, 0 };
|
||||
input.currentState = KEY_UP;
|
||||
assert_true(key_is_down(&input, KEY_UP));
|
||||
}
|
||||
|
@ -58,6 +105,7 @@ int main(void)
|
|||
cmocka_unit_test(test_keypress),
|
||||
cmocka_unit_test(test_keyrelease),
|
||||
cmocka_unit_test(test_keydown),
|
||||
cmocka_unit_test(test_event_parse),
|
||||
};
|
||||
|
||||
return cmocka_run_group_tests(tests, NULL, NULL);
|
||||
|
|
Loading…
Reference in New Issue