def test_var_input_and_output(self): fcl_text = """ FUNCTION_BLOCK f_block VAR_INPUT input_id1 : REAL; END_VAR VAR_OUTPUT output_id1 : REAL; END_VAR VAR_INPUT input_id2 : REAL; END_VAR END_FUNCTION_BLOCK """ lexer = FclLexer(InputStream(fcl_text)) stream = CommonTokenStream(lexer) parser = FclParser(stream) tree = parser.main() listener = FclListenerTester() walker = ParseTreeWalker() walker.walk(listener, tree) self.assertEqual(['output_id1', 'REAL'], listener.outputs[0]) self.assertEqual(['input_id1', 'REAL'], listener.inputs[0]) self.assertEqual(['input_id2', 'REAL'], listener.inputs[1])
def test_load_simple_function_block2(self): fcl_text = """ FUNCTION_BLOCK END_FUNCTION_BLOCK """ lexer = FclLexer(InputStream(fcl_text)) stream = CommonTokenStream(lexer) parser = FclParser(stream) tree = parser.main() listener = FclListenerTester() walker = ParseTreeWalker() walker.walk(listener, tree) self.assertEqual([], listener.function_blocks_ids)
def test_var_input_range(self): fcl_text = """ FUNCTION_BLOCK f_block VAR_INPUT input_id : REAL ( 12 .. 34 ); END_VAR END_FUNCTION_BLOCK """ lexer = FclLexer(InputStream(fcl_text)) stream = CommonTokenStream(lexer) parser = FclParser(stream) tree = parser.main() listener = FclListenerTester() walker = ParseTreeWalker() walker.walk(listener, tree) self.assertEqual(['input_id', 'REAL', '12', '34'], listener.inputs[0])
def test_tipper_fcl_file(self): fcl_text = "" fcl_file_path = FIXTURES_DIR.child('tipper.fcl') with open(fcl_file_path, 'r') as fcl_file: fcl_text = fcl_file.read() class FclListenerNoError(FclListener): def visitErrorNode(self, node): raise FclParserException(node) lexer = FclLexer(InputStream(fcl_text)) stream = CommonTokenStream(lexer) parser = FclParser(stream) tree = parser.main() listener = FclListenerNoError() walker = ParseTreeWalker() walker.walk(listener, tree)