package test;

import datatypes.Text;

/**
 * The Test Customizer is the most detailed of all test generators. More importantly it is also where the point breakdown is set.
 */
public abstract class TestCustomizer {

   /**
    * Loads the 'Import Question Dialog' and adds a question from the question
    * bank.
    */
   public abstract void addQuestion();

   /**
    * Removes the currently selected question from the test.
    */
   public abstract void removeQuestion();

   /**
    * Loads a randomly selected question from the question bank and replaces
    * the currently selected question, given the test profile associated with
    * this test.
    */
   public abstract void replaceQuestion();

   /**
    * The model(s) for the Question Table.
    */
   public Test questionTableTest;

   /**
    * The average difficulty of the questions on the test.
    */
   public String averageDifficulty;

   /**
    * The estimated time that this test will take.
    */
   public String estimatedTime;

   /**
    * The total point value of this test.
    */
   public abstract Text totalPoints();
   public abstract void setTotalPoints(Text text);

   /**
    * The point values of each question is set to be the same.
    */
   public abstract void uniformScalePointValue();

   /**
    * The point values of each question are set based on the type and
    * difficulty.
    */
   public abstract void scaleByTypePointValue();

   /**
    * Saves the test.
    */
   public abstract void save();
}