Browse Source

Integrate required functions to make deposit work as intended

remotes/origin/feature/loan-eligibility
fdlt3817 2 years ago
parent
commit
888b2fc4ea
  1. 1
      build/test/cache/defines_dependency.yml
  2. 242
      build/test/cache/input.yml
  3. 299
      build/test/cache/test_mainMenu.c
  4. 1
      build/test/cache/test_updateCustomerAccountBalance.c
  5. 6
      build/test/dependencies/cmock.d
  6. 0
      build/test/dependencies/force_build
  7. 1
      build/test/dependencies/mainMenu.d
  8. 4
      build/test/dependencies/test_mainMenu.d
  9. 4
      build/test/dependencies/test_mainMenu_runner.d
  10. 2
      build/test/dependencies/test_updateCustomerAccountBalance.d
  11. 4
      build/test/dependencies/test_updateCustomerAccountBalance_runner.d
  12. 4
      build/test/dependencies/unity.d
  13. BIN
      build/test/out/c/cmock.o
  14. BIN
      build/test/out/c/mainMenu.o
  15. BIN
      build/test/out/c/test_mainMenu.o
  16. BIN
      build/test/out/c/test_mainMenu_runner.o
  17. BIN
      build/test/out/c/test_updateCustomerAccountBalance.o
  18. BIN
      build/test/out/c/test_updateCustomerAccountBalance_runner.o
  19. BIN
      build/test/out/c/unity.o
  20. BIN
      build/test/out/test_mainMenu.out
  21. BIN
      build/test/out/test_updateCustomerAccountBalance.out
  22. 299
      build/test/preprocess/files/test_mainMenu.c
  23. 1
      build/test/preprocess/files/test_updateCustomerAccountBalance.c
  24. 3
      build/test/preprocess/includes/test_mainMenu.c
  25. 1
      build/test/preprocess/includes/test_updateCustomerAccountBalance.c
  26. 30
      build/test/results/test_mainMenu.pass
  27. 14
      build/test/results/test_updateCustomerAccountBalance.pass
  28. 57
      build/test/runners/test_mainMenu_runner.c
  29. 4
      src/CustomerData.txt
  30. 4
      src/_file_information.h
  31. 10
      src/depositMoney.c
  32. BIN
      src/depositMoney.dSYM/Contents/Resources/DWARF/depositMoney
  33. 5
      src/depositMoney.h
  34. 58
      src/updateCustomerAccountBalance.c
  35. BIN
      src/updateCustomerAccountBalance.dSYM/Contents/Resources/DWARF/updateCustomerAccountBalance
  36. 3
      src/updateCustomerAccountBalance.h

1
build/test/cache/defines_dependency.yml

@ -1 +0,0 @@
--- {}

242
build/test/cache/input.yml

