class SubmitTophTest(unittest.TestCase): @unittest.skipIf(not tests.utils.is_logged_in(TophService()), 'login is required') def test_call_submit_copycat(self): url = 'https://toph.co/p/copycat' code = '''#!/usr/bin/env python3 s = input() print(s) ''' files = [ { 'path': 'a.py', 'data': code }, ] with tests.utils.sandbox(files): tests.utils.run([ 's', '-l', '58482c1804469e2585024324', '-y', '--no-open', url, 'a.py' ], check=True) @unittest.skipIf(not tests.utils.is_logged_in(TophService()), 'login is required') def test_call_submit_divisors(self): url = 'https://toph.co/p/divisors' code = '''#include<bits/stdc++.h> using namespace std; int main() { int a; cin>>a; for (int i=1;i<=a;i++) { if (a%i==0) { cout <<i<<endl; } } } ''' files = [ { 'path': 'a.cpp', 'data': code }, ] with tests.utils.sandbox(files): tests.utils.run(['s', '-y', '--no-open', url, 'a.cpp'], check=True)
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/')