/* * 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()); } } }