package Proctor;
import java.util.Collection;



/** A class which contains core functionality for proctor users 
 *
 * @author Matthew Morris
 * @version 1 Build 1 Oct 25, 2013.
 */
public abstract class ProctorView{

        /** A list of all tests which are launchable*/
	protected Collection<Test> launchableTests;


	/** Allows a teacher to void a student's test if they are caught cheating
 	* @param s	The student whose test is being voided
 	* @param t	The test the student is (or was) taking 	 	 	 	 	 
 	**/
        abstract void voidTest(Student s, Test t);
        //post: CompletedTest score is 0;

   
       /** Allows a teacher to send announcements to students
 	* @param s	The message that is to be sent
 	* @param t	The test to send the announcement to 	 	 	 	 	 
 	**/
	abstract void sendAnnouncement(String s, Test t);
   




       /** Allows a teacher to extend the time allowed on a test
 	* @param s	The amount of minutes to extend the test by
 	* @param t	The test to extend 	 	 	 	 	 
 	**/
/*@
      requires
        //
        // Amount of time is valid
        //
        (s > 0);

      ensures
        //
        // Test time is extended by s minutes
        //
        (old(t.closes.getMinutes()) + s  == t.closes.getMinutes());
      @*/
	
	abstract void extendTime(int s, Test t);


 
       /** Allows a teacher to remove questions from a test
 	* @param s	The question to be removed
 	* @param t	The test to remove the question from 	 	 	 	 	 
 	**/
   /*@
      requires
        //
        // Test contains question to be removed
        //
        (t.questions.contains(s));

      ensures
        //
        // The test no longer contains the question
        //
        (!t.questions.contains(s));
      @*/
	abstract void removeQuestions(Question s, Test t);
}