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)