| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import static org.junit.Assert.assertEquals;
-
- import java.util.Collections;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.Arrays;
-
- import org.junit.Ignore;
- import org.junit.Test;
-
- public class BookstoreTest {
-
- // This is sufficient accuracy since we're handling currency values, which should be equal to within 2 decimal places.
- private static final double EQUALITY_TOLERANCE = 0.001;
-
- @Test
- public void onlyASingleBook() {
- List<Integer> books = new ArrayList<>(Collections.singletonList(1));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(8, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void twoOfSameBook() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(16, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void emptyBasket() {
- List<Integer> books = new ArrayList<>();
- Bookstore bookstore = new Bookstore(books);
- assertEquals(0, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void twoDifferentBooks() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 2));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(15.20, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void threeDifferentBooks() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 2, 3));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(21.6, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void fourDifferentBooks() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(25.6, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void fiveDifferentBooks() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(30, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void twoGroupsOfFourIsCheaperThanGroupOfFivePlusGroupOfThree() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3, 4, 5));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(51.20, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void groupOfFourPlusGroupOfTwoIsCheaperThanTwoGroupsOfThree() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 4));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(40.8, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void twoEachOfFirst4BooksAnd1CopyEachOfRest() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(55.60, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void twoCopiesOfEachBook() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(60.00, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void threeCopiesOfFirstBookAnd2EachOfRemaining() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(68.00, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- @Ignore("Remove to run test")
- @Test
- public void threeEachOFirst2BooksAnd2EachOfRemainingBooks() {
- List<Integer> books = new ArrayList<>(Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 1, 2));
- Bookstore bookstore = new Bookstore(books);
- assertEquals(75.20, bookstore.calculateTotalCost(), EQUALITY_TOLERANCE);
- }
-
- }
|