package users;

import java.util.ArrayList;
import questions.*;
import tests.*;


/**
 * @author bnaftali
 *
 */
public abstract class User {
	/**
	 * List of courses assigned to a user.
	 */
	private ArrayList<Course> courses;
	/**
	 * History of a user's actions.
	 */
	private History log; //
	/**
	 * List of Tests taken by a user.
	 */
	private ArrayList<Test> taken;
	
	/**
	 * Default Constructor
	 */
	public User() {
	}
	
	/**
	 * @return List of tests a user still needs to take.
	 */
	public ArrayList<Test> toTake() {
		return null;
	}
	
	/**
	 * Adds a course to a user.
	 */
	public void addCourse() {
		 
	}
	/**
	 * @param del - Course to delete from a user's courses.
     
    pre:
       //
       // User does not already contain a course
       // with the same name as the one being added..
       //
       (! exists (Course add ;
          us.contains(old) ;
             old.name.equals(add.name)))
    *
	 */
	public void removeCourse(Course del) {
		
	}
	
	/**
	 * @param take - Test that the user will take.
	 */
	public abstract void takeTest(Test take);
	
	/**
	 * @param rev - test that the user will review.
	 
    pre:
       //
       // Test being reviewed has already been taken.
       // Note: talking about a 'TestAttempt' class implementation
       //
       (! exits (rev.attempt ;)
    *
    */
	public abstract void reviewTest(Test rev);

}