46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
import pytest
|
||
|
|
||
|
|
||
|
@pytest.mark.parametrize(['oracle', 'text'], [
|
||
|
('PRED[Happy](VAR[x])', 'Happy(x)'),
|
||
|
('PRED[Sad](VAR[y],VAR[z])', 'Sad(y, z)'),
|
||
|
# EXISTS
|
||
|
('EXISTS(VAR[x],PRED[Happy](VAR[x]))', '\\exists x Happy(x)'),
|
||
|
# FORALL
|
||
|
('FORALL(VAR[z],PRED[Sad](VAR[z]))', '\\forall z Sad(z)'),
|
||
|
# IMP
|
||
|
('IMP(PRED[Rich](VAR[x]),PRED[Happy](VAR[x]))',
|
||
|
'Rich(x) -> Happy(x)'),
|
||
|
# OR
|
||
|
('OR(OR(PRED[Rich](VAR[x]),PRED[Happy](VAR[x])),'
|
||
|
'PRED[Smart](VAR[x]))',
|
||
|
'Rich(x) | Happy(x) | Smart(x)'),
|
||
|
# AND
|
||
|
('AND(AND(PRED[Rich](VAR[x]),PRED[Happy](VAR[x])),'
|
||
|
'PRED[Smart](VAR[x]))',
|
||
|
'Rich(x) & Happy(x) & Smart(x)'),
|
||
|
|
||
|
('OR(AND(PRED[Rich](VAR[x]),'
|
||
|
'PRED[Happy](VAR[x])),PRED[Smart](VAR[x]))',
|
||
|
'Rich(x) & Happy(x) | Smart(x)'),
|
||
|
|
||
|
('AND(PRED[Rich](VAR[x]),OR(PRED[Happy](VAR[x]),'
|
||
|
'PRED[Smart](VAR[x])))',
|
||
|
'Rich(x) & (Happy(x) | Smart(x))'),
|
||
|
|
||
|
# NOT
|
||
|
('FORALL(VAR[x],NOT(PRED[Happy](VAR[x])))',
|
||
|
'\\forall x ~Happy(x)'),
|
||
|
# PRED
|
||
|
('PRED[Rich](CONST[BOB])',
|
||
|
'Rich(BOB)'),
|
||
|
('PRED[Rich](FUN[father](CONST[BOB]))',
|
||
|
'Rich(father(BOB))'),
|
||
|
])
|
||
|
def test_parser(parser, oracle, text):
|
||
|
|
||
|
p = parser(text)
|
||
|
root = p.parse()
|
||
|
|
||
|
assert oracle == str(root)
|