import unittest
import util

from hutn_compiler.compiler import main

def parse_file(filename):
    try:
        main(util.get_code_path(filename), "grammars/actionlanguage.g", "N", [])
        return False
    except:
        return True

class TestValids(unittest.TestCase):
    def test_empty(self):
        self.assertTrue(parse_file("full_empty.al"))

    def test_assign_to_constant(self):
        self.assertTrue(parse_file("assign_to_constant.al"))

    def test_assign_to_func_result(self):
        self.assertTrue(parse_file("assign_to_func_result.al"))

    def test_assign_to_statement(self):
        self.assertTrue(parse_file("assign_to_statement.al"))

    def test_return_in_assign(self):
        self.assertTrue(parse_file("return_in_assign.al"))

    def test_while_no_condition(self):
        self.assertTrue(parse_file("while_no_condition.al"))

    def test_if_no_condition(self):
        self.assertTrue(parse_file("if_no_condition.al"))

    def test_if_only_else(self):
        self.assertTrue(parse_file("if_only_else.al"))

    def test_if_empty_body(self):
        self.assertTrue(parse_file("if_empty_body.al"))

    def test_if_empty_else(self):
        self.assertTrue(parse_file("if_empty_else.al"))

    def test_while_empty_body(self):
        self.assertTrue(parse_file("while_empty_body.al"))

    def test_funcdef_empty_body(self):
        self.assertTrue(parse_file("funcdef_empty_body.al"))

    def test_include_late(self):
        self.assertTrue(parse_file("include_late.al"))