@ -1,242 +0,0 @@
---
:project:
:use_exceptions: false
:use_mocks: true
:compile_threads: 1
:test_threads: 1
:use_test_preprocessor: true
:use_preprocessor_directives: false
:use_deep_dependencies: false
:generate_deep_dependencies: true
:auto_link_deep_dependencies: false
:test_file_prefix: test_
:options_paths: []
:release_build: false
:use_auxiliary_dependencies: true
:build_root: build
:which_ceedling: gem
:ceedling_version: 0.31.1
:default_tasks:
- test:all
:release_build:
:use_assembly: false
:artifacts: []
:paths:
:test:
- "+:tests/**"
- "-:tests/support"
:source:
- src/**
:support:
- tests/support
:include: []
:libraries: []
:test_toolchain_include: []
:release_toolchain_include: []
:files:
:test: []
:source: []
:assembly: []
:support: []
:include: []
:environment:
- :rake_columns: '120'
:defines:
:test:
- &1 []
- TEST
:test_preprocess:
- *1
- TEST
:release: []
:release_preprocess: []
:use_test_definition: false
:common: []
:libraries:
:flag: "-l${1}"
:path_flag: "-L ${1}"
:test: []
:test_preprocess: []
:release: []
:release_preprocess: []
:placement: :end
:system: []
:flags: {}
:extension:
:header: ".h"
:source: ".c"
:assembly: ".s"
:object: ".o"
:libraries:
- ".a"
- ".so"
:executable: ".out"
:map: ".map"
:list: ".lst"
:testpass: ".pass"
:testfail: ".fail"
:dependencies: ".d"
:unity:
:vendor_path: "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor"
:defines: []
:cmock:
:vendor_path: "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor"
:defines: []
:includes: []
:mock_prefix: mock_
:when_no_prototypes: :warn
:enforce_strict_ordering: true
:plugins:
- :ignore
- :callback
:treat_as:
uint8: HEX8
uint16: HEX16
uint32: UINT32
int8: INT8
bool: UINT8
:mock_path: build/test/mocks
:verbosity: 3
:unity_helper: false
:cexception:
:vendor_path: "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor"
:defines: []
:test_runner:
:includes: []
:file_suffix: _runner
:tools:
:test_compiler:
:executable: gcc
:name: default_test_compiler
:stderr_redirect: :none
:background_exec: :none
:optional: false
:arguments:
- ''
- ''
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR
- "-DGNU_COMPILER"
- "-g"
- ''
- -c "${1}"
- -o "${2}"
- "-MMD"
- -MF "${4}"
:test_fixture:
:executable: "${1}"
:name: default_test_fixture
:stderr_redirect: :auto
:background_exec: :none
:optional: false
:arguments: []
:test_linker:
:executable: gcc
:name: default_test_linker
:stderr_redirect: :none
:background_exec: :none
:optional: false
:arguments:
- ''
- ''
- ''
- '"${1}"'
- "${5}"
- -o "${2}"
- ''
- "${4}"
- ''
:test_file_preprocessor:
:executable: gcc
:name: default_test_file_preprocessor
:stderr_redirect: :none
:background_exec: :none
:optional: false
:arguments:
- ''
- ''
- "-E"
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR
- "-D$": DEFINES_TEST_PREPROCESS
- "-DGNU_COMPILER"
- '"${1}"'
- -o "${2}"
:test_file_preprocessor_directives:
:executable: gcc
:name: default_test_file_preprocessor_directives
:stderr_redirect: :none
:background_exec: :none
:optional: false
:arguments:
- "-E"
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR
- "-D$": DEFINES_TEST_PREPROCESS
- "-DGNU_COMPILER"
- "-fdirectives-only"
- '"${1}"'
- -o "${2}"
:test_includes_preprocessor:
:executable: gcc
:name: default_test_includes_preprocessor
:stderr_redirect: :none
:background_exec: :none
:optional: false
:arguments:
- ''
- ''
- "-E"
- "-MM"
- "-MG"
- -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE
- "-D$": COLLECTION_DEFINES_TEST_AND_VENDOR
- "-D$": DEFINES_TEST_PREPROCESS
- "-DGNU_COMPILER"
- '"${1}"'
:test_compiler:
:arguments: []
:test_linker:
:arguments: []
:test_fixture:
:arguments: []
:link_objects: []
:test_includes_preprocessor:
:arguments: []
:test_file_preprocessor:
:arguments: []
:test_file_preprocessor_directives:
:arguments: []
:test_dependencies_generator:
:arguments: []
:release_compiler:
:arguments: []
:release_linker:
:arguments: []
:release_assembler:
:arguments: []
:release_dependencies_generator:
:arguments: []
:plugins:
:load_paths:
- "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/lib/../plugins"
:enabled:
- stdout_pretty_tests_report
- module_generator
:display_raw_test_results: false
:stdout_pretty_tests_report_path: "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/lib/../plugins/stdout_pretty_tests_report"
:module_generator_path: "/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/lib/../plugins/module_generator"
:gcov:
:reports:
- HtmlDetailed
:gcovr:
:html_medium_threshold: 75
:html_high_threshold: 90
:module_generator:
:project_root: "./"
:source_root: src/
:test_root: test/

299
build/test/cache/test_mainMenu.c

@ -1,299 +0,0 @@
#include "src/mainMenu.h"
#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void setUp(void)
{
}
void tearDown(void)
{
}
void test_agePermissionValidAge(void)
{
int validAge[83];
_Bool
validAgeResult[83];
int j=0;
for(int i =18;i<101;i++){
validAge[j]= i;
j++;
}
for(int i=0;i<83;i++){
validAgeResult[i] = agePermission(validAge[i]);
}
for(int i=0;i<83;i++){
do {if ((validAgeResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(44)));}} while(0);
}
}
void test_agePermissionInvalidAge(void)
{
int invalidAge[117];
_Bool
invalidAgeResult[117];
int j=0;
for(int i =-100;i<18;i++){
invalidAge[j]= i;
j++;
}
for(int i=0;i<117;i++){
invalidAgeResult[i] = agePermission(invalidAge[i]);
}
for(int i=0;i<117;i++){
do {if (!(invalidAgeResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(81)));}} while(0);
}
}
void test_IsInteger(void)
{
char* inputIsInteger[] = {"-10000000","-2000000","-354698","-66667","-7878","-987","-64","-5","0","1","2","10","201","333","4321","56974","698751","7878989","88954621" };
_Bool
inputIsIntegerResult[19];
for(int i=0;i<19;i++)
{
inputIsIntegerResult[i] = checkIfInteger(inputIsInteger[i]);
}
for(int i=0;i<19;i++)
{
do {if ((inputIsIntegerResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(110)));}} while(0);
}
}
void test_IsNotInteger(void)
{
char* inputIsNotInteger[] = {"0.15","3.141592653589793238","5.3254f","-6.264","-7878.3261","foo","Bar","FIZZ","buzZ","joHN","jAnE","foo-bar","3,15","2k13",""," ","-","+","/*-+.,/=" };
_Bool
inputIsNotIntegerResult[19];
for(int i=0;i<19;i++)
{
inputIsNotIntegerResult[i] = checkIfInteger(inputIsNotInteger[i]);
}
for(int i=0;i<19;i++)
{
do {if (!(inputIsNotIntegerResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(139)));}} while(0);
}
}

1
build/test/cache/test_updateCustomerAccountBalance.c

@ -1 +0,0 @@

6
build/test/dependencies/cmock.d

@ -1,6 +0,0 @@
build/test/out/c/cmock.o: \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.c \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock.h \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/cmock/src/cmock_internals.h \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h

0
build/test/dependencies/force_build

1
build/test/dependencies/mainMenu.d

@ -1 +0,0 @@
build/test/out/c/mainMenu.o: src/mainMenu.c src/mainMenu.h

4
build/test/dependencies/test_mainMenu.d

@ -1,4 +0,0 @@
build/test/out/c/test_mainMenu.o: tests/test_mainMenu.c \
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \
src/mainMenu.h

4
build/test/dependencies/test_mainMenu_runner.d

@ -1,4 +0,0 @@
build/test/out/c/test_mainMenu_runner.o: \
build/test/runners/test_mainMenu_runner.c \
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h

2
build/test/dependencies/test_updateCustomerAccountBalance.d

@ -1,2 +0,0 @@
build/test/out/c/test_updateCustomerAccountBalance.o: \
tests/test_updateCustomerAccountBalance.c

4
build/test/dependencies/test_updateCustomerAccountBalance_runner.d

@ -1,4 +0,0 @@
build/test/out/c/test_updateCustomerAccountBalance_runner.o: \
build/test/runners/test_updateCustomerAccountBalance_runner.c \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h

4
build/test/dependencies/unity.d

@ -1,4 +0,0 @@
build/test/out/c/unity.o: \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity.c \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \
/Library/Ruby/Gems/2.6.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h

BIN
build/test/out/c/cmock.o

BIN
build/test/out/c/mainMenu.o

BIN
build/test/out/c/test_mainMenu.o

BIN
build/test/out/c/test_mainMenu_runner.o

BIN
build/test/out/c/test_updateCustomerAccountBalance.o

BIN
build/test/out/c/test_updateCustomerAccountBalance_runner.o

BIN
build/test/out/c/unity.o

BIN
build/test/out/test_mainMenu.out

BIN
build/test/out/test_updateCustomerAccountBalance.out

299
build/test/preprocess/files/test_mainMenu.c

@ -1,299 +0,0 @@
#include "src/mainMenu.h"
#include "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
void setUp(void)
{
}
void tearDown(void)
{
}
void test_agePermissionValidAge(void)
{
int validAge[83];
_Bool
validAgeResult[83];
int j=0;
for(int i =18;i<101;i++){
validAge[j]= i;
j++;
}
for(int i=0;i<83;i++){
validAgeResult[i] = agePermission(validAge[i]);
}
for(int i=0;i<83;i++){
do {if ((validAgeResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(44)));}} while(0);
}
}
void test_agePermissionInvalidAge(void)
{
int invalidAge[117];
_Bool
invalidAgeResult[117];
int j=0;
for(int i =-100;i<18;i++){
invalidAge[j]= i;
j++;
}
for(int i=0;i<117;i++){
invalidAgeResult[i] = agePermission(invalidAge[i]);
}
for(int i=0;i<117;i++){
do {if (!(invalidAgeResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(81)));}} while(0);
}
}
void test_IsInteger(void)
{
char* inputIsInteger[] = {"-10000000","-2000000","-354698","-66667","-7878","-987","-64","-5","0","1","2","10","201","333","4321","56974","698751","7878989","88954621" };
_Bool
inputIsIntegerResult[19];
for(int i=0;i<19;i++)
{
inputIsIntegerResult[i] = checkIfInteger(inputIsInteger[i]);
}
for(int i=0;i<19;i++)
{
do {if ((inputIsIntegerResult[i])) {} else {UnityFail( ((" Expected TRUE Was FALSE")), (UNITY_UINT)((UNITY_UINT)(110)));}} while(0);
}
}
void test_IsNotInteger(void)
{
char* inputIsNotInteger[] = {"0.15","3.141592653589793238","5.3254f","-6.264","-7878.3261","foo","Bar","FIZZ","buzZ","joHN","jAnE","foo-bar","3,15","2k13",""," ","-","+","/*-+.,/=" };
_Bool
inputIsNotIntegerResult[19];
for(int i=0;i<19;i++)
{
inputIsNotIntegerResult[i] = checkIfInteger(inputIsNotInteger[i]);
}
for(int i=0;i<19;i++)
{
do {if (!(inputIsNotIntegerResult[i])) {} else {UnityFail( ((" Expected FALSE Was TRUE")), (UNITY_UINT)((UNITY_UINT)(139)));}} while(0);
}
}

1
build/test/preprocess/files/test_updateCustomerAccountBalance.c

@ -1 +0,0 @@

3
build/test/preprocess/includes/test_mainMenu.c

@ -1,3 +0,0 @@
---
- "/var/lib/gems/3.0.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h"
- src/mainMenu.h

1
build/test/preprocess/includes/test_updateCustomerAccountBalance.c

@ -1 +0,0 @@
--- []

30
build/test/results/test_mainMenu.pass

@ -1,30 +0,0 @@
---
:source:
:path: tests
:file: test_mainMenu.c
:successes:
- :test: test_agePermissionValidAge
:line: 15
:message: ''
:unity_test_time: 0
- :test: test_agePermissionInvalidAge
:line: 50
:message: ''
:unity_test_time: 0
- :test: test_IsInteger
:line: 87
:message: ''
:unity_test_time: 0
- :test: test_IsNotInteger
:line: 116
:message: ''
:unity_test_time: 0
:failures: []
:ignores: []
:counts:
:total: 4
:passed: 4
:failed: 0
:ignored: 0
:stdout: []
:time: 0.0009556771256029606

14
build/test/results/test_updateCustomerAccountBalance.pass

@ -1,14 +0,0 @@
---
:source:
:path: tests
:file: test_updateCustomerAccountBalance.c
:successes: []
:failures: []
:ignores: []
:counts:
:total: 0
:passed: 0
:failed: 0
:ignored: 0
:stdout: []
:time: 0.006540999980643392

57
build/test/runners/test_mainMenu_runner.c

@ -1,57 +0,0 @@
/* AUTOGENERATED FILE. DO NOT EDIT. */
/*=======Automagically Detected Files To Include=====*/
#include "unity.h"
int GlobalExpectCount;
int GlobalVerifyOrder;
char* GlobalOrderError;
/*=======External Functions This Runner Calls=====*/
extern void setUp(void);
extern void tearDown(void);
/*=======Mock Management=====*/
static void CMock_Init(void)
{
GlobalExpectCount = 0;
GlobalVerifyOrder = 0;
GlobalOrderError = NULL;
}
static void CMock_Verify(void)
{
}
static void CMock_Destroy(void)
{
}
/*=======Setup (stub)=====*/
void setUp(void) {}
/*=======Teardown (stub)=====*/
void tearDown(void) {}
/*=======Test Reset Options=====*/
void resetTest(void);
void resetTest(void)
{
tearDown();
CMock_Verify();
CMock_Destroy();
CMock_Init();
setUp();
}
void verifyTest(void);
void verifyTest(void)
{
CMock_Verify();
}
/*=======MAIN=====*/
int main(void)
{
UnityBegin("test_updateCustomerAccountBalance.c");
return UnityEnd();
}

