예제 #1
0
    def test_load_from_json(self):
        d = {
            "id": 88042,
            "creationTimeSeconds": 1387381320,
            "hacker": {
                "contestId": 374,
                "members": [{
                    "handle": "ocozalp"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 24,
                "startTimeSeconds": 1387380600
            },
            "defender": {
                "contestId": 374,
                "members": [{
                    "handle": "h1me"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 24,
                "startTimeSeconds": 1387380600
            },
            "verdict": "HACK_SUCCESSFUL",
            "problem": {
                "contestId": 374,
                "index": "A",
                "name": "Inna and Pink Pony",
                "type": "PROGRAMMING",
                "points": 500.0,
                "tags": ["greedy", "implementation"]
            },
            "test": "1 5 1 3 1 1\r\n\n",
            "judgeProtocol": {
                "manual":
                "true",
                "protocol":
                "Solution verdict: \nWRONG_ANSWER\n\nChecker: \nwrong answer 1st words differ - "
                "expected: \u0027Poor\u0027, found: \u00272\u0027\r\n\n\nInput: \n1 5 1 3 1 1\r\n\n\n"
                "Output: \n2\r\n\n\nAnswer: \nPoor Inna and pony!\r\n\n\nTime: \n62\n\nMemory: \n0\n",
                "verdict":
                "Successful hacking attempt"
            }
        }

        j = json.dumps(d)

        self.hack.load_from_json(j)

        self.assertEqual(88042, self.hack.id)
        self.assertEqual(1387381320, self.hack.creation_time)
        self.assertEqual(Party(d['hacker']), self.hack.hacker)
        self.assertEqual(Party(d['defender']), self.hack.defender)
        self.assertEqual(HackVerdictType.hack_successful, self.hack.verdict)
        self.assertEqual(Problem(d['problem']), self.hack.problem)
        self.assertEqual("1 5 1 3 1 1\r\n\n", self.hack.test)
        self.assertEqual(JudgeProtocol(d['judgeProtocol']),
                         self.hack.judge_protocol)
예제 #2
0
    def test_load_only_required_from_json(self):
        """
        Required fields are:
            id,
            creationTimeSeconds,
            hacker,
            defender,
            problem
        """

        d = {
            "id": 88042,
            "creationTimeSeconds": 1387381320,
            "hacker": {
                "contestId": 374,
                "members": [{
                    "handle": "ocozalp"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 24,
                "startTimeSeconds": 1387380600
            },
            "defender": {
                "contestId": 374,
                "members": [{
                    "handle": "h1me"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 24,
                "startTimeSeconds": 1387380600
            },
            "problem": {
                "contestId": 374,
                "index": "A",
                "name": "Inna and Pink Pony",
                "type": "PROGRAMMING",
                "points": 500.0,
                "tags": ["greedy", "implementation"]
            }
        }

        j = json.dumps(d)

        self.hack.load_from_json(j)

        self.assertEqual(88042, self.hack.id)
        self.assertEqual(1387381320, self.hack.creation_time)
        self.assertEqual(Party(d['hacker']), self.hack.hacker)
        self.assertEqual(Party(d['defender']), self.hack.defender)
        self.assertEqual(Problem(d['problem']), self.hack.problem)

        self.assertIsNone(self.hack.verdict)
        self.assertIsNone(self.hack.test)
        self.assertIsNone(self.hack.judge_protocol)
예제 #3
0
    def test_load_from_json(self):
        d = {
            "id": 7268482,
            "contestId": 452,
            "creationTimeSeconds": 1406487265,
            "relativeTimeSeconds": 6865,
            "problem": {
                "contestId":
                452,
                "index":
                "E",
                "name":
                "Three strings",
                "type":
                "PROGRAMMING",
                "points":
                2500.0,
                "tags": [
                    "data structures", "dsu", "string suffix structures",
                    "strings"
                ]
            },
            "author": {
                "contestId": 452,
                "members": [{
                    "handle": "Fefer_Ivan"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 86,
                "startTimeSeconds": 1406480400
            },
            "programmingLanguage": "GNU C++0x",
            "verdict": "OK",
            "testset": "TESTS",
            "passedTestCount": 67,
            "timeConsumedMillis": 343,
            "memoryConsumedBytes": 34816000
        }

        json = str(d).replace('False', 'false').replace("'", '"')

        self.submission.load_from_json(json)

        self.assertEqual(7268482, self.submission.id)
        self.assertEqual(452, self.submission.contest_id)
        self.assertEqual(1406487265, self.submission.creation_time)
        self.assertEqual(6865, self.submission.relative_time)
        self.assertEqual(Problem(d['problem']), self.submission.problem)
        self.assertEqual(Party(d['author']), self.submission.author)
        self.assertEqual("GNU C++0x", self.submission.programming_language)
        self.assertEqual(VerdictType.ok, self.submission.verdict)
        self.assertEqual(TestsetType.tests, self.submission.testset)
        self.assertEqual(67, self.submission.passed_test_count)
        self.assertEqual(343, self.submission.time_consumed)
        self.assertEqual(34816000, self.submission.memory_consumed)
예제 #4
0
    def load_only_required_from_dict(self):
        """
        Required fields are:

            party
            rank
            points
            penalty
            successfulHackCount
            unsuccessfulHackCount
            problemResults
        """
        d = {
            "party": {
                "contestId": 374,
                "members": [{
                    "handle": "Deception"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 46,
                "startTimeSeconds": 1387380600
            },
            "rank":
            1,
            "points":
            4902.0,
            "penalty":
            0,
            "successfulHackCount":
            11,
            "unsuccessfulHackCount":
            1,
            "problemResults": [{
                "points": 312.0,
                "rejectedAttemptCount": 1,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 4174
            }, {
                "points": 596.0,
                "rejectedAttemptCount": 2,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 4583
            }, {
                "points": 1128.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 3751
            }, {
                "points": 1816.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 1430
            }, {
                "points": 0.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL"
            }]
        }

        self.row.load_from_dict(d)

        self.assertEqual(Party(d['party']), self.row.party)
        self.assertEqual(1, self.row.rank)
        self.assertEqual(4902.0, self.row.points)
        self.assertEqual(0, self.row.penalty)
        self.assertEqual(11, self.row.successful_hack_count)
        self.assertEqual(1, self.row.unsuccessful_hack_count)
        self.assertEqual(list(map(ProblemResult, d['problemResults'])),
                         self.row.problem_results)

        self.assertIsNone(self.row.last_submission_time)
예제 #5
0
    def test_load_from_json(self):
        d = {
            "party": {
                "contestId": 374,
                "members": [{
                    "handle": "Deception"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 46,
                "startTimeSeconds": 1387380600
            },
            "rank":
            1,
            "points":
            4902.0,
            "penalty":
            0,
            "successfulHackCount":
            11,
            "unsuccessfulHackCount":
            1,
            "problemResults": [{
                "points": 312.0,
                "rejectedAttemptCount": 1,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 4174
            }, {
                "points": 596.0,
                "rejectedAttemptCount": 2,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 4583
            }, {
                "points": 1128.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 3751
            }, {
                "points": 1816.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL",
                "bestSubmissionTimeSeconds": 1430
            }, {
                "points": 0.0,
                "rejectedAttemptCount": 0,
                "type": "FINAL"
            }],
            "lastSubmissionTimeSeconds":
            424242
        }

        json = str(d).replace('False', 'false').replace("'", '"')

        self.row.load_from_json(json)

        self.assertEqual(Party(d['party']), self.row.party)
        self.assertEqual(1, self.row.rank)
        self.assertEqual(4902.0, self.row.points)
        self.assertEqual(0, self.row.penalty)
        self.assertEqual(11, self.row.successful_hack_count)
        self.assertEqual(1, self.row.unsuccessful_hack_count)
        self.assertEqual(list(map(ProblemResult, d['problemResults'])),
                         self.row.problem_results)
        self.assertEqual(424242, self.row.last_submission_time)
예제 #6
0
 def setUp(self):
     self.party = Party()
예제 #7
0
class PartyTests(unittest.TestCase):
    def setUp(self):
        self.party = Party()

    def test_load_from_dict(self):
        d = {
            "contestId": 374,
            "members": [{
                "handle": "ocozalp"
            }, {
                "handle": "awesomeHandle"
            }],
            "participantType": "CONTESTANT",
            "teamId": 42,
            "teamName": "The best team. Ever",
            "ghost": False,
            "room": 24,
            "startTimeSeconds": 1387380600
        }

        self.party.load_from_dict(d)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([
            Member({"handle": "ocozalp"}),
            Member({"handle": "awesomeHandle"})
        ], self.party.members)
        self.assertEqual(ParticipantType.contestant,
                         self.party.participant_type)
        self.assertEqual(42, self.party.team_id)
        self.assertEqual("The best team. Ever", self.party.team_name)
        self.assertEqual(False, self.party.ghost)
        self.assertEqual(24, self.party.room)
        self.assertEqual(1387380600, self.party.start_time)

    def test_load_only_required_from_dict(self):
        """
        Required fields are:

            contestId,
            members,
            participantType,
            ghost
        """
        d = {
            "contestId": 374,
            "members": [{
                "handle": "ocozalp"
            }, {
                "handle": "awesomeHandle"
            }],
            "participantType": "CONTESTANT",
            "ghost": False
        }

        self.party.load_from_dict(d)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([
            Member({"handle": "ocozalp"}),
            Member({"handle": "awesomeHandle"})
        ], self.party.members)
        self.assertEqual(ParticipantType.contestant,
                         self.party.participant_type)
        self.assertEqual(False, self.party.ghost)

        self.assertIsNone(self.party.team_id)
        self.assertIsNone(self.party.team_name)
        self.assertIsNone(self.party.room)
        self.assertIsNone(self.party.start_time)

    def test_load_from_json(self):
        json = '''{
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "teamId": 42,
            "teamName": "The best team. Ever",
            "ghost": false,
            "room": 24,
            "startTimeSeconds": 1387380600
        }'''

        self.party.load_from_json(json)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([
            Member({"handle": "ocozalp"}),
            Member({"handle": "awesomeHandle"})
        ], self.party.members)
        self.assertEqual(ParticipantType.contestant,
                         self.party.participant_type)
        self.assertEqual(42, self.party.team_id)
        self.assertEqual("The best team. Ever", self.party.team_name)
        self.assertEqual(False, self.party.ghost)
        self.assertEqual(24, self.party.room)
        self.assertEqual(1387380600, self.party.start_time)

    def test_load_only_required_from_json(self):
        """
        Required fields are:

            contestId,
            members,
            participantType,
            ghost
        """
        json = '''{
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "ghost": false
        }'''

        self.party.load_from_json(json)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([
            Member({"handle": "ocozalp"}),
            Member({"handle": "awesomeHandle"})
        ], self.party.members)
        self.assertEqual(ParticipantType.contestant,
                         self.party.participant_type)
        self.assertEqual(False, self.party.ghost)

        self.assertIsNone(self.party.team_id)
        self.assertIsNone(self.party.team_name)
        self.assertIsNone(self.party.room)
        self.assertIsNone(self.party.start_time)
예제 #8
0
    def test_load_only_required_from_dict(self):
        """
        Required fields are:

            id
            contestId
            creationTimeSeconds
            relativeTimeSeconds
            problem
            author
            programmingLanguage
            testset
            passedTestCount
            timeConsumedMillis
            memoryConsumedBytes
        """
        d = {
            "id": 7268482,
            "contestId": 452,
            "creationTimeSeconds": 1406487265,
            "relativeTimeSeconds": 6865,
            "problem": {
                "contestId":
                452,
                "index":
                "E",
                "name":
                "Three strings",
                "type":
                "PROGRAMMING",
                "points":
                2500.0,
                "tags": [
                    "data structures", "dsu", "string suffix structures",
                    "strings"
                ]
            },
            "author": {
                "contestId": 452,
                "members": [{
                    "handle": "Fefer_Ivan"
                }],
                "participantType": "CONTESTANT",
                "ghost": False,
                "room": 86,
                "startTimeSeconds": 1406480400
            },
            "programmingLanguage": "GNU C++0x",
            "testset": "TESTS",
            "passedTestCount": 67,
            "timeConsumedMillis": 343,
            "memoryConsumedBytes": 34816000
        }

        self.submission.load_from_dict(d)

        self.assertEqual(7268482, self.submission.id)
        self.assertEqual(452, self.submission.contest_id)
        self.assertEqual(1406487265, self.submission.creation_time)
        self.assertEqual(6865, self.submission.relative_time)
        self.assertEqual(Problem(d['problem']), self.submission.problem)
        self.assertEqual(Party(d['author']), self.submission.author)
        self.assertEqual("GNU C++0x", self.submission.programming_language)
        self.assertEqual(TestsetType.tests, self.submission.testset)
        self.assertEqual(67, self.submission.passed_test_count)
        self.assertEqual(343, self.submission.time_consumed)
        self.assertEqual(34816000, self.submission.memory_consumed)

        self.assertIsNone(self.submission.verdict)
예제 #9
0
 def setUp(self):
     self.party = Party()
예제 #10
0
class PartyTests(unittest.TestCase):

    def setUp(self):
        self.party = Party()

    def test_load_from_dict(self):
        d = {
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "teamId": 42,
            "teamName": "The best team. Ever",
            "ghost": False,
            "room": 24,
            "startTimeSeconds": 1387380600
        }

        self.party.load_from_dict(d)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([Member({"handle": "ocozalp"}),
                          Member({"handle": "awesomeHandle"})],
                         self.party.members)
        self.assertEqual(ParticipantType.contestant, self.party.participant_type)
        self.assertEqual(42, self.party.team_id)
        self.assertEqual("The best team. Ever", self.party.team_name)
        self.assertEqual(False, self.party.ghost)
        self.assertEqual(24, self.party.room)
        self.assertEqual(1387380600, self.party.start_time)

    def test_load_only_required_from_dict(self):
        """
        Required fields are:

            contestId,
            members,
            participantType,
            ghost
        """
        d = {
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "ghost": False
        }

        self.party.load_from_dict(d)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([Member({"handle": "ocozalp"}),
                          Member({"handle": "awesomeHandle"})],
                         self.party.members)
        self.assertEqual(ParticipantType.contestant, self.party.participant_type)
        self.assertEqual(False, self.party.ghost)

        self.assertIsNone(self.party.team_id)
        self.assertIsNone(self.party.team_name)
        self.assertIsNone(self.party.room)
        self.assertIsNone(self.party.start_time)

    def test_load_from_json(self):
        json = '''{
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "teamId": 42,
            "teamName": "The best team. Ever",
            "ghost": false,
            "room": 24,
            "startTimeSeconds": 1387380600
        }'''

        self.party.load_from_json(json)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([Member({"handle": "ocozalp"}),
                          Member({"handle": "awesomeHandle"})],
                         self.party.members)
        self.assertEqual(ParticipantType.contestant, self.party.participant_type)
        self.assertEqual(42, self.party.team_id)
        self.assertEqual("The best team. Ever", self.party.team_name)
        self.assertEqual(False, self.party.ghost)
        self.assertEqual(24, self.party.room)
        self.assertEqual(1387380600, self.party.start_time)

    def test_load_only_required_from_json(self):
        """
        Required fields are:

            contestId,
            members,
            participantType,
            ghost
        """
        json = '''{
            "contestId": 374,
            "members": [{"handle": "ocozalp"},
                        {"handle": "awesomeHandle"}],
            "participantType": "CONTESTANT",
            "ghost": false
        }'''

        self.party.load_from_json(json)

        self.assertEqual(374, self.party.contest_id)
        self.assertEqual([Member({"handle": "ocozalp"}),
                          Member({"handle": "awesomeHandle"})],
                         self.party.members)
        self.assertEqual(ParticipantType.contestant, self.party.participant_type)
        self.assertEqual(False, self.party.ghost)

        self.assertIsNone(self.party.team_id)
        self.assertIsNone(self.party.team_name)
        self.assertIsNone(self.party.room)
        self.assertIsNone(self.party.start_time)