From 5a17d7d86803a45dab896ca31d92a4ba8e0d1fa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adele=20Iren=20Westrum=20Kj=C3=B8lstad?= <aikjolst@stud.ntnu.no> Date: Wed, 22 Mar 2023 11:04:14 +0100 Subject: [PATCH] Add tests and some exception handling for GeneralBudget --- .../demo/data/Budget/GeneralBudget.java | 8 +- .../demo/data/Budget/FoodBudgetTest.java | 85 ---------------- .../demo/data/Budget/GeneralBudgetTest.java | 99 +++++++++++++++++++ 3 files changed, 106 insertions(+), 86 deletions(-) delete mode 100644 src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java create mode 100644 src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java index b1b86156..d5965fae 100644 --- a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java +++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudget.java @@ -29,10 +29,16 @@ public class GeneralBudget { * */ public GeneralBudget(int budgetPeriod, List<BudgetItem> listOfItems, double maxAmount){ + if (budgetPeriod < 0) { + throw new IllegalArgumentException("The period cant be under zero days"); + } + + if (maxAmount < 0) { + throw new IllegalArgumentException("The maxamount of the budget cant be under zero"); + } this.budgetPeriod = budgetPeriod; this.maxAmount = maxAmount; this.listOfItems = listOfItems; - } /** diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java deleted file mode 100644 index 22503bb9..00000000 --- a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package no.ntnu.idatt1002.demo.data.Budget; - -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; - -class FoodBudgetTest { - - @Test - void set_amount_budget() { - FoodBudget foodBudget = new FoodBudget(30, 0); - int amount = 2000; - foodBudget.setAmountBudget(amount); - - assertEquals(amount, foodBudget.getBudgetAmount()); - } - - @Test - void set_amount_budget_negativ_amount() { - FoodBudget foodBudget = new FoodBudget(30, 0); - int amount = -2000; - - assertThrows(IllegalArgumentException.class, () -> foodBudget.setAmountBudget(amount)); - } - - @Test - void set_budget_period() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int period = 30; - foodBudget.setBudgetPeriod(period); - - assertEquals(period,foodBudget.getBudgetPeriod()); - } - - @Test - void set_budget_period_negative_period() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int period = -5; - - assertThrows(IllegalArgumentException.class, () -> foodBudget.setBudgetPeriod(period)); - } - - @Test - void add_to_budget_positive_number() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int beforeAdding = foodBudget.getBudgetAmount(); - int amountToBeAdded = 50; - foodBudget.addToBudget(amountToBeAdded); - - assertEquals(beforeAdding + amountToBeAdded, foodBudget.getBudgetAmount()); - - } - - @Test - void add_to_budget_negative_number() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int amountToBeAdded = -7; - - assertThrows(IllegalArgumentException.class, () -> foodBudget.addToBudget(amountToBeAdded)); - } - - @Test - void subtract_from_budget_positive_number() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int beforeSubtracting = foodBudget.getBudgetAmount(); - int amountToBeSubtracted = 50; - foodBudget.subtractFromBudget(amountToBeSubtracted); - - assertEquals(beforeSubtracting - amountToBeSubtracted, foodBudget.getBudgetAmount()); - } - - @Test - void subtract_from_budget_negative_number() { - FoodBudget foodBudget = new FoodBudget(0, 30); - int amountToBeSubtracted = -7; - - assertThrows(IllegalArgumentException.class, () -> foodBudget.subtractFromBudget(amountToBeSubtracted)); - } - - @Test - void getDaysLeftOfBudgetPeriod(){ - - } - -} \ No newline at end of file diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java new file mode 100644 index 00000000..52b1a98e --- /dev/null +++ b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/GeneralBudgetTest.java @@ -0,0 +1,99 @@ +package no.ntnu.idatt1002.demo.data.Budget; + +import no.ntnu.idatt1002.demo.data.Economics.ExpenseCategory; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; +import static org.junit.jupiter.api.Assertions.*; + +class GeneralBudgetTest { + @Test + @DisplayName("Constructor throws exception when the periodAmount is under zero") + void constructor_throws_exception_when_periodAmount_under_zero(){ + List<BudgetItem> list = new ArrayList<>(); + + assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(-1, list, 1200)); + } + + @Test + @DisplayName("Constructor throws exception when maxAmount is under zero") + void constructor_throws_exception_when_maxAmount_under_zero(){ + List<BudgetItem> list = new ArrayList<>(); + + assertThrows(IllegalArgumentException.class, () -> new GeneralBudget(10, list, -12)); + } + + @Test + @DisplayName("AddToBudget throws when totalSum is higher than maxAmount ") + void add_to_budget_throws_when_totalSum_is_over_maxAmount(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + + assertThrows(IllegalArgumentException.class, () -> budget1.addToBudget(1300, "Food", ExpenseCategory.FOOD)); + } + + @Test + @DisplayName("addToBudget throws when a budget with same category already exists") + void add_to_budget_throws_when_a_budget_with_same_category_already_exists(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + budget1.addToBudget(500, "Food", ExpenseCategory.FOOD); + + assertThrows(IllegalArgumentException.class, () -> budget1.addToBudget(200, "Food", ExpenseCategory.FOOD)); + } + + @Test + @DisplayName("Adds a budget to generalBudget") + void add_budget_to_generalBudget(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + BudgetItem item1 = new BudgetItem(500, "Food", ExpenseCategory.FOOD); + budget1.addToBudget(500, "Food", ExpenseCategory.FOOD); + + assertEquals(1, list.size()); + } + + @Test + @DisplayName("Checks if the list contains a item with a given category") + void checks_if_the_list_contains_an_item_with_this_category_true(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + budget1.addToBudget(500, "Food", ExpenseCategory.FOOD); + + assertTrue(budget1.checksListOfItemsContainsBudgetItem(ExpenseCategory.FOOD)); + } + + @Test + @DisplayName("checks that the list does not contain an item with the given category") + void checks_if_the_list_contains_an_item_with_this_category_false(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + budget1.addToBudget(500, "Books", ExpenseCategory.BOOKS); + + assertFalse(budget1.checksListOfItemsContainsBudgetItem(ExpenseCategory.FOOD)); + } + + @Test + @DisplayName("Checks that the getTotalSum gives the correct number") + void get_total_sum_of_all_budgetItems_in_the_budget(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + budget1.addToBudget(500, "Books", ExpenseCategory.BOOKS); + budget1.addToBudget(300, "Food", ExpenseCategory.FOOD); + + assertEquals(800, budget1.totalSum()); + } + + @Test + @DisplayName("Checks that an item gets deleted from the budget") + void delete_from_budget(){ + List<BudgetItem> list = new ArrayList<>(); + GeneralBudget budget1 = new GeneralBudget(12, list, 1200); + budget1.addToBudget(500, "Books", ExpenseCategory.BOOKS); + budget1.deleteItemFromBudget(ExpenseCategory.BOOKS); + + assertTrue(list.isEmpty()); + } +} \ No newline at end of file -- GitLab