Ejemplo n.º 1
0
 def test_from_url(self):
     self.assertEqual(YukicoderService.from_url('https://yukicoder.me/'),
                      YukicoderService())
     self.assertEqual(
         YukicoderService.from_url('https://yukicoder.me/problems/no/9003'),
         YukicoderService())
     self.assertIsNone(YukicoderService.from_url('https://atcoder.jp/'))
Ejemplo n.º 2
0
 def test_get_problems(self):
     data = YukicoderService().get_problems(page=2, sort='no_asc')
     self.assertEqual(len(data), 50)
     self.assertEqual(data[3]['ナンバー'], 54)
     self.assertEqual(data[3]['問題名'], "Happy Hallowe'en")
     self.assertEqual(data[3]['レベル'], '4')
     self.assertEqual(data[3]['作問者/url'], '/users/4')
Ejemplo n.º 3
0
 def test_get_user_favorite_wiki_10(self):
     data = YukicoderService().get_user_favorite_wiki(id=10)
     it = list(
         filter(
             lambda row: row['Wikiページ'] == 'decomposable_searching_problem',
             data))
     self.assertEqual(len(it), 1)
Ejemplo n.º 4
0
 def test_get_user_favorite_problem_10(self):
     data = YukicoderService().get_user_favorite_problem(id=10)
     it = list(filter(lambda row: row['ナンバー'] == 111, data))
     self.assertEqual(len(it), 1)
     it = it[0]
     self.assertEqual(it['問題名'], 'あばばばば')
     self.assertEqual(it['レベル'], '1')
Ejemplo n.º 5
0
class LoginTest(unittest.TestCase):
    def snippet_call_login_check_failure(self, url):
        with tests.utils.sandbox(files=[]) as tempdir:
            path = 'cookie.jar'  # use dummy cookie to check in an empty state
            proc = tests.utils.run(['--cookie', path, 'login', '--check', url])
            self.assertEqual(proc.returncode, 1)

    def snippet_call_login_check_success(self, url):
        tests.utils.run(['login', '--check', url], check=True)

    def test_call_login_check_atcoder_failure(self):
        self.snippet_call_login_check_failure('https://atcoder.jp/')

    def test_call_login_check_codeforces_failure(self):
        self.snippet_call_login_check_failure('https://codeforces.com/')

    def test_call_login_check_hackerrank_failure(self):
        self.snippet_call_login_check_failure('https://www.hackerrank.com/')

    def test_call_login_check_topcoder_failure(self):
        self.snippet_call_login_check_failure(
            'https://community.topcoder.com/')

    def test_call_login_check_toph_failure(self):
        self.snippet_call_login_check_failure('https://toph.co/')

    def test_call_login_check_yukicoder_failure(self):
        self.snippet_call_login_check_failure('https://yukicoder.me/')

    @unittest.skipIf(not tests.utils.is_logged_in(AtCoderService()),
                     'login is required')
    def test_call_login_check_atcoder_success(self):
        self.snippet_call_login_check_success('https://atcoder.jp/')

    @unittest.skipIf(not tests.utils.is_logged_in(CodeforcesService()),
                     'login is required')
    def test_call_login_check_codeforces_success(self):
        self.snippet_call_login_check_success('https://codeforces.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(HackerRankService()),
                     'login is required')
    def test_call_login_check_hackerrank_success(self):
        self.snippet_call_login_check_success('https://www.hackerrank.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(TopcoderService()),
                     'login is required')
    def test_call_login_check_topcoder_success(self):
        self.snippet_call_login_check_success(
            'https://community.topcoder.com/')

    @unittest.skipIf(not tests.utils.is_logged_in(TophService()),
                     'login is required')
    def test_call_login_check_toph_success(self):
        self.snippet_call_login_check_success('https://toph.co/')

    @unittest.skipIf(not tests.utils.is_logged_in(YukicoderService()),
                     'login is required')
    def test_call_login_check_yukicoder_success(self):
        self.snippet_call_login_check_success('https://yukicoder.me/')
Ejemplo n.º 6
0
 def test_get_user_favorite_10(self):
     data = YukicoderService().get_user_favorite(id=10)
     it = list(filter(lambda row: row['#'] == 10000, data))
     self.assertEqual(len(it), 1)
     it = it[0]
     self.assertEqual(it['問題'], 'No.9000 Hello World! (テスト用)')
     self.assertEqual(it['結果'], 'AC')
     self.assertEqual(it['言語'], 'C++11')
Ejemplo n.º 7
0
class SubmitYukicoderTest(unittest.TestCase):
    @unittest.skipIf(not tests.utils.is_logged_in(YukicoderService()),
                     'login is required')
    def test_call_submit_9000(self):

        url = 'https://yukicoder.me/problems/no/9000'
        code = '\n'.join([
            '#!/usr/bin/env python2',
            'print "Hello World!"',
        ]) + '\n'
        files = [
            {
                'path': 'a.py',
                'data': code
            },
        ]
        with tests.utils.sandbox(files):
            tests.utils.run(['s', '-y', '--no-open', url, 'a.py'], check=True)

    @unittest.skipIf(not tests.utils.is_logged_in(YukicoderService()),
                     'login is required')
    def test_call_submit_beta_3_b(self):

        url = 'https://yukicoder.me/problems/527'
        code = r'''#include <bits/stdc++.h>
using namespace std;
int main() {
    int a, b; cin >> a >> b;
    string s; cin >> s;
    cout << a + b << ' ' << s << endl;
    return 0;
}
'''
        files = [
            {
                'path': 'main.cpp',
                'data': code
            },
        ]
        with tests.utils.sandbox(files):
            tests.utils.run(['s', '-y', '--no-open', url, 'main.cpp'],
                            check=True)
