Commit 378fbe44 authored by Igor Dejanovic's avatar Igor Dejanovic

Migrated one regression test to pytest

parent 71673a7e
'''
Created on Jul 6, 2014
@author: igor
'''
import unittest
from arpeggio import SemanticAction, ParserPython
def test_direct_rule_call():
'''
Test regression where in direct rule call semantic action is
erroneously attached to both caller and callee.
'''
class Test(unittest.TestCase):
def test_direct_rule_call(self):
'''
Test regression where in direct rule call semantic action is
erroneously attached to both caller and callee.
'''
def grammar(): return rule1, rule2
def rule1(): return "a"
def rule2(): return rule1
def grammar(): return rule1, rule2
def rule1(): return "a"
def rule2(): return rule1
call_count = [0]
call_count = [0]
class DummySemAction(SemanticAction):
def first_pass(self, parser, node, nodes):
call_count[0] += 1
return SemanticAction.first_pass(self, parser, node, nodes)
class DummySemAction(SemanticAction):
def first_pass(self, parser, node, nodes):
call_count[0] += 1
return SemanticAction.first_pass(self, parser, node, nodes)
# Sem action is attached to rule2 only but
# this bug will attach it to rule1 also resulting in
# wrong call count.
rule2.sem = DummySemAction()
# Sem action is attached to rule2 only but
# this bug will attach it to rule1 also resulting in
# wrong call count.
rule2.sem = DummySemAction()
parser = ParserPython(grammar)
parse_tree = parser.parse("aa")
parser.getASG()
parser = ParserPython(grammar)
parse_tree = parser.parse("aa")
parser.getASG()
self.assertEqual(call_count[0], 1,
"Semantic action should be called once!")
assert call_count[0] == 1, "Semantic action should be called once!"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment