@Test
  public void testPersistence() {
    try {

      em.getTransaction().begin();

      Student u = new Student();
      u.setScore(12);
      u.setName("eskatos");

      em.persist(u);
      assertTrue(em.contains(u));

      em.remove(u);

      assertFalse(em.contains(u));

      em.getTransaction().commit();

    } catch (Exception ex) {
      em.getTransaction().rollback();
      ex.printStackTrace();
      fail("Exception during testPersistence");
    }
  }
 /** Method run in case of wrong answer. */
 private void answeredWrongly() {
   student.increaseNumberOfWrongAnswers();
   if (student.getNumberOfWrongAnswers() >= 9) {
     student.setNumberOfWrongAnswers(0);
     changeDifficulty(student.getDifficulty() - 1);
   }
 }
 /** Method run in case of correct answer. */
 private void answeredCorrectly() {
   increaseScore();
   student.increaseNumberOfCorrectAnswers();
   if (student.getNumberOfRightAnswers() >= 9) {
     changeDifficulty(student.getDifficulty() + 1);
     student.setNumberOfRightAnswers(0);
   }
 }
 /**
  * Sets the desired difficulty.
  *
  * @param difficulty Integer; 1-10
  */
 public void changeDifficulty(int difficulty) {
   student.setDifficulty(difficulty);
   this.questionsController =
       new QuestionsController(10, student.getDifficulty(), student.getOperationType());
 }
 /**
  * Sets a new score for the student.
  *
  * @param newScore Integer. The new score to set.
  */
 public void setScore(int newScore) {
   student.setScore(newScore);
 }
 /** @return Returns the students score. */
 public int getScore() {
   return student.getScore();
 }
 /** @return The players username. */
 public String getPlayerName() {
   return student.getName();
 }
 /** When called; increases the students score by the amount set in REWARD_SCORE (10) */
 protected void increaseScore() {
   student.setScore(student.getScore() + REWARD_SCORE);
 }
 /** @param student An Object of the class Student. */
 public GameController(Student student) {
   this.student = student;
   this.questionsController =
       new QuestionsController(10, student.getDifficulty(), student.getOperationType());
 }
 /**
  * ADDITION = 0; SUBTRACTION = 1; MULTIPLICATION = 2; DIVISION = 3;
  *
  * @param playerName The students username
  * @param operationType Desired operation type; addition, substraction, multiplication, division.
  * @param difficulty Desired difficulty at game start. Will dynamically change to accomodate the
  *     students skill-level.
  */
 public GameController(String playerName, int operationType, int difficulty) {
   student = new Student(playerName);
   student.setOperationType(operationType);
   this.questionsController = new QuestionsController(10, difficulty, operationType);
   restoreGame();
 }