コード例 #1
0
ファイル: tests.py プロジェクト: kinjelom/oioioi
 def test_make_problem_filename(self):
     p12 = Problem(pk=12)
     self.assertEqual(make_problem_filename(p12, 'a/hej.txt'),
                      'problems/12/hej.txt')
     ps = ProblemStatement(pk=22, problem=p12)
     self.assertEqual(make_problem_filename(ps, 'a/hej.txt'),
                      'problems/12/hej.txt')
コード例 #2
0
 def test_fields_autogeneration(self):
     contest = Contest()
     contest.save()
     self.assertEqual(contest.id, 'c1')
     round = Round(contest=contest)
     round.save()
     self.assertEqual(round.name, 'Round 1')
     round = Round(contest=contest)
     round.save()
     self.assertEqual(round.name, 'Round 2')
     problem = Problem()
     problem.save()
     pi = ProblemInstance(round=round, problem=problem)
     pi.save()
     self.assertEqual(pi.contest, contest)
コード例 #3
0
ファイル: tests.py プロジェクト: cytadela8/oioioi
    def setUp(self):
        class MockRequest(object):
            def __init__(self):
                self.user = AnonymousUser()

        # mocking up a request below becouse I am NOT testing whole view
        self.request = MockRequest()

        for i in range(1, 5):
            name = 'problem_%s_name' % i
            url_key = 'problem_%s_key' % i
            problem = Problem(name=name, short_name=name, is_public=True)
            problem.save()
            site = ProblemSite(problem=problem, url_key=url_key)
            site.save()
コード例 #4
0
    def setUp(self):
        class MockRequest(object):
            def __init__(self):
                self.user = AnonymousUser()

        # mocking up a request below because I am NOT testing the whole view
        self.request = MockRequest()

        for i in range(1, 5):
            name = 'problem_%s_name' % i
            url_key = 'problem_%s_key' % i
            problem = Problem(name=name, short_name=name, visibility=Problem.VISIBILITY_PUBLIC)
            problem.save()
            site = ProblemSite(problem=problem, url_key=url_key)
            site.save()
コード例 #5
0
    def unpack(self, existing_problem=None):
        self.short_name = self._find_main_folder()

        if existing_problem:
            self.problem = existing_problem
            if existing_problem.short_name != self.short_name:
                raise ProblemPackageError(
                    _("Tried to replace problem "
                      "'%(oldname)s' with '%(newname)s'. For safety, changing "
                      "problem short name is not possible.") %
                    dict(oldname=existing_problem.short_name,
                         newname=self.short_name))
        else:
            self.problem = Problem(
                name=self.short_name,
                short_name=self.short_name,
                controller_name=
                'oioioi.sinolpack.controllers.SinolProblemController')

        self.problem.package_backend_name = \
                'oioioi.sinolpack.package.SinolPackageBackend'
        self.problem.save()

        tmpdir = tempfile.mkdtemp()
        logger.info('%s: tmpdir is %s', self.filename, tmpdir)
        try:
            self.archive.extract(to_path=tmpdir)
            self.rootdir = os.path.join(tmpdir, self.short_name)
            self._process_config_yml()
            self._detect_full_name()
            self._extract_makefiles()
            self._process_statements()
            self._generate_tests()
            self._process_tests()
            self._process_checkers()
            self._process_extra_files()
            self._process_model_solutions()
            self._save_original_package()
            return self.problem
        finally:
            shutil.rmtree(tmpdir)
コード例 #6
0
ファイル: tests.py プロジェクト: kinjelom/oioioi
 def test_problem_controller_property(self):
     problem = Problem(
         controller_name='oioioi.problems.tests.TestProblemController')
     self.assert_(isinstance(problem.controller, TestProblemController))