import junit.framework.Assert;
import junit.framework.TestCase;

public class PurchaseTest extends TestCase
{

// public static void main( String[] args )
// {
//  junit.swingui.TestRunner.run( PurchaseTest.class );
// }

 public void testGetBillNumber( )
 {
  int expected;
  int returned;
  
  Client c = new Client( "Daniel", "daniel@gmail.ca", "iti1520");
  Item i1 = new Item( Item.BOOK, "Harry Potter", 20, 3 );
  Item i2 = new Item( Item.DVD, "Shrek 2", 25, 4 );
  Item[] iList = new Item[] { i1, i2 };
  
  Purchase r = new Purchase( c, 1, iList );
  
  expected = 1000;
  returned = r.getBillNumber();
  Assert.assertEquals( expected, returned ); 
  
  Purchase r2 = new Purchase( c, 2, iList );
  expected = 1001;
  returned = r2.getBillNumber();
  Assert.assertEquals( expected, returned ); 
  
 }

 public void testGetDatePurchased( )
 {
  int expected;
  int returned;
  
  Client c = new Client( "Daniel", "daniel@gmail.ca", "iti1520");
  Item i1 = new Item( Item.BOOK, "Harry Potter", 20, 3 );
  Item i2 = new Item( Item.DVD, "Shrek 2", 25, 4 );
  Item[] iList = new Item[] { i1, i2 };
  
  Purchase r = new Purchase( c, 6, iList );
  
  expected = 6;
  returned = r.getDatePurchased();
  Assert.assertEquals( expected, returned );   
 }

 public void testGetClientName( )
 {
  String expected;
  String returned;
  
  Client c = new Client( "Daniel", "daniel@gmail.ca", "iti1520");
  Item i1 = new Item( Item.BOOK, "Harry Potter", 20, 3 );
  Item i2 = new Item( Item.DVD, "Shrek 2", 25, 4 );
  Item[] iList = new Item[] { i1, i2 };
  
  Purchase r = new Purchase( c, 6, iList );
  
  expected = "Daniel";
  returned = r.getClientName();
  Assert.assertEquals( expected, returned );   
 }

 public void testItemHere( )
 {
  boolean expected;
  boolean returned;
  
  Client c = new Client( "Daniel", "daniel@gmail.ca", "iti1520");
  Item i1 = new Item( Item.BOOK, "Harry Potter", 20, 3 );
  Item i2 = new Item( Item.DVD, "Shrek 2", 25, 4 );
  Item i3 = new Item( Item.GAME, "Tomb Raider", 15, 4 );
  Item[] iList = new Item[] { i1, i2 };
  
  Purchase r = new Purchase( c, 6, iList );
  
  expected = true;
  returned = r.includesItem(i1);
  Assert.assertEquals( expected, returned );   
  
  expected = true;
  returned = r.includesItem(i2);
  Assert.assertEquals( expected, returned );   
  
  expected = false;
  returned = r.includesItem(i3);
  Assert.assertEquals( expected, returned );   
  
 }

 public void testToString( )
 {
  Client c = new Client( "Daniel", "daniel@gmail.ca", "iti1520");
  Item i1 = new Item( Item.BOOK, "Harry Potter", 20, 3 );
  Item i2 = new Item( Item.DVD, "Shrek 2", 25, 4 );
  Item[] iList = new Item[] { i1, i2 };
  
  Purchase r = new Purchase( c, 6, iList );
  System.out.println(r); // Invokes toString() of the object r of class Purchase
 }

}
