I have to test a class Bank. I have to check if when two cash machines are not empty, then the average of Bank is the sum of all deposists, (for cash machine 1 and 2) divided by the number of all deposists. I realised the mistake - the getAverageDeposit method in CLASS BANK gets Average of an Average, which I don't want. I want deposits 100,20 (cashmacine1) and 50(cashmachine2) to be added and divided my 3. Could you pls advise how can I fix this? I would appreciate your help, I am just learning.
These are methods in CLASS CASHMACHINE:
public double getAverageAtmsDeposit() {
if (this.transactions.length == 0) {
return 0;}
int count = 0;
double sum = 0;
for (int i = 0; i < this.transactions.length; i++) {
if (this.transactions[i] > 0) {
count++;
sum += this.transactions[i];
}
}
return sum / (double) count;
}
public double getAverageAtmsWithdrawal () {
if (this.transactions.length == 0) {
return 0;}
int count = 0;
double sum = 0;
for (int i = 0; i < this.transactions.length; i++) {
if (this.transactions[i] < 0) {
count++;
sum += this.transactions[i];
}
}
return sum / (double) count;
}
AND THESE ARE METHODS IN CLASS BANK:
public double getAverageDeposit() {
if (this.cashMachines.length == 0) {
return 0;}
int sum=0;
for (int i = 0; i < this.cashMachines.length; i++){
sum += this.cashMachines[i].getDepositCount();
}
return sum/ (double) this.cashMachines.length;
}
public double getAverageWithdrawal(){
if (this.cashMachines.length == 0) {
return 0;}
double sum = 0;
for (int i = 0; i < this.cashMachines.length; i++) {
sum += this.cashMachines[i].getAverageAtmsWithdrawal();
}
return sum/ (double) this.cashMachines.length;
}
TEST:
public void WhenTwoNonEmptyCashMachinesCreated_ThenTheAverageBankDepositAndWithdrawalAreTheSumOfAverageAtmsDepositsAndWithdrawals() {
CashMachine[] cashMachines = new CashMachine[2];
CashMachine cashMachine1 = new CashMachine();
cashMachine1.addTransaction(100);
cashMachine1.addTransaction(20);
cashMachine1.addTransaction(-10);
cashMachine1.addTransaction(-10);
CashMachine cashMachine2 = new CashMachine();
cashMachine2.addTransaction(50);
cashMachine2.addTransaction(-30);
cashMachines[0] = cashMachine1;
cashMachines[1] = cashMachine2;
Bank bank = new Bank(cashMachines);
double avgDeposit = bank.getAverageDeposit();
assertEquals(56.6, avgDeposit, 0.10);
double avgWithdrawal = bank.getAverageWithdrawal();
assertEquals(-16.6, avgWithdrawal,0.01);
}
Aucun commentaire:
Enregistrer un commentaire