Ejemplo n.º 8
0
 def test_get_solved_10(self):
     data = YukicoderService().get_solved(id=10)
     self.assertGreater(len(data), 200)
     self.assertIn('No', data[0])
     self.assertIn('ProblemId', data[0])
     self.assertIn('Title', data[0])
     self.assertIn('AuthorId', data[0])
     self.assertIn('TesterId', data[0])
     self.assertIn('Level', data[0])
     self.assertIn('ProblemType', data[0])
     self.assertIn('Tags', data[0])
Ejemplo n.º 9
0
 def test_get_user_10(self):
     data = YukicoderService().get_user(id=10)
     self.assertIn('Id', data)
     self.assertIn('Name', data)
     self.assertIn('Solved', data)
     self.assertIn('Level', data)
     self.assertIn('Rank', data)
     self.assertIn('Score', data)
     self.assertIn('Points', data)
     self.assertEqual(data['Id'], 10)
     self.assertEqual(data['Name'], 'yuki2006')
Ejemplo n.º 10
0
class DownloadYukicoderTest(unittest.TestCase):
    def snippet_call_download(self, *args, **kwargs):
        tests.command_download.snippet_call_download(self, *args, **kwargs)

    def test_call_download_yukicoder_100(self):
        self.snippet_call_download(
            'http://yukicoder.me/problems/100', {
                'sample-3.out': '63a98316f78c5127e702db8fbea612a6',
                'sample-2.in': '3b6feb4b7d767c8e7314f59a1749d544',
                'sample-2.out': '9f4c0b1fca5cb6f886aa2e54442b1e1b',
                'sample-3.in': 'c12ec911666a5d65bf53e234291e402c',
                'sample-1.in': 'c8a8eeb947c8a1d6700d6f7fd151cb00',
                'sample-1.out': '3bb50ff8eeb7ad116724b56a820139fa',
            })

    @unittest.skipIf(not tests.utils.is_logged_in(YukicoderService()),
                     'login is required')
    def test_call_download_yukicoder_no_8_system(self):
        self.snippet_call_download(
            'https://yukicoder.me/problems/no/8', {
                '01.txt.in': '04e90eb0c4a65eefa084dfea8e89de9f',
                '01.txt.out': 'fc07e56c1012af450b912af02f1e7c30',
                '02.txt.in': 'e867414a12769d8adc9086093620b4a3',
                '02.txt.out': '92289ff0469cfacb19a2809e6b44b93a',
                '03.txt.in': 'c15d6580553f2be2c4b133441da760f3',
                '03.txt.out': '5ff2d623f9ec55b7207a0e15f076a511',
                '04.txt.in': 'e28f58da56e572f4f27f9b837a4fe8c5',
                '04.txt.out': 'b9d27fd37514d704abe776e239029fae',
                '05.txt.in': 'd04e3cd98784a870b8dae31ab8e2c935',
                '05.txt.out': '559ffd2e020994c7117fdc38da1dd97d',
                '06.txt.in': '897059f9374e64ed03e09a5b5044794c',
                '06.txt.out': 'a3d50a58dc67267b5e4619ecf73b2dcc',
                '07.txt.in': '69d224c83e03e0c3f6ff466fa06bc7dc',
                '07.txt.out': 'a3d50a58dc67267b5e4619ecf73b2dcc',
                '08.txt.in': 'de61c37c042526933ac9ff5c99dd8681',
                '08.txt.out': 'a3d50a58dc67267b5e4619ecf73b2dcc',
                '09.txt.in': 'b627b556c53cb20b9ae8fa4665925aa9',
                '09.txt.out': 'a3d50a58dc67267b5e4619ecf73b2dcc',
                '10.txt.in': '735f5246a7bde15f85ae368917eee087',
                '10.txt.out': 'a3d50a58dc67267b5e4619ecf73b2dcc',
                '99_system_test1.txt.in': '1e5aa1c7ed5de43807f7ceae3ab60b82',
                '99_system_test1.txt.out': '03a0df412a4b34652f3ef094e6dd4eda',
            },
            is_system=True)
Ejemplo n.º 11
0
 def test_get_submissions(self):
     data = YukicoderService().get_submissions(page=3, status='TLE')
     self.assertEqual(len(data), 50)
     self.assertEqual(data[4]['結果'], 'TLE')
Ejemplo n.º 12
0
 def test_get_solved_0(self):
     data = YukicoderService().get_solved(id=0)
     self.assertIsNone(data)
Ejemplo n.º 13
0
 def test_get_solved_yuki2006(self):
     data = YukicoderService().get_solved(name='yuki2006')
     self.assertGreater(len(data), 200)
Ejemplo n.º 14
0
 def test_get_user_0(self):
     data = YukicoderService().get_user(id=0)
     self.assertIsNone(data)
Ejemplo n.º 15
0
 def test_get_user_yuki2006(self):
     data = YukicoderService().get_user(name='yuki2006')
     self.assertEqual(data['Id'], 10)
     self.assertEqual(data['Name'], 'yuki2006')
Ejemplo n.º 16
0
 def test_get_submissions(self):
     data = YukicoderService().get_submissions(page=3, status='TLE')
     self.assertEqual(len(data), 50)
     # yukicoder returns sentence such as 'TLE\n(最新)--\nAC' when the submission was rejudged and judge status was changed.
     self.assertTrue(data[4]['結果'] == 'TLE' or 'TLE\n(最新)' in data[4]['結果'])