4
src/CustomerData.txt

@ -3,14 +3,14 @@ ID=1234
forename=Max forename=Max
Surname=Mustermann Surname=Mustermann
password=example password=example
balance=5000
balance=2390
1327=example 1327=example
ID=1327 ID=1327
forename=Max forename=Max
Surname=Mustermann Surname=Mustermann
password=example password=example
balance=1500
balance=70
1666=example 1666=example
ID=1666 ID=1666

4
src/_file_information.h

@ -1,2 +1,2 @@
#define MAX_LENGTH 100
#define CUSTOMER_DATA_FILE "src/CustomerData.txt"
#define MAX_LENGTH 200
#define CUSTOMER_DATA_FILE "CustomerData.txt"

10
src/depositMoney.c

@ -31,8 +31,7 @@ bool depositMoney(int customerID){
scanf("%f", &amountToDeposit); scanf("%f", &amountToDeposit);
if(amountToDeposit>0 && amountToDeposit>MINIMUM_DEPOSIT_AMOUNT){ if(amountToDeposit>0 && amountToDeposit>MINIMUM_DEPOSIT_AMOUNT){
//InitiateDepositMoney(amountToDeposit,availableAccountBalance);
if(updateAvailableAccountBalance(customerID, availableAccountBalance+amountToDeposit)==0){
if(updateAvailableAccountBalance(customerID, availableAccountBalance+amountToDeposit)){
printf("\nYou have successfully deposited %.2f. New account balance is %.2f", amountToDeposit, availableAccountBalance+amountToDeposit); printf("\nYou have successfully deposited %.2f. New account balance is %.2f", amountToDeposit, availableAccountBalance+amountToDeposit);
askToTryAgain(false,customerID); askToTryAgain(false,customerID);
return true; return true;
@ -51,3 +50,10 @@ bool depositMoney(int customerID){
} }
return false; return false;
} }
/*
int main(){
depositMoney(1234);
return 0;
}
*/

BIN
src/depositMoney.dSYM/Contents/Resources/DWARF/depositMoney

5
src/depositMoney.h

@ -4,6 +4,5 @@
#define MINIMUM_DEPOSIT_AMOUNT 5 #define MINIMUM_DEPOSIT_AMOUNT 5
int InitiateDepositMoney(float amountToDeposit, float availableAccountBalance);
int DepositMoney(int customerID);
void AskToTryAgain(bool afterError, int customerID);
bool depositMoney(int customerID);
void askToTryAgain(bool afterError, int customerID);

58
src/updateCustomerAccountBalance.c

@ -1,6 +1,29 @@
#include "updateCustomerAccountBalance.h" #include "updateCustomerAccountBalance.h"
#include "currentCustomerAccountBalance.c" #include "currentCustomerAccountBalance.c"
#include "lineReplacer.h" #include "lineReplacer.h"
#include "_file_information.h"
void troubleShoot(int errorCode){
printf("Error! The requested operation was terminated because of an issue. Here are some details about the error:\n---------------\n");
switch(errorCode){
case 0:
printf("Requested file could not be opened. Are you sure it exists?");
break;
case 1:
printf("A temporary file could not be generated. Are you sure the bank management system has the required authorization to create new files?");
break;
case 2:
printf("Replacement of the old file failed. Are you sure the bank management system has the required authorization to delete files?");
break;
case 3:
printf("Renaming of a file failed. Are you sure the bank management system has the required authorization to rename files?");
break;
case 4:
printf("Could not find the customer. Please contact customer support.");
break;
}
}
void replaceLineInFile(const char* file_name, int line, const char* new_line){ void replaceLineInFile(const char* file_name, int line, const char* new_line){
FILE* file = fopen(file_name, "r"); FILE* file = fopen(file_name, "r");
@ -41,13 +64,12 @@ void replaceBalanceInString(float replacementBalance, int currentLine) {
char balance_as_string[MAX_LENGTH]; char balance_as_string[MAX_LENGTH];
sprintf(balance_as_string, "%g", replacementBalance); //converts replacement balance to string sprintf(balance_as_string, "%g", replacementBalance); //converts replacement balance to string
strcat(newBalanceLine, balance_as_string); strcat(newBalanceLine, balance_as_string);
replaceLineInFile("CustomerData.txt",currentLine,newBalanceLine);
replaceLineInFile(CUSTOMER_DATA_FILE,currentLine,newBalanceLine);
} }
bool updateAvailableAccountBalance(int user_id, float newBalance){ bool updateAvailableAccountBalance(int user_id, float newBalance){
bool keep_reading = true; bool keep_reading = true;
bool customer_found=false;
char buffer[MAX_LENGTH]; char buffer[MAX_LENGTH];
char stringID[MAX_LENGTH] = "ID="; char stringID[MAX_LENGTH] = "ID=";
char user_id_as_string[MAX_LENGTH]; char user_id_as_string[MAX_LENGTH];
@ -57,8 +79,11 @@ bool updateAvailableAccountBalance(int user_id, float newBalance){
sprintf(user_id_as_string, "%d", user_id); // converts user_id to string sprintf(user_id_as_string, "%d", user_id); // converts user_id to string
strcat(stringID, user_id_as_string); strcat(stringID, user_id_as_string);
FILE *file = fopen("CustomerData.txt", "r+");
printf(stringID);
FILE *file = fopen(CUSTOMER_DATA_FILE, "r+");
if (file == NULL) {
printf("Error: Could not open file CustomerData.txt\n");
return false;
}
while(keep_reading) { while(keep_reading) {
fgets(buffer, MAX_LENGTH, file); fgets(buffer, MAX_LENGTH, file);
currentLine++; currentLine++;
@ -66,16 +91,33 @@ bool updateAvailableAccountBalance(int user_id, float newBalance){
keep_reading = false; keep_reading = false;
} }
else if(strstr(buffer, stringID)) { //found the customer else if(strstr(buffer, stringID)) { //found the customer
for (int i = 0; i < 4; i++) {
fgets(buffer, MAX_LENGTH, file); fgets(buffer, MAX_LENGTH, file);
fgets(buffer, MAX_LENGTH, file);
fgets(buffer, MAX_LENGTH, file);
fgets(buffer, MAX_LENGTH, file);
}
strcpy(balance_String, buffer); strcpy(balance_String, buffer);
currentLine+=4; currentLine+=4;
keep_reading = false; keep_reading = false;
customer_found=true;
} }
} }
fclose(file);; fclose(file);;
if(customer_found){
replaceBalanceInString(newBalance,currentLine); replaceBalanceInString(newBalance,currentLine);
return true;
}
return false;
}
//traditional testing section
/*
int main(int argc, char *argv[])
{
updateAvailableAccountBalance(1327,70);
return 0;
} }
*/

BIN
src/updateCustomerAccountBalance.dSYM/Contents/Resources/DWARF/updateCustomerAccountBalance

3
src/updateCustomerAccountBalance.h

@ -3,9 +3,8 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#define MAX_LENGTH 100
float updateAvailableAccountBalance(int user_id, float newBalance);
bool updateAvailableAccountBalance(int user_id, float newBalance);
void replaceBalanceInString(float replacementBalance, int currentLine); void replaceBalanceInString(float replacementBalance, int currentLine);
Loading…
Cancel
Save