Skip to content

Instantly share code, notes, and snippets.

@ataraxie
Created March 7, 2020 17:32
Show Gist options
  • Save ataraxie/8385c5169de88c1134d2bc48b2cc1fee to your computer and use it in GitHub Desktop.
Save ataraxie/8385c5169de88c1134d2bc48b2cc1fee to your computer and use it in GitHub Desktop.
package faculty;
import ca.ubc.cpsc210.grocery.model.GroceryBill;
import ca.ubc.cpsc210.grocery.model.GroceryItem;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class GroceryBillTest {
private GroceryBill groceryBill;
private GroceryItem milkItem;
private GroceryItem cerealItem;
private GroceryItem teaItem;
@BeforeEach
public void setup() {
this.groceryBill = new GroceryBill();
this.milkItem = new GroceryItem("Milk", 299);
this.cerealItem = new GroceryItem("Cereal", 359);
this.teaItem = new GroceryItem("Tea", 875);
}
@BeforeEach
public void testConstructor() {
assertEquals(0, this.groceryBill.getNumLineItems());
assertEquals(0, this.groceryBill.getTotalNumberOfItemsPurchased());
assertEquals(0, this.groceryBill.getTotalQuantityOfItemPurchased(milkItem));
assertEquals(0, this.groceryBill.getTotalQuantityOfItemPurchased(cerealItem));
assertEquals(0, this.groceryBill.getTotalQuantityOfItemPurchased(teaItem));
}
@Test
void addPurchaseOneItem() {
groceryBill.addPurchase(milkItem, 1);
assertNumbers(1, 1, 1, 0, 0);
}
@Test
void addPurchaseOneDifferentItem() {
groceryBill.addPurchase(teaItem, 1);
assertNumbers(1, 1, 0, 0, 1);
}
@Test
void addPurchaseTwoItemSameType() {
groceryBill.addPurchase(milkItem, 2);
assertNumbers(1, 2, 2, 0, 0);
}
@Test
void addPurchaseTwoItemDifferentType() {
groceryBill.addPurchase(milkItem, 1);
groceryBill.addPurchase(cerealItem, 1);
assertNumbers(2, 2, 1, 1, 0);
}
@Test
void addPurchaseOneOfEachType() {
groceryBill.addPurchase(milkItem, 1);
groceryBill.addPurchase(cerealItem, 1);
groceryBill.addPurchase(teaItem, 1);
assertNumbers(3, 3, 1, 1, 1);
}
@Test
void addPurchaseManyOfOneType() {
groceryBill.addPurchase(teaItem, 20);
assertNumbers(1, 20, 0, 0, 20);
}
@Test
void addPurchaseManyOfAllTypes() {
groceryBill.addPurchase(milkItem, 15);
groceryBill.addPurchase(cerealItem, 27);
groceryBill.addPurchase(teaItem, 8);
assertNumbers(3, 50, 15, 27, 8);
}
@Test
void getTotalNumberOfItemsPurchasedZeroItems() {
assertEquals(0, groceryBill.getTotalNumberOfItemsPurchased());
}
@Test
void getTotalNumberOfItemsPurchasedOneItem() {
groceryBill.addPurchase(milkItem, 1);
assertEquals(1, groceryBill.getTotalNumberOfItemsPurchased());
}
@Test
void getTotalNumberOfItemsPurchasedOneDifferentItem() {
groceryBill.addPurchase(cerealItem, 1);
assertEquals(1, groceryBill.getTotalNumberOfItemsPurchased());
}
@Test
void getTotalNumberOfItemsPurchasedManyItemsSameType() {
groceryBill.addPurchase(cerealItem, 20);
assertEquals(20, groceryBill.getTotalNumberOfItemsPurchased());
}
@Test
void getTotalNumberOfItemsPurchasedManyItemsDifferentType() {
groceryBill.addPurchase(milkItem, 15);
groceryBill.addPurchase(cerealItem, 27);
groceryBill.addPurchase(teaItem, 8);
assertEquals(50, groceryBill.getTotalNumberOfItemsPurchased());
}
@Test
void getNumLineItemsZeroItems() {
assertEquals(0, groceryBill.getNumLineItems());
}
@Test
void getNumLineItemsOneItem() {
groceryBill.addPurchase(cerealItem, 1);
assertEquals(1, groceryBill.getNumLineItems());
}
@Test
void getNumLineItemsManyItemsOneType() {
groceryBill.addPurchase(cerealItem, 20);
assertEquals(1, groceryBill.getNumLineItems());
}
@Test
void getNumLineItemsManyItemsMultipleType() {
groceryBill.addPurchase(milkItem, 15);
groceryBill.addPurchase(cerealItem, 27);
groceryBill.addPurchase(teaItem, 8);
assertEquals(3, groceryBill.getNumLineItems());
}
@Test
void getTotalQuantityOfItemPurchasedZeroItems() {
assertEquals(0, groceryBill.getTotalQuantityOfItemPurchased(milkItem));
}
@Test
void getTotalQuantityOfItemPurchasedOneItem() {
groceryBill.addPurchase(milkItem, 1);
assertEquals(1, groceryBill.getTotalQuantityOfItemPurchased(milkItem));
}
@Test
void getTotalQuantityOfItemPurchasedManyItemsOneType() {
groceryBill.addPurchase(milkItem, 15);
assertEquals(15, groceryBill.getTotalQuantityOfItemPurchased(milkItem));
}
@Test
void getTotalQuantityOfItemPurchasedManyItemsMultipleType() {
groceryBill.addPurchase(milkItem, 15);
groceryBill.addPurchase(cerealItem, 27);
groceryBill.addPurchase(teaItem, 8);
assertEquals(15, groceryBill.getTotalQuantityOfItemPurchased(milkItem));
assertEquals(27, groceryBill.getTotalQuantityOfItemPurchased(cerealItem));
assertEquals(8, groceryBill.getTotalQuantityOfItemPurchased(teaItem));
}
private void assertNumbers(int numLineItems, int numItemsPurchased, int numMilkItems, int numCerealItems, int numTeaItems) {
assertEquals(numLineItems, this.groceryBill.getNumLineItems());
assertEquals(numItemsPurchased, this.groceryBill.getTotalNumberOfItemsPurchased());
assertEquals(numMilkItems, this.groceryBill.getTotalQuantityOfItemPurchased(milkItem));
assertEquals(numCerealItems, this.groceryBill.getTotalQuantityOfItemPurchased(cerealItem));
assertEquals(numTeaItems, this.groceryBill.getTotalQuantityOfItemPurchased(teaItem));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment