Skip to content
Snippets Groups Projects
Commit b0e620d3 authored by Andreas's avatar Andreas
Browse files

Changed ItemOverView to be a superclass for Income and Expense

parent 5afe7e0b
No related branches found
No related tags found
1 merge request!5Created register for storing information on Income and Expense
......@@ -3,72 +3,52 @@ package no.ntnu.idatt1002.demo.data;
import java.util.ArrayList;
/**
* RevenueOverview is a class for storing and getting
* information on your total income and expense.
* ItemOverview is a class for storing and getting
* information on items. Is also a
* superclass for Income- and Expense overview. TODO: Make income and expense overview
*/
public class ItemOverview {
ArrayList<Income> income;
ArrayList<Expense> expense;
ArrayList<Item> items;
/**
* The class constructor.
* An "empty" class constructor.
*/
public ItemOverview(){
this.income = new ArrayList<>(); //ArrayList for storing income
this.expense = new ArrayList<>(); //ArrayList for storing expense
this.items = new ArrayList<>(); //ArrayList for storing item´s
}
/**
* Get an ArrayList of every income.
* @return Income ArrayList.
* Class constructor that takes in an ArrayList of Item´s as argument
* @param items An ArrayList of the Item´s you want to overview
*/
public ArrayList<Income> getIncome() {
return income;
public ItemOverview(ArrayList<Item> items){
this.items = items;
}
/**
* Get an ArrayList of every expense.
* @return Expense ArrayList.
* Get an ArrayList of every item.
* @return item ArrayList.
*/
public ArrayList<Expense> getExpense() {
return expense;
public ArrayList<Item> getItems() {
return items;
}
/**
* Add an Income object to income.
* @param newIncome The Income you want to add.
* Add an Item object to items.
* @param newItem The Item you want to add.
*/
public void addIncome(Income newIncome){
if(income.contains(newIncome)){
throw new IllegalArgumentException("This income is already registered");
public void addItem(Income newItem){
if(items.contains(newItem)){
throw new IllegalArgumentException("This item is already registered");
}
income.add(newIncome);
items.add(newItem);
}
/**
* Add an Expense object to income.
* @param newExpense The Expense you want to add.
* Get the sum of all Item´s in items
* @return Sum of all Item´s
*/
public void addExpense(Expense newExpense){
if(expense.contains(newExpense)){
throw new IllegalArgumentException("This expense is already registered");
}
expense.add(newExpense);
}
/**
* Get the sum of all Income in income.
* @return Sum of all Income.
*/
public double getTotalIncome(){
return income.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
}
/**
* Get the sum of all Expense in expense.
* @return Sum of all Expense.
*/
public double getTotalExpense(){
return expense.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
public double getTotalSum(){
return items.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
}
}
......@@ -4,8 +4,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.*;
public class ItemOverviewTest {
ItemOverview itemOverview;
......@@ -14,38 +13,28 @@ public class ItemOverviewTest {
itemOverview = new ItemOverview();
}
@Test
@DisplayName("addIncome method throws exception when it should")
void addIncomeThrows(){
itemOverview.addIncome(new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
itemOverview.addIncome(new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
@DisplayName("addItem method throws exception when it should")
void addItemThrows(){
Income income = new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23");
assertThrows(IllegalArgumentException.class, () -> {itemOverview.addItem(income); itemOverview.addItem(income);});
}
@Test
@DisplayName("addExpense method throws exception when it should")
void addExpenseThrows(){
itemOverview.addExpense(new Expense("description", 59.9f, false, ExpenseCategory.BOOKS, "03.03.23"));
itemOverview.addExpense(new Expense("description", 59.9f, false, ExpenseCategory.BOOKS, "03.03.23"));
@DisplayName("addItem method does not throw exception when it should not")
void addItemDoesNotThrow(){
Income income1 = new Income("description", 59.9f, false, IncomeCategory.SALARY, "03.03.23");
Income income2 = new Income("anotherDescription", 6.5f, true, IncomeCategory.SALARY, "02.03.23");
assertDoesNotThrow(() -> {itemOverview.addItem(income1); itemOverview.addItem(income2);});
}
@Test
@DisplayName("getTotalIncome method gives correct amount")
@DisplayName("getTotalSum method gives correct amount")
void getTotalIncomeCorrectAmount(){
itemOverview.addIncome(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
itemOverview.addIncome(new Income("description2", 62.4f, true, IncomeCategory.GIFT, "01.02.21"));
itemOverview.addIncome(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
itemOverview.addItem(new Income("description1", 59.9f, false, IncomeCategory.SALARY, "03.03.23"));
itemOverview.addItem(new Income("description2", 62.4f, true, IncomeCategory.GIFT, "01.02.21"));
itemOverview.addItem(new Income("description3", 9.81f, false, IncomeCategory.SALARY, "05.07.23"));
double totalIncome = 59.9f + 62.4f + 9.81f;
assertEquals(Math.round(itemOverview.getTotalIncome()), Math.round(totalIncome));
assertEquals(Math.round(itemOverview.getTotalSum()), Math.round(totalIncome));
}
@Test
@DisplayName("getTotalExpense method gives correct amount")
void getTotalExpenseCorrectAmount(){
itemOverview.addExpense(new Expense("description1", 59.9f, false, ExpenseCategory.BOOKS, "03.03.23"));
itemOverview.addExpense(new Expense("description2", 78.2f, true, ExpenseCategory.FOOD, "03.04.23"));
itemOverview.addExpense(new Expense("description3", 103.5f, true, ExpenseCategory.OTHER, "07.03.23"));
double totalExpense = 59.9f + 78.2f + 103.5f;
assertEquals(Math.round(itemOverview.getTotalExpense()), Math.round(totalExpense));
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment