With uniq test like book

master
Thomas Clavier 8 years ago
parent 8db9ad21cd
commit 94b267328e
  1. 3
      src/main/java/movierental/Customer.java
  2. 30
      src/test/java/movierental/CustomerBuilder.java
  3. 114
      src/test/java/movierental/CustomerTest.java

@ -1,4 +1,5 @@
package movierental; package movierental;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -24,7 +25,7 @@ public class Customer {
int frequentRenterPoints = 0; int frequentRenterPoints = 0;
String result = "Rental Record for " + getName() + "\n"; String result = "Rental Record for " + getName() + "\n";
for (Rental each: _rentals) { for (Rental each : _rentals) {
double thisAmount = 0; double thisAmount = 0;
//determine amounts for each line //determine amounts for each line

@ -1,30 +0,0 @@
package movierental;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class CustomerBuilder {
public static final String NAME = "Gregoire";
private String name = NAME;
private List<Rental> rentals = new ArrayList<Rental>();
public Customer build() {
Customer result = new Customer(name);
for (Rental rental : rentals) {
result.addRental(rental);
}
return result;
}
public CustomerBuilder withName(String name) {
this.name = name;
return this;
}
public CustomerBuilder withRentals(Rental... rentals) {
Collections.addAll(this.rentals, rentals);
return this;
}
}

@ -7,98 +7,26 @@ import org.junit.Test;
public class CustomerTest { public class CustomerTest {
@Test @Test
public void testCustomer() { public void test() {
Customer c = new CustomerBuilder().build(); Customer customer = new Customer("Bob");
assertNotNull(c); customer.addRental(new Rental(new Movie("Jaws", Movie.REGULAR), 2));
customer.addRental(new Rental(new Movie("Golden Eye", Movie.REGULAR), 3));
customer.addRental(new Rental(new Movie("Short New", Movie.NEW_RELEASE), 1));
customer.addRental(new Rental(new Movie("Long New", Movie.NEW_RELEASE), 2));
customer.addRental(new Rental(new Movie("Bambi", Movie.CHILDRENS), 3));
customer.addRental(new Rental(new Movie("Toy Story", Movie.CHILDRENS), 4));
String expected = "" +
"Rental Record for Bob\n" +
"\tJaws\t2.0\n" +
"\tGolden Eye\t3.5\n" +
"\tShort New\t3.0\n" +
"\tLong New\t6.0\n" +
"\tBambi\t1.5\n" +
"\tToy Story\t3.0\n" +
"Amount owed is 19.0\n" +
"You earned 7 frequent renter points";
assertEquals(expected, customer.statement());
} }
@Test
public void testAddRental() {
Customer customer2 = new CustomerBuilder().withName("Sallie").build();
Movie movie1 = new Movie("Gone with the Wind", Movie.REGULAR);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
customer2.addRental(rental1);
}
@Test
public void testGetName() {
Customer c = new Customer("David");
assertEquals("David", c.getName());
}
@Test
public void statementForRegularMovie() {
Movie movie1 = new Movie("Gone with the Wind", Movie.REGULAR);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
Customer customer2 =
new CustomerBuilder()
.withName("Sallie")
.withRentals(rental1)
.build();
String expected = "Rental Record for Sallie\n" +
"\tGone with the Wind\t3.5\n" +
"Amount owed is 3.5\n" +
"You earned 1 frequent renter points";
String statement = customer2.statement();
assertEquals(expected, statement);
}
@Test
public void statementForNewReleaseMovie() {
Movie movie1 = new Movie("Star Wars", Movie.NEW_RELEASE);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
Customer customer2 =
new CustomerBuilder()
.withName("Sallie")
.withRentals(rental1)
.build();
String expected = "Rental Record for Sallie\n" +
"\tStar Wars\t9.0\n" +
"Amount owed is 9.0\n" +
"You earned 2 frequent renter points";
String statement = customer2.statement();
assertEquals(expected, statement);
}
@Test
public void statementForChildrensMovie() {
Movie movie1 = new Movie("Madagascar", Movie.CHILDRENS);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
Customer customer2
= new CustomerBuilder()
.withName("Sallie")
.withRentals(rental1)
.build();
String expected = "Rental Record for Sallie\n" +
"\tMadagascar\t1.5\n" +
"Amount owed is 1.5\n" +
"You earned 1 frequent renter points";
String statement = customer2.statement();
assertEquals(expected, statement);
}
@Test
public void statementForManyMovies() {
Movie movie1 = new Movie("Madagascar", Movie.CHILDRENS);
Rental rental1 = new Rental(movie1, 6); // 6 day rental
Movie movie2 = new Movie("Star Wars", Movie.NEW_RELEASE);
Rental rental2 = new Rental(movie2, 2); // 2 day rental
Movie movie3 = new Movie("Gone with the Wind", Movie.REGULAR);
Rental rental3 = new Rental(movie3, 8); // 8 day rental
Customer customer1
= new CustomerBuilder()
.withName("David")
.withRentals(rental1, rental2, rental3)
.build();
String expected = "Rental Record for David\n" +
"\tMadagascar\t6.0\n" +
"\tStar Wars\t6.0\n" +
"\tGone with the Wind\t11.0\n" +
"Amount owed is 23.0\n" +
"You earned 4 frequent renter points";
String statement = customer1.statement();
assertEquals(expected, statement);
}
//TODO make test for price breaks in code.
} }
Loading…
Cancel
Save