#ifdef TEST #include "unity.h" #include "withdrawMoney.h" void setUp(void) { } void tearDown(void) { } void test_initiateWithdraw(void) { /* Arrange */ int length = 10; float amountToWithdraw[] = {200.5, 340, 244.5, 340, 1200, 3232, 1123, 460.5, 900, 1005}; float availableAccountBalance[] = {2000, 3400, 2445, 3400, 6000, 5000, 1000, 2000, 2000, 9000}; float expectedValue[length]; float result[length]; /* Act */ for (int i = 0; i < length; i++) { result[i] = initiateWithdraw( amountToWithdraw[i], availableAccountBalance[i] ); } /* Assert */ for (int i = 0; i < length; i++) { expectedValue[i] = ( availableAccountBalance[i] - amountToWithdraw[i] ); } for (int i = 0; i < length; i++) { TEST_ASSERT_EQUAL_FLOAT(expectedValue[i],result[i]); } } void test_withdrawSpecificAmountSuccess(void) { /* Arrange */ int user_id[3] = {1234, 1327, 1666}; // user_ids from file for testing bool result[3]; /* Act */ for (int i = 0; i < 3; i++) { result[i] = withdrawSpecificAmount(user_id[i], 50); } /* Assert */ for (int i = 0; i < 3; i++) { TEST_ASSERT_TRUE(result[i]); // Pass if withdrawal is successful } } void test_withdrawSpecificAmountFailure(void) { /* Arrange */ int user_id[3] = {12034, 13027, 16606}; // Random wrong user_ids bool result[3]; /* Act */ for (int i = 0; i < 3; i++) { result[i] = withdrawSpecificAmount(user_id[i], 50); } /* Assert */ for (int i = 0; i < 3; i++) { TEST_ASSERT_FALSE(result[i]); // Pass if withdrawal fails and function returns false } } #endif // TEST