| import unittest | |
| from opencompass.datasets.humaneval import humaneval_postprocess | |
| def run_humaneval_check(completion): | |
| program = [ | |
| 'def get_fraction(x: float) -> float:', | |
| humaneval_postprocess(completion), | |
| '', | |
| 'assert get_fraction(1.28) == 0.28', | |
| 'assert get_fraction(1.0) == 0.0', | |
| ] | |
| program = '\n'.join(program) | |
| exec(program) | |
| class TestHumaneval(unittest.TestCase): | |
| def test_vanilla(self): | |
| raw = ' return x - int(x)' | |
| run_humaneval_check(raw) | |
| def test_python_quote(self): | |
| lines = [ | |
| '```python', | |
| ' return x - int(x)', | |
| '```', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_bare_quote(self): | |
| lines = [ | |
| '```', | |
| ' return x - int(x)', | |
| '```', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_error_space_quote(self): | |
| lines = [ | |
| '```', | |
| ' return x - int(x)', | |
| '```', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_import_1(self): | |
| lines = [ | |
| 'import numpy as np', | |
| 'import math', | |
| 'from typing import List', | |
| '', | |
| 'def func(x):', | |
| ' return x - int(x)', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_import_2(self): | |
| lines = [ | |
| 'from typing import List', | |
| 'import numpy as np', | |
| 'import math', | |
| 'def func(x):', | |
| ' return x - int(x)', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_import_3(self): | |
| lines = [ | |
| 'import math', | |
| '', | |
| '', | |
| 'def func(x):', | |
| ' return x - int(x)', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_comment(self): | |
| lines = [ | |
| 'def func(x: float) -> float:', | |
| " '''", | |
| ' blah blah blah', | |
| ' blah blah blah', | |
| " '''", | |
| ' return x - int(x)', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |
| def test_additional(self): | |
| lines = [ | |
| ' return x - int(x)', | |
| '', | |
| '', | |
| 'def func(x: float) -> float:', | |
| " '''", | |
| ' blah blah blah', | |
| ' blah blah blah', | |
| " '''", | |
| ' return x - int(x)', | |
| ] | |
| raw = '\n'.join(lines) | |
| run_humaneval_check(raw) | |