Skip to content
Snippets Groups Projects
Commit 305f22e8 authored by Adele Iren Westrum Kjølstad's avatar Adele Iren Westrum Kjølstad
Browse files

Created and implemented FoodBudget

parent bf540de7
No related branches found
No related tags found
1 merge request!11Budget
package no.ntnu.idatt1002.demo.data.Budget;
import java.sql.Date;
import java.time.Duration;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.util.Calendar;
/**
* Class that represents FoodBudget and implements the Budget interface.
*
* @author Adele
*/
public class FoodBudget implements Budget {
private int budgetAmount;
private int budgetPeriod;
/**
* The constructor of a new FoodBudget.
*
* @param budgetPeriod The period the budget are going to last for
* @param budgetAmount The amount that the budget consist of
*
*/
public FoodBudget(int budgetPeriod, int budgetAmount){
this.budgetPeriod = budgetPeriod;
this.budgetAmount = budgetAmount;
}
/**
* This method returns the amount in the foodBudget as an int
*
* @return the amount left in the foodBudget
*
*/
public int getBudgetAmount() {
return budgetAmount;
}
/**
*
* @return
*
*/
public int getBudgetPeriod() {
return budgetPeriod;
}
/**
* This method returns the amount of days left in the period as a string
*
* @return
*
*/
public long getDaysLeftOfBudgetPeriod() {
LocalDate today = LocalDate.now();
LocalDate end = today.plus(Duration.ofDays(getBudgetPeriod()));
Date todaysDate = (Date) Date.from(today.atStartOfDay(ZoneId.systemDefault()).toInstant());
Date endDate = (Date) Date.from(end.atStartOfDay(ZoneId.systemDefault()).toInstant());
Calendar cStart = Calendar.getInstance(); cStart.setTime(todaysDate);
Calendar cEnd = Calendar.getInstance(); cEnd.setTime(endDate);
long timeLeft = ChronoUnit.DAYS.between((Temporal) cStart, (Temporal) cEnd);
return timeLeft;
}
/**
*
* @param amountBudget
*
*/
@Override
public void setAmountBudget(int amountBudget) {
if (amountBudget < 0) {
throw new IllegalArgumentException("Illegal amount in budget");
}
budgetAmount = amountBudget;
}
/**
*
* @param periodOfTheBudget
*
*/
@Override
public void setBudgetPeriod(int periodOfTheBudget) {
if (periodOfTheBudget < 0) {
throw new IllegalArgumentException("Illegal period for the budget");
}
budgetPeriod = periodOfTheBudget;
}
/**
*
* @param amountToAddToBudget
*
*/
@Override
public void addToBudget(int amountToAddToBudget) {
if (amountToAddToBudget < 0){
throw new IllegalArgumentException("Amount to be added to the budget cant be below zero");
}
budgetAmount += amountToAddToBudget;
}
/**
*
* @param amountToSubtractFromBudget
*
*/
@Override
public void subtractFromBudget(int amountToSubtractFromBudget) {
if (amountToSubtractFromBudget < 0){
throw new IllegalArgumentException("Amount to be subtracted from the budget cant be below zero");
}
budgetAmount -= amountToSubtractFromBudget;
}
}
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
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