Example #1
0
 def test_file_based_assert(self):
     self.file_paths = [('/tmp/test.txt', False)]
     self.test_case_data = [{
         "test_case": "c_cpp_files/file_data.c",
         "weight": 0.0
     }]
     user_answer = dedent("""
         #include<stdio.h>
         char ans()
         {
         FILE *fp;
         char buff[255];
         fp = fopen("test.txt", "r");
         fscanf(fp, "%s", buff);
         fclose(fp);
         return buff[0];
         }
         """)
     get_class = CppCodeEvaluator(self.in_dir)
     kwargs = {
         'user_answer': user_answer,
         'partial_grading': False,
         'test_case_data': self.test_case_data,
         'file_paths': self.file_paths
     }
     result = get_class.evaluate(**kwargs)
     self.assertTrue(result.get('success'))
     self.assertEqual(result.get('error'), "Correct answer\n")
Example #2
0
 def test_infinite_loop(self):
     user_answer = "int add(int a, int b)\n{while(1>0){}}"
     get_class = CppCodeEvaluator(self.in_dir)
     kwargs = {
         'user_answer': user_answer,
         'test_case_data': self.test_case_data,
         'file_paths': self.file_paths
     }
     result = get_class.evaluate(**kwargs)
     self.assertFalse(result.get("success"))
     self.assertEquals(result.get("error"), self.timeout_msg)
Example #3
0
 def test_compilation_error(self):
     user_answer = "int add(int a, int b)\n{return a+b}"
     get_class = CppCodeEvaluator(self.in_dir)
     kwargs = {
         'user_answer': user_answer,
         'test_case_data': self.test_case_data,
         'file_paths': self.file_paths
     }
     result = get_class.evaluate(**kwargs)
     self.assertFalse(result.get("success"))
     self.assertTrue("Compilation Error" in result.get("error"))
Example #4
0
 def test_correct_answer(self):
     user_answer = "int add(int a, int b)\n{return a+b;}"
     get_class = CppCodeEvaluator(self.in_dir)
     kwargs = {
         'user_answer': user_answer,
         'test_case_data': self.test_case_data,
         'file_paths': self.file_paths
     }
     result = get_class.evaluate(**kwargs)
     self.assertTrue(result.get('success'))
     self.assertEquals(result.get('error'), "Correct answer")
Example #5
0
 def test_incorrect_answer(self):
     user_answer = "int add(int a, int b)\n{return a-b;}"
     get_class = CppCodeEvaluator(self.in_dir)
     kwargs = {
         'user_answer': user_answer,
         'test_case_data': self.test_case_data,
         'file_paths': self.file_paths
     }
     result = get_class.evaluate(**kwargs)
     self.assertFalse(result.get('success'))
     self.assertIn("Incorrect:", result.get('error'))
     self.assertTrue(result.get('error').splitlines > 1)