#include "gamemath/ActionInput.h" #include "unittest/TestSuite.h" static void testIsActionActive(void) { ActionInputState state = ActionInputState_allNeutral; TestCase_assertBoolFalse(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); bool changed = ActionInput_start(&state, 1); TestCase_assertBoolTrue(changed); TestCase_assertBoolFalse(ActionInput_isActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); changed = ActionInput_start(&state, 0); TestCase_assertBoolTrue(changed); TestCase_assertBoolTrue(ActionInput_isActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); changed = ActionInput_start(&state, 0); TestCase_assertBoolFalse(changed); TestCase_assertBoolTrue(ActionInput_isActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); changed = ActionInput_stop(&state, 1); TestCase_assertBoolTrue(changed); TestCase_assertBoolTrue(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); changed = ActionInput_stop(&state, 2); TestCase_assertBoolFalse(changed); TestCase_assertBoolTrue(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); changed = ActionInput_start(&state, 2); TestCase_assertBoolTrue(changed); TestCase_assertBoolTrue(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolTrue(ActionInput_isActive(state, 2)); ActionInput_clear(&state, 0); TestCase_assertBoolFalse(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolTrue(ActionInput_isActive(state, 2)); ActionInput_clear(&state, 2); TestCase_assertBoolFalse(ActionInput_isActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isActive(state, 2)); } static void testIsActionDirty(void) { ActionInputState state = ActionInputState_allNeutral; TestCase_assertBoolFalse(ActionInput_isDirty(state, 0)); TestCase_assertBoolFalse(ActionInput_isDirty(state, 1)); ActionInput_start(&state, 0); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolFalse(ActionInput_isDirty(state, 1)); ActionInput_start(&state, 0); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolFalse(ActionInput_isDirty(state, 1)); ActionInput_start(&state, 1); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_processed(&state, 0); TestCase_assertBoolFalse(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_processed(&state, 0); TestCase_assertBoolFalse(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_start(&state, 0); TestCase_assertBoolFalse(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_stop(&state, 0); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_stop(&state, 1); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolTrue(ActionInput_isDirty(state, 1)); ActionInput_clear(&state, 1); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolFalse(ActionInput_isDirty(state, 1)); ActionInput_stop(&state, 1); TestCase_assertBoolTrue(ActionInput_isDirty(state, 0)); TestCase_assertBoolFalse(ActionInput_isDirty(state, 1)); } static void testNewly(void) { ActionInputState state = ActionInputState_allNeutral; TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_start(&state, 0); TestCase_assertBoolTrue(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_start(&state, 1); TestCase_assertBoolTrue(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_processed(&state, 0); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_start(&state, 0); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_stop(&state, 1); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 1)); ActionInput_stop(&state, 0); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 1)); ActionInput_processed(&state, 1); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_stop(&state, 0); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); ActionInput_stop(&state, 1); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 0)); TestCase_assertBoolTrue(ActionInput_isNewlyInactive(state, 0)); TestCase_assertBoolFalse(ActionInput_isNewlyActive(state, 1)); TestCase_assertBoolFalse(ActionInput_isNewlyInactive(state, 1)); } TEST_SUITE(ActionInputTest, testIsActionActive, testIsActionDirty, testNewly)