Package cn.edu.zju.acm.onlinejudge.persistence.sql

Source Code of cn.edu.zju.acm.onlinejudge.persistence.sql.SubmissionPersistenceImplTest

/*
* Copyright (C) 2001 - 2005 ZJU Online Judge, All Rights Reserved.
*/
package cn.edu.zju.acm.onlinejudge.persistence.sql;

import junit.framework.TestCase;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import cn.edu.zju.acm.onlinejudge.bean.Contest;
import cn.edu.zju.acm.onlinejudge.bean.ExtendedSubmission;
import cn.edu.zju.acm.onlinejudge.bean.Forum;
import cn.edu.zju.acm.onlinejudge.bean.Limit;
import cn.edu.zju.acm.onlinejudge.bean.Problem;
import cn.edu.zju.acm.onlinejudge.bean.Submission;
import cn.edu.zju.acm.onlinejudge.bean.UserProfile;
import cn.edu.zju.acm.onlinejudge.bean.enumeration.Country;
import cn.edu.zju.acm.onlinejudge.bean.enumeration.JudgeReply;
import cn.edu.zju.acm.onlinejudge.bean.enumeration.Language;
import cn.edu.zju.acm.onlinejudge.bean.request.SubmissionCriteria;

/**
* <p>Tests for ContestPersistenceImpl.</p>
*
* @version 2.0
* @author ZOJDEV
*/
public class SubmissionPersistenceImplTest extends TestCase
 
  /**
   * A ForumPersistenceImpl instance.
   */
  private ForumPersistenceImpl forumPersistence = new ForumPersistenceImpl();
 
  /**
   * A ContestPersistenceImpl instance.
   */
  private ContestPersistenceImpl contestPersistence = new ContestPersistenceImpl();
 
  /**
   * A ProblemPersistenceImpl instance.
   */
  private ProblemPersistenceImpl problemPersistence = new ProblemPersistenceImpl();
 
  /**
   * A UserPersistenceImpl instance.
   */
  private UserPersistenceImpl userPersistence = null;
 
 
  /**
   * A SubmissionPersistenceImpl instance.
   */
  private SubmissionPersistenceImpl persistence = new SubmissionPersistenceImpl();
 
  /**
   * A Forum instance.
   */
  private Forum forum = null;
 
  /**
   * A UserProfile instance.
   */
  private UserProfile userProfile1 = null;
 
  /**
   * A UserProfile instance.
   */
  private UserProfile userProfile2 = null;
 
  /**
   * A Limit instance.
   */
  private Limit limit = null;
     
  /**
   * A Contest instance.
   */
  private Contest contest = null;
 
  /**
   * A Problem instance.
   */
  private Problem problem1 = null;
 
  /**
   * A Problem instance.
   */
  private Problem problem2 = null;
 
 
  /**
   * A Language instance.
   */
  private Language language1 = new Language(1, "language1", "Language 1", "compiler1", "options1");
 
  /**
   * A Language instance.
   */
  private Language language2 = new Language(2, "language2", "Language 2", "compiler2", "options2");
 
  /**
   * A Language instance.
   */
  private Language language3 = new Language(3, "language3", "Language 3", "compiler3", "options3");
 
 
  /**
   * A JudgeReply instance.
   */
  private JudgeReply judgeReply1 = new JudgeReply(1, "judgeReply1", "JudgeReply 1", "style1", true);
 
  /**
   * A Language instance.
   */
  private JudgeReply judgeReply2 = new JudgeReply(2, "judgeReply2", "JudgeReply 2", "style2", false);
 
  /**
   * A Language instance.
   */
  private JudgeReply judgeReply3 = new JudgeReply(3, "judgeReply3", "JudgeReply 3", "style3", true);
 
  /**
   * A Submission instance.
   */
  private ExtendedSubmission submission1 = null;
 
  /**
   * A Submission instance.
   */
  private ExtendedSubmission submission2 = null;

  /**
   * A Submission instance.
   */
  private ExtendedSubmission submission3 = null;

  /**
   * A Submission instance.
   */
  private ExtendedSubmission submission4 = null;
 
  /**
   * Setup.
   * @throws Exception to JUnit
   */
  protected void setUp() throws Exception {
    DatabaseHelper.resetAllTables(false)
   
    userPersistence = new UserPersistenceImpl();
   
    contestPersistence.createLanguage(language1, 10);
    contestPersistence.createLanguage(language2, 10);
    contestPersistence.createLanguage(language3, 10);
   
    persistence.createJudgeReply(judgeReply1, 10);
    persistence.createJudgeReply(judgeReply2, 10);
    persistence.createJudgeReply(judgeReply3, 10);
   
    forum = newForum(1);
    forumPersistence.createForum(forum, 10);
   
    userProfile1 = newUserProfile(1);
    userProfile2 = newUserProfile(2);
    userPersistence.createUserProfile(userProfile1, 10);
    userPersistence.createUserProfile(userProfile2, 10);
   
    limit = newLimit(1);
       
    contest = newContest(
        1, forum.getId(), limit, Arrays.asList(new Object[] {language1, language2, language3}));       
    contestPersistence.createContest(contest, 10);
   
    problem1 = newProblem(1, contest.getId(), null);
    problem2 = newProblem(2, contest.getId(), limit);
    problemPersistence.createProblem(problem1, 10);
    problemPersistence.createProblem(problem2, 10);
   
    submission1 = newSubmission(1, problem1.getId(), userProfile1.getId(), language1, judgeReply1);
    submission2 = newSubmission(2, problem2.getId(), userProfile1.getId(), language2, judgeReply2);
    submission2.setJudgeDate(null);
    submission2.setSubmitDate(null);
    submission3 = newSubmission(3, problem2.getId(), userProfile2.getId(), language3, judgeReply3);
    submission4 = newSubmission(4, problem2.getId(), userProfile1.getId(), language1, judgeReply2);
   
    persistence.createSubmission(submission1, 10);
    persistence.createSubmission(submission2, 10);
    persistence.createSubmission(submission3, 10);
    persistence.createSubmission(submission4, 10);
  }
 
  /**
   * Tear down.
   * @throws Exception to JUnit
   */
  protected void tearDown() throws Exception {       
   
    DatabaseHelper.clearTable("submission");
    DatabaseHelper.clearTable("problem");
    DatabaseHelper.clearTable("contest_language")
   
    DatabaseHelper.clearTable("contest");   
    DatabaseHelper.clearTable("limits");
    DatabaseHelper.clearTable("language");
    DatabaseHelper.clearTable("forum");   
    DatabaseHelper.clearTable("judge_reply");
    DatabaseHelper.clearTable("user_profile");
   
             
  }
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions1() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setProblemId(new Long(problem2.getId()));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission2, submission3, submission4}), submissions);
       
    criteria.setProblemId(new Long(problem1.getId()));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1}), submissions);
   
    criteria.setProblemId(new Long(1234567890l));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
  }
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions2() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setContestId(new Long(contest.getId()));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission2, submission3, submission4}), submissions);
           
    criteria.setContestId(new Long(1234567890l));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
  }
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions3() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setHandle(userProfile1.getHandle());       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission2, submission4}), submissions);
   
    criteria.setHandle(userProfile2.getHandle());       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission3}), submissions);
           
    criteria.setHandle("foobar");       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
 
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions4() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setIdEnd(new Long(submission2.getId()));       
    criteria.setIdStart(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission2}), submissions);
   
    criteria.setIdEnd(null);
    criteria.setIdStart(new Long(submission3.getId()));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission3, submission4}), submissions);
   
    criteria.setIdEnd(new Long(submission3.getId()));       
    criteria.setIdStart(new Long(submission2.getId()));
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission2, submission3}), submissions);
   
    criteria.setIdEnd(new Long(submission1.getId() - 1));       
    criteria.setIdStart(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setIdEnd(null);
    criteria.setIdStart(new Long(submission4.getId() + 1));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setIdEnd(new Long(submission2.getId()));       
    criteria.setIdStart(new Long(submission3.getId()));
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);       
   
 
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions5() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setTimeEnd(submission3.getSubmitDate());       
    criteria.setTimeStart(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission3}), submissions);
   
    criteria.setTimeStart(submission3.getSubmitDate());       
    criteria.setTimeEnd(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission3, submission4}), submissions);
   
    criteria.setTimeStart(submission1.getSubmitDate());       
    criteria.setTimeEnd(submission3.getSubmitDate());
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission3}), submissions);
   
    criteria.setTimeEnd(new Date(-1000));       
    criteria.setTimeStart(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setTimeStart(new Date(submission4.getSubmitDate().getTime() + 1000));       
    criteria.setTimeEnd(null);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setTimeStart(submission3.getSubmitDate());       
    criteria.setTimeEnd(submission1.getSubmitDate());   
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);       
   
 

  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions6() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setLanguages(Arrays.asList(new Object[] {language1, language3}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission3, submission4}), submissions);
   
    criteria.setLanguages(Arrays.asList(new Object[] {language2}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission2}), submissions);   
           
    criteria.setLanguages(Arrays.asList(new Object[] {
        new Language(4, "x", "x", "x", "x")}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setLanguages(new ArrayList());       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
 
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions7() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();   
   
    criteria.setJudgeReplies(Arrays.asList(new Object[] {judgeReply1, judgeReply3}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission3}), submissions);
   
    criteria.setJudgeReplies(Arrays.asList(new Object[] {judgeReply2}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission2, submission4}), submissions);   
           
    criteria.setJudgeReplies(Arrays.asList(new Object[] {
        new JudgeReply(4, "x", "x", "x", true)}));       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
    criteria.setJudgeReplies(new ArrayList());       
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(new ArrayList(), submissions);
   
 
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions8() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
   
    criteria.setProblemId(new Long(problem2.getId()));   
    criteria.setContestId(new Long(contest.getId()));
    criteria.setHandle(userProfile2.getHandle());
    criteria.setIdStart(new Long(submission1.getId()));
    criteria.setIdEnd(new Long(submission4.getId()));
    criteria.setTimeStart(submission1.getSubmitDate());
    criteria.setTimeEnd(submission4.getSubmitDate());
    criteria.setJudgeReplies(Arrays.asList(new Object[] {judgeReply1, judgeReply2, judgeReply3}));
    criteria.setLanguages(Arrays.asList(new Object[] {language1, language2, language3}));
   
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission3}), submissions);       
   
  }
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions9() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
         
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission2, submission3, submission4}), submissions);
   
    persistence.deleteSubmission(submission2.getId(), 11);
    submissions = persistence.searchSubmissions(criteria, 0, 100);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission3, submission4}), submissions);
   
  }
 
  /**
   * Tests searchSubmissions method
   * @throws Exception to JUnit
   */
  public void testSearchSubmissions10() throws Exception {
    List submissions = null;
    SubmissionCriteria criteria = new SubmissionCriteria();
         
    submissions = persistence.searchSubmissions(criteria, 0, 0);
    checkSubmissions(new ArrayList(), submissions);
   
    submissions = persistence.searchSubmissions(criteria, 0, 1);
    checkSubmissions(Arrays.asList(new Object[] {submission1}), submissions);
   
    submissions = persistence.searchSubmissions(criteria, 0, 4);
    checkSubmissions(Arrays.asList(new Object[] {submission1, submission2, submission3, submission4}), submissions);
   
    submissions = persistence.searchSubmissions(criteria, 1, 2);
    checkSubmissions(Arrays.asList(new Object[] {submission2, submission3}), submissions);
   
   
   
  }
 
 
  /*

  private Language language3 = new Language(3, "language3", "Language 3", "compiler3", "options3");
 
 

  private JudgeReply judgeReply1 = new JudgeReply(1, "judgeReply1", "JudgeReply 1", "style1", true);
  submission1 = newSubmission(1, problem1.getId(), userProfile1.getId(), language1, judgeReply1);
  submission2 = newSubmission(2, problem2.getId(), userProfile1.getId(), language2, judgeReply2);
  submission2.setJudgeDate(null);
  submission2.setSubmitDate(null);
  submission3 = newSubmission(3, problem2.getId(), userProfile2.getId(), language3, judgeReply3);
  submission4 = newSubmission(4, problem2.getId(), userProfile1.getId(), language1, judgeReply2);
   */
  /**
   * Tests getSubmission method
   * @throws Exception to JUnit
   */
  public void testGetSubmission1() throws Exception {   
    Submission submission = persistence.getSubmission(submission1.getId());   
    checkSubmission(submission1, submission);       
  }
 
  /**
   * Tests getSubmission method
   * @throws Exception to JUnit
   */
  public void testGetSubmission2() throws Exception {   
    Submission submission = persistence.getSubmission(submission2.getId());   
    checkSubmission(submission2, submission);       
  }
 
  /**
   * Tests getSubmission method
   * @throws Exception to JUnit
   */
  public void testGetSubmission3() throws Exception {   
    Submission submission = persistence.getSubmission(submission3.getId());   
    checkSubmission(submission3, submission);       
  }
 
  /**
   * Tests getSubmission method
   * @throws Exception to JUnit
   */
  public void testGetSubmission4() throws Exception {   
    Submission submission = (Submission) persistence.getSubmission(1234567890l);   
    assertNull("no such submission", submission);       
  }
 
  /**
   * Tests updateSubmission method
   * @throws Exception to JUnit
   */
  public void testUpdateSubmission1() throws Exception {
    long id = submission1.getId();
    submission1.setUserProfileId(userProfile2.getId());
    submission1.setProblemId(problem2.getId());
    submission1.setLanguage(language2);
    submission1.setJudgeReply(judgeReply3);
    submission1.setContent("new contest" + id);
    submission1.setTimeConsumption((int) id * 100);
    submission1.setMemoryConsumption((int) id * 1000);
    submission1.setSubmitDate(new Date(id * 100000));
    submission1.setJudgeDate(new Date(id * 200000));
    submission1.setJudgeComment("new comment" + id);
       
    persistence.updateSubmission(submission1, 11);
   
    Submission submission = persistence.getSubmission(submission1.getId());   
    checkSubmission(submission1, submission);       
   
  }
 
  /**
   * Tests updateSubmission method
   * @throws Exception to JUnit
   */
  public void testUpdateSubmission2() throws Exception {   
    long id = submission2.getId();
    submission2.setUserProfileId(userProfile2.getId());
    submission2.setProblemId(problem2.getId());
    submission2.setLanguage(language2);
    submission2.setJudgeReply(judgeReply3);
    submission2.setContent("new contest" + id);
    submission2.setTimeConsumption((int) id * 100);
    submission2.setMemoryConsumption((int) id * 1000);
    submission2.setSubmitDate(null);
    submission2.setJudgeDate(null);
    submission2.setJudgeComment("new comment" + id);
       
    persistence.updateSubmission(submission2, 11);
   
    Submission submission = persistence.getSubmission(submission2.getId());   
    checkSubmission(submission2, submission)
  }

  /**
   * Tests updateSubmission method
   * @throws Exception to JUnit
   */
  public void testUpdateSubmission3() throws Exception {   
    long id = submission3.getId();
    submission3.setUserProfileId(userProfile2.getId());
    submission3.setProblemId(problem2.getId());
    submission3.setLanguage(language2);
    submission3.setJudgeReply(judgeReply3);
    submission3.setContent("new contest" + id);
    submission3.setTimeConsumption((int) id * 100);
    submission3.setMemoryConsumption((int) id * 1000);
    submission3.setSubmitDate(new Date(id * 100000));
    submission3.setJudgeDate(new Date(id * 200000));
    submission3.setJudgeComment("new comment" + id);
       
    persistence.updateSubmission(submission3, 11);
   
    Submission submission = persistence.getSubmission(submission3.getId());   
    checkSubmission(submission3, submission);     
   
  }
 
 
  /**
   * Tests deleteSubmission method
   * @throws Exception to JUnit
   */
  public void testDeleteSubmission() throws Exception {         
    persistence.deleteSubmission(submission1.getId(), 11);
    assertNull("submission should be deleted", persistence.getSubmission(submission1.getId()));   
    persistence.deleteSubmission(submission2.getId(), 11);
    assertNull("submission should be deleted", persistence.getSubmission(submission2.getId()));
    persistence.deleteSubmission(submission3.getId(), 11);
    assertNull("submission should be deleted", persistence.getSubmission(submission3.getId()));
   
  }
 
  /**
   * Tests getJudgeReply method
   * @throws Exception to JUnit
   */
  public void testGetJudgeReply1() throws Exception {   
    JudgeReply judgeReply = persistence.getJudgeReply(judgeReply1.getId());   
    checkJudgeReply(judgeReply1, judgeReply);       
  }
 
  /**
   * Tests getJudgeReply method
   * @throws Exception to JUnit
   */
  public void testGetJudgeReply2() throws Exception {   
    JudgeReply judgeReply = persistence.getJudgeReply(judgeReply1.getId());   
    checkJudgeReply(judgeReply1, judgeReply);       
  }
 
  /**
   * Tests getJudgeReply method
   * @throws Exception to JUnit
   */
  public void testGetJudgeReply3() throws Exception {   
    JudgeReply judgeReply = persistence.getJudgeReply(judgeReply1.getId());   
    checkJudgeReply(judgeReply1, judgeReply);       
  }
 
  /**
   * Tests getJudgeReply method
   * @throws Exception to JUnit
   */
  public void testGetJudgeReply4() throws Exception {   
    JudgeReply judgeReply = persistence.getJudgeReply(1234567890l);     
    assertNull("no such contest", judgeReply);       
  }
 
 
 
  /**
   * Tests getAllJudgeReplies method
   * @throws Exception to JUnit
   */
  public void testGetAllJudgeReplies() throws Exception {   
   
    List judgeReplies = persistence.getAllJudgeReplies();
    for (int i = 0; i < 3; ++i) {
      JudgeReply judgeReply = (JudgeReply) judgeReplies.get(i);
      long id = judgeReply.getId();     
      assertEquals("wrong name", "judgeReply" + id, judgeReply.getName());
      assertEquals("wrong desc", "JudgeReply " + id, judgeReply.getDescription());
      assertEquals("wrong options", "style" + id, judgeReply.getStyle());
      assertEquals("wrong compiler", i % 2 == 0, judgeReply.isCommitted());           
    }
  }
 
  /**
   * Tests createJudgeReply method
   * @throws Exception to JUnit
   */
  public void testCreateJudgeReply() throws Exception {   
   
    persistence.createJudgeReply(new JudgeReply(4, "judgeReply4", "JudgeReply 4", "style4", false), 10);
   
    List judgeReplies = persistence.getAllJudgeReplies();
    for (int i = 0; i < 4; ++i) {
      JudgeReply judgeReply = (JudgeReply) judgeReplies.get(i);
      long id = judgeReply.getId();     
      assertEquals("wrong name", "judgeReply" + id, judgeReply.getName());
      assertEquals("wrong desc", "JudgeReply " + id, judgeReply.getDescription());
      assertEquals("wrong options", "style" + id, judgeReply.getStyle());
      assertEquals("wrong compiler", i % 2 == 0, judgeReply.isCommitted());           
    }
  }
 
  /**
   * Tests updateJudgeReply method
   * @throws Exception to JUnit
   */
  public void testUpdateJudgeReply() throws Exception {   
   
    List judgeReplies = persistence.getAllJudgeReplies();
    for (int i = 0; i < 3; ++i) {
      JudgeReply judgeReply = (JudgeReply) judgeReplies.get(i);     
      long id = judgeReply.getId();   
      persistence.updateJudgeReply(
          new JudgeReply(id, "new judgeReply" + id, "new JudgeReply " + id, "new style" + id, i % 2 == 1), 10);
    }
   
    judgeReplies = persistence.getAllJudgeReplies();
    for (int i = 0; i < 3; ++i) {
      JudgeReply judgeReply = (JudgeReply) judgeReplies.get(i);
      long id = judgeReply.getId();     
      assertEquals("wrong name", "new judgeReply" + id, judgeReply.getName());
      assertEquals("wrong desc", "new JudgeReply " + id, judgeReply.getDescription());
      assertEquals("wrong options", "new style" + id, judgeReply.getStyle());
      assertEquals("wrong compiler", i %2 == 1, judgeReply.isCommitted());           
    }   
  }
 
  /**
   * Tests deleteJudgeReply method
   * @throws Exception to JUnit
   */
  public void testDeleteJudgeReply() throws Exception {   
   
    List judgeReplies = persistence.getAllJudgeReplies();
    for (int i = 0; i < 3; ++i) {
      JudgeReply judgeReply = (JudgeReply) judgeReplies.get(i);     
      long id = judgeReply.getId();   
      persistence.deleteJudgeReply(id, 10);
    }
     
    judgeReplies = persistence.getAllJudgeReplies();
    assertEquals("wrong size", 0, judgeReplies.size());
   
  }
 

 
  /**
   * Creates a new limit.
   * @param id the id
   * @return a new limit instance
   */
  private Limit newLimit(long id) {
    Limit limit = new Limit();
    limit.setId(id);
    limit.setTimeLimit((int) id * 10);
    limit.setMemoryLimit((int) id * 100);
    limit.setOutputLimit((int) id * 1000);
    limit.setSubmissionLimit((int) id * 10000);   
    return limit;
  }

 
  /**
   * Creates a new contest.
   * @param id the id
   * @param forumId the forum id
   * @param limit the limit
   * @param languages  a list of languages
   * @return a new Contest instance
   */
  private Contest newContest(long id, long forumId, Limit limit, List languages) {
    Contest contest = new Contest();
    contest.setId(id);
    contest.setDescription("desc" + id);
    contest.setLimit(limit);
    contest.setLanguages(languages);
    contest.setTitle("title" + id);
    contest.setForumId(forumId);
    contest.setStartTime(new Date(id * 1000));
    contest.setEndTime(new Date(id * 2000));
    return contest;
 

  /**
   * Creates a new forum.
   * @param id the id
   * @return a new forum instance
   */
  private Forum newForum(long id) {
    Forum forum = new Forum();
    forum.setId(id);
    forum.setName("forum" + id);
    forum.setDescription("forum" + id + " description");
    return forum;
  }
 
  /**
   * Creates a new user profile.
   * @param id the id
   * @return a new user profile instance
   */
  private UserProfile newUserProfile(long id) {
    UserProfile profile = new UserProfile();
    profile.setId(id);
    profile.setHandle("myHandle" + id);
    profile.setPassword("myPassword");
    profile.setEmail("myEmail" + id);
    profile.setRegDate(new Date());
    profile.setFirstName("myFirstName");
    profile.setLastName("myLastName");
    profile.setAddressLine1("myAddressLine1");
    profile.setAddressLine2("myAddressLine2");
    profile.setCity("myCity");
    profile.setState("myState");
    profile.setCountry(new Country(1, "foo"));
    profile.setZipCode("myZipCode");
    profile.setPhoneNumber("myPhoneNumber");
    profile.setBirthDate(new Date(0));
    profile.setGender('M');           
    profile.setSchool("mySchool");
    profile.setMajor("myMajor");
    profile.setGraduateStudent(true);
    profile.setGraduationYear(2005);
    profile.setStudentNumber("myStudentNumber");
    profile.setConfirmed(false)
    return profile;
  }
 
  /**
   * Creates a new problem.
   * @param id the id
   * @param forumId the forum id
   * @param limit the limit
   * @param languages  a list of languages
   * @return a new Problem instance
   */
  private Problem newProblem(long id, long contestId, Limit limit) {
    Problem problem = new Problem();
    problem.setId(id);
    problem.setContestId(contestId);
    problem.setCode("code" + id);
    problem.setAuthor("author" + id);
    problem.setChecker(id % 2 == 1);
    problem.setContest("contest" + id);
    problem.setLimit(limit);
    problem.setRevision((int) id * 10);
    problem.setSource("source" + id);
    problem.setTitle("title" + id);   
    return problem;
 
 
  /**
   * Creates a new submission.
   * @param id the id
   * @param forumId the forum id
   * @param limit the limit
   * @param languages  a list of languages
   * @return a new Problem instance
   */
  private ExtendedSubmission newSubmission(
      long id, long problemId, long userId, Language language, JudgeReply reply) {
    ExtendedSubmission submission = new ExtendedSubmission();
    submission.setId(id);
    submission.setUserProfileId(userId);
    submission.setProblemId(problemId);
    submission.setLanguage(language);
    submission.setJudgeReply(reply);
    submission.setContent("contest" + id);
    submission.setTimeConsumption((int) id * 10);
    submission.setMemoryConsumption((int) id * 100);
    submission.setSubmitDate(new Date(id * 10000));
    submission.setJudgeDate(new Date(id * 20000));
    submission.setJudgeComment("comment" + id);
     
    return submission;
 

 
  /**
   * Checks whether the two Language instances are same.
   * @param language1 the expected language
   * @param language2 the language to check
   */
  private void checkLanguage(Language language1, Language language2) {
   
    assertEquals("wrong id", language1.getId(), language2.getId());
    assertEquals("wrong name", language1.getName(), language2.getName());
    assertEquals("wrong desc", language1.getDescription(), language2.getDescription());
    assertEquals("wrong options", language1.getOptions(), language2.getOptions());
    assertEquals("wrong compiler", language1.getCompiler(), language2.getCompiler())
  }
 
  /**
   * Checks whether the two JudgeReply instances are same.
   * @param judgeReply1 the expected language
   * @param judgeReply2 the language to check
   */
  private void checkJudgeReply(JudgeReply judgeReply1, JudgeReply judgeReply2) {
   
    assertEquals("wrong id", judgeReply1.getId(), judgeReply2.getId());
    assertEquals("wrong name", judgeReply1.getName(), judgeReply2.getName());
    assertEquals("wrong desc", judgeReply1.getDescription(), judgeReply2.getDescription());
    assertEquals("wrong style", judgeReply1.getStyle(), judgeReply2.getStyle());
    assertEquals("wrong committed", judgeReply1.isCommitted(), judgeReply2.isCommitted())
  }
 
  /**
   * Checks whether the two Submission instances are same.
   * @param submission1 the expected submission
   * @param submission2 the submission to check
   */
  private void checkSubmission(Submission submission1, Submission submission2) {
   
    assertEquals("wrong id", submission1.getId(), submission2.getId());
    assertEquals("wrong content", submission1.getContent(), submission2.getContent());
    assertEquals("wrong comment", submission1.getJudgeComment(), submission2.getJudgeComment());
    assertEquals("wrong judge date", submission1.getJudgeDate(), submission2.getJudgeDate());
    assertEquals("wrong memory consumption", submission1.getMemoryConsumption(), submission2.getMemoryConsumption());
    assertEquals("wrong problem i", submission1.getProblemId(), submission2.getProblemId());
    assertEquals("wrong submit date", submission1.getSubmitDate(), submission2.getSubmitDate())
    assertEquals("wrong time consumption", submission1.getTimeConsumption(), submission2.getTimeConsumption());
    assertEquals("wrong user", submission1.getUserProfileId(), submission2.getUserProfileId());
    checkJudgeReply(submission1.getJudgeReply(), submission2.getJudgeReply());
    checkLanguage(submission1.getLanguage(), submission2.getLanguage());
  }
 
  /**
   * Checks whether the two Submission  lists are same.
   * @param submissions1 the expected submission
   * @param submissions2 the submission to check
   */ 
  private void checkSubmissions(List submissions1, List submissions2) {
    assertEquals("wrong size", submissions1.size(), submissions2.size());
    Iterator it1 = submissions1.iterator();
    Iterator it2 = submissions2.iterator();
    while (it1.hasNext()) {
      checkSubmission((ExtendedSubmission) it1.next(), (ExtendedSubmission) it2.next());     
    }       
  } 
}



TOP

Related Classes of cn.edu.zju.acm.onlinejudge.persistence.sql.SubmissionPersistenceImplTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.