// Tests for the class User

import junit.framework.Assert;
import junit.framework.TestCase;

public class UserTest extends TestCase
{
  
// For testing without drJava
//  public static void main( String[] args )
//  {
//    junit.swingui.TestRunner.run( UserTest.class );
//  }
  
  public void testGetName( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    
    String expected = "Diana";
    String returned = c.getName();  
    Assert.assertEquals(expected, returned); 
  }
  
  public void testGetLogin( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    
    String expected = "diana";
    String returned = c.getLogin();  
    Assert.assertEquals(expected, returned);
  }
  
  public void testSetName( )
  {
    User c = new User( "Diana Inkpen", "diana", "iti1120b" );
    
    String expected = "Diana Inkpen";
    String returned = c.getName();  
    Assert.assertEquals(expected, returned);
    
    c.setName("Diana Maria Inkpen");
    
    expected = "Diana Maria Inkpen";
    returned = c.getName();  
    Assert.assertEquals(expected, returned);
  }
  
  public void testVerifyGoodPassword( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    
    boolean expected = true;
    boolean returned = c.checkPassword("iti1120b");
    Assert.assertEquals( expected, returned );  
    
  }
  
  public void testVerifyBadPassword( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    boolean expected = false;
    boolean returned = c.checkPassword("iti1520");
    Assert.assertEquals( expected, returned );  
  }
  
  public void testChangeGoodPassword( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    
    boolean expected = true;
    boolean returned = c.checkPassword("iti1120b");
    Assert.assertEquals( expected, returned ); 
    
    expected = true;
    returned = c.changePassword("iti1120b", "newPassword");
    
    Assert.assertEquals( expected, returned ); 
    
    expected = false;
    returned = c.checkPassword("iti1120b");
    Assert.assertEquals( expected, returned ); 
    
    expected = true;
    returned = c.checkPassword("newPassword");
    Assert.assertEquals( expected, returned ); 
  }
  
  public void testChangeBadPassword( )
  {
    User c = new User( "Diana", "diana", "iti1120b" );
    
    boolean expected = true;
    boolean returned = c.checkPassword("iti1120b");
    Assert.assertEquals( expected, returned ); 
    
    expected = false;
    returned = c.changePassword("iti1520", "newPassword");
    
    Assert.assertEquals( expected, returned ); 
    
    expected = false;
    returned = c.checkPassword("iti1520");
    Assert.assertEquals( expected, returned ); 
    
    expected = false;
    returned = c.checkPassword("newPassword");
    Assert.assertEquals( expected, returned ); 
    
    expected = true;
    returned = c.checkPassword("iti1120b");
    Assert.assertEquals( expected, returned ); 
  }
  
}
