summaryrefslogtreecommitdiff
path: root/testapp/test_server.py
diff options
context:
space:
mode:
Diffstat (limited to 'testapp/test_server.py')
-rw-r--r--testapp/test_server.py250
1 files changed, 0 insertions, 250 deletions
diff --git a/testapp/test_server.py b/testapp/test_server.py
deleted file mode 100644
index 9319d5b..0000000
--- a/testapp/test_server.py
+++ /dev/null
@@ -1,250 +0,0 @@
-import unittest
-import os
-# from exam import evaluate_c_code, evaluate_cpp_code, evaluate_java_code, evaluate_python_code, evaluate_scilab_code, evaluate_bash_code
-from exam import c_cpp_code_evaluator, bash_code_evaluator, python_code_evaluator, scilab_code_evaluator, java_code_evaluator
-from exam.language_registry import set_registry, get_registry
-from exam.settings import SERVER_TIMEOUT
-
-
-class RegistryTestCase(unittest.TestCase):
- def setUp(self):
- set_registry()
- self.registry_object = get_registry()
-
- def test_set_register(self):
- self.registry_object.register("demo_language", "demo_object")
- self.assertEquals(self.registry_object._registry["demo_language"], "demo_object")
-
- def test_get_class(self):
- self.test_set_register()
- cls = self.registry_object.get_class("demo_language")
- self.assertEquals(cls, "demo_object")
-
- def tearDown(self):
- self.registry_object = None
-
-
-###############################################################################
-class PythonEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "Python"
- self.test_case_data = [{"func_name": "add",
- "expected_answer": "5",
- "test_id": u'null',
- "pos_args": ["3", "2"],
- "kw_args": {}
- }]
- self.timeout_msg = ("Code took more than {0} seconds to run. "
- "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT)
-
- def test_correct_answer(self):
- user_answer = "def add(a, b):\n\treturn a + b"""
- get_class = python_code_evaluator.PythonCodeEvaluator(self.test_case_data, self.language, user_answer, ref_code_path=None, in_dir=None)
- result = get_class.code_evaluator()
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_incorrect_answer(self):
- user_answer = "def add(a, b):\n\treturn a - b"
- test_case_data = [{"func_name": "add",
- "expected_answer": "5",
- "test_id": u'null',
- "pos_args": ["3", "2"],
- "kw_args": {}
- }]
- get_class = python_code_evaluator.PythonCodeEvaluator(self.test_case_data, self.language, user_answer, ref_code_path=None, in_dir=None)
- result = get_class.code_evaluator()
- self.assertFalse(result.get("success"))
- self.assertEqual(result.get("error"), "AssertionError in: assert add(3, 2) == 5")
-
- def test_infinite_loop(self):
- user_answer = "def add(a, b):\n\twhile True:\n\t\tpass"""
- test_case_data = [{"func_name": "add",
- "expected_answer": "5",
- "test_id": u'null',
- "pos_args": ["3", "2"],
- "kw_args": {}
- }]
- get_class = python_code_evaluator.PythonCodeEvaluator(self.test_case_data, self.language, user_answer, ref_code_path=None, in_dir=None)
- result = get_class.code_evaluator()
- self.assertFalse(result.get("success"))
- self.assertEquals(result.get("error"), self.timeout_msg)
-
-
-###############################################################################
-class CEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "C"
- self.ref_code_path = "c_cpp_files/main.cpp"
- self.in_dir = "/tmp"
- self.test_case_data = []
- self.timeout_msg = ("Code took more than {0} seconds to run. "
- "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT)
-
-
- def test_correct_answer(self):
- user_answer = "int add(int a, int b)\n{return a+b;}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_compilation_error(self):
- user_answer = "int add(int a, int b)\n{return a+b}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertTrue("Compilation Error" in result.get("error"))
-
- def test_infinite_loop(self):
- user_answer = "int add(int a, int b)\n{while(1>0){}}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertEquals(result.get("error"), self.timeout_msg)
-
-
-###############################################################################
-class CppEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "CPP"
- self.ref_code_path = "c_cpp_files/main.cpp"
- self.in_dir = "/tmp"
- self.test_case_data = []
- self.timeout_msg = ("Code took more than {0} seconds to run. "
- "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT)
-
-
- def test_correct_answer(self):
- user_answer = "int add(int a, int b)\n{return a+b;}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_compilation_error(self):
- user_answer = "int add(int a, int b)\n{return a+b}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertTrue("Compilation Error" in result.get("error"))
-
- def test_infinite_loop(self):
- user_answer = "int add(int a, int b)\n{while(1>0){}}"
- get_class = c_cpp_code_evaluator.CCppCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertEquals(result.get("error"), self.timeout_msg)
-
-
-###############################################################################
-class BashEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "bash"
- self.ref_code_path = "bash_files/sample.sh,bash_files/sample.args"
- self.in_dir = "/tmp"
- self.test_case_data = []
- self.timeout_msg = ("Code took more than {0} seconds to run. "
- "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT)
-
- def test_correct_answer(self):
- user_answer = "#!/bin/bash\n[[ $# -eq 2 ]] && echo $(( $1 + $2 )) && exit $(( $1 + $2 ))"
- get_class = bash_code_evaluator.BashCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_error(self):
- user_answer = "#!/bin/bash\n[[ $# -eq 2 ]] && echo $(( $1 - $2 )) && exit $(( $1 - $2 ))"
- get_class = bash_code_evaluator.BashCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertTrue("Error" in result.get("error"))
-
- def test_infinite_loop(self):
- user_answer = "#!/bin/bash\nwhile [ 1 ] ; do echo "" > /dev/null ; done"
- get_class = bash_code_evaluator.BashCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertEquals(result.get("error"), self.timeout_msg)
-
-
-###############################################################################
-class JavaEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "java"
- self.ref_code_path = "java_files/main_square.java"
- self.in_dir = "/tmp"
- self.test_case_data = []
- self.timeout_msg = ("Code took more than {0} seconds to run. "
- "You probably have an infinite loop in your code.").format(SERVER_TIMEOUT)
-
- def test_correct_answer(self):
- user_answer = "class Test {\n\tint square_num(int a) {\n\treturn a*a;\n\t}\n}"
- get_class = evaluate_java_code.EvaluateJavaCode(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.run_code()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_error(self):
- user_answer = "class Test {\n\tint square_num(int a) {\n\treturn a*a"
- get_class = evaluate_java_code.EvaluateJavaCode(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.run_code()
-
- self.assertFalse(result.get("success"))
- self.assertTrue("Error" in result.get("error"))
-
- def test_infinite_loop(self):
- user_answer = "class Test {\n\tint square_num(int a) {\n\t\twhile(0==0){\n\t\t}\n\t}\n}"
- get_class = evaluate_java_code.EvaluateJavaCode(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.run_code()
-
- self.assertFalse(result.get("success"))
- self.assertEquals(result.get("error"), self.timeout_msg)
-
-
-###############################################################################
-class ScilabEvaluationTestCases(unittest.TestCase):
- def setUp(self):
- self.language = "scilab"
- self.ref_code_path = "scilab_files/test_add.sce"
- self.in_dir = "/tmp"
- self.test_case_data = []
-
- def test_correct_answer(self):
- user_answer = "funcprot(0)\nfunction[c]=add(a,b)\n\tc=a+b;\nendfunction"
- get_class = scilab_code_evaluator.ScilabCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_correct_answer_2(self):
- user_answer = "funcprot(0)\nfunction[c]=add(a,b)\n\tc=a-b;\nendfunction"
- get_class = scilab_code_evaluator.ScilabCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertTrue(result.get("success"))
- self.assertEqual(result.get("error"), "Correct answer")
-
- def test_error(self):
- user_answer = "funcprot(0)\nfunction[c]=add(a,b)\n\t c=a+b;\ndis(\tendfunction"
- get_class = scilab_code_evaluator.ScilabCodeEvaluator(self.test_case_data, self.language, user_answer, self.ref_code_path, self.in_dir)
- result = get_class.code_evaluator()
-
- self.assertFalse(result.get("success"))
- self.assertTrue("Error" in result.get("error"))
-
-
-if __name__ == '__main__':
- unittest.main() \ No newline at end of file