-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_syntax.py
More file actions
42 lines (29 loc) · 1.26 KB
/
test_syntax.py
File metadata and controls
42 lines (29 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""Tests for the syntax validator."""
from vallm.core.proposal import Proposal
from vallm.validators.syntax import SyntaxValidator
def test_valid_python():
proposal = Proposal(code="def foo(): return 1", language="python")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 1.0
assert not result.issues
def test_invalid_python():
proposal = Proposal(code="def foo(:\n return", language="python")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 0.0
assert result.has_errors
def test_valid_javascript():
proposal = Proposal(code="const x = (a, b) => a + b;", language="javascript")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 1.0
def test_invalid_javascript():
proposal = Proposal(code="function foo( { return; }", language="javascript")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 0.0
def test_valid_c():
proposal = Proposal(code="int main() { return 0; }", language="c")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 1.0
def test_empty_code():
proposal = Proposal(code="", language="python")
result = SyntaxValidator().validate(proposal, {})
assert result.score == 1.0