package webserg.refactoring.ch1.test;
import junit.framework.TestCase;
import webserg.refactoring.ch1.Customer;
import webserg.refactoring.ch1.Movie;
import webserg.refactoring.ch1.Rental;
public class CustomerTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testCustomer() {
Customer c = new Customer("David");
assertNotNull(c);
}
public void testAddRental() {
Customer customer2 = new Customer("Sallie");
Movie movie1 = new Movie("Gone with the Wind", Movie.REGULAR);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
customer2.addRental(rental1);
}
public void testGetName() {
Customer c = new Customer("David");
assertEquals("David", c.getName());
}
public void testStatementForRegularMovie() {
Customer customer2 = new Customer("Sallie");
Movie movie1 = new Movie("Gone with the Wind", Movie.REGULAR);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
customer2.addRental(rental1);
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);
}
public void testStatementForNewReleaseMovie() {
Customer customer2 = new Customer("Sallie");
Movie movie1 = new Movie("Star Wars", Movie.NEW_RELEASE);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
customer2.addRental(rental1);
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);
}
public void testStatementForChildrensMovie() {
Customer customer2 = new Customer("Sallie");
Movie movie1 = new Movie("Madagascar", Movie.CHILDRENS);
Rental rental1 = new Rental(movie1, 3); // 3 day rental
customer2.addRental(rental1);
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);
}
public void testStatementForManyMovies() {
Customer customer1 = new Customer("David");
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
customer1.addRental(rental1);
customer1.addRental(rental2);
customer1.addRental(rental3);
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);
}
public void testPriceBreak(){
String name = "Serg";
String titleMovie = "Terminator";
Customer customerSerg = new Customer("Serg");
try{
Movie movieWithWrongType = new Movie("Terminator", -1);
}catch (IllegalArgumentException e) {
assertTrue(true);
}
/*int daysRental = 3;
Rental rentalMovieWithWrongType = new Rental(movieWithWrongType,daysRental);
customerSerg.addRental(rentalMovieWithWrongType);
String expected = "Rental Record for " + name + "\n" +
"\t"+ titleMovie +"\t0.0\n" +
"Amount owed is 0.0\n" +
"You earned 1 frequent renter points";
String statement = customerSerg.statement();
assertEquals(expected, statement);*/
}
}