import unittest import sys import os from utils import execute, kill, run_file, run_barebone class TestConstructorsActionLanguage(unittest.TestCase): def test_constructors_simple(self): commands = ['"output"', # Output '"const"', 'true', 'true', # (has next) '"return"', # Return 'true', # (has value) '"const"', 'true', ] self.assertTrue(run_barebone(commands, ["True"], 1)) def test_constructors_if_else_true(self): commands = ['"if"', # If '"const"', 'true', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'true', # Has else '"output"', # False-part '"const"', 'false', 'false', # Has next 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, ["True"], 1)) def test_constructors_if_else_false(self): commands = ['"if"', # If '"const"', 'false', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'true', # Has else '"output"', # False-part '"const"', 'false', 'false', # Has next 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, ["False"], 1)) def test_constructors_if_true(self): commands = ['"if"', # If '"const"', 'true', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'false', # Has else 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, ["True"], 1)) def test_constructors_if_false(self): commands = ['"if"', # If '"const"', 'false', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'false', # Has else 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, [None], 1, timeout=True)) def test_constructors_addition(self): commands = ['"output"', '"call"', '"deref"', '"primitives/integer_addition"', '2', '"const"', '1', '"const"', '5', 'false', 'true', '"return"', 'true', '"const"', 'true', ] self.assertTrue(run_barebone(commands, ["6"], 1)) def test_constructors_while_false(self): commands = ['"while"', # While '"const"', 'false', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'true', # Has next '"output"', # Output false '"const"', 'false', 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, ["False"], 1)) def test_constructors_while_true(self): commands = ['"while"', # While '"const"', 'true', # Condition '"output"', # True-part '"const"', 'true', 'false', # Has next 'true', # Has next '"output"', # False-part '"const"', 'false', 'true', # Has next '"return"', # Return 'true', # Has value '"const"', "true", ] self.assertTrue(run_barebone(commands, ["True", "True", "True", "True"], 1)) def test_constructors_declare_and_assign(self): commands = ['"declare"', '"1"', 'true', '"assign"', '"resolve"', '"1"', '"const"', '5', 'true', '"output"', '"access"', '"resolve"', '"1"', 'true', '"return"', 'true', '"const"', "true", ] self.assertTrue(run_barebone(commands, ["5"], 1)) def test_constructors_output_input(self): commands = ['"output"', '"input"', 'true', '"return"', 'true', '"const"', "true", ] self.assertTrue(run_barebone(commands + ['123456'], ["123456"], 1)) def test_constructors_continue(self): commands = ['"while"', '"const"', 'true', '"output"', '"const"', '1', 'true', '"if"', '"const"', 'true', '"continue"', 'false', 'true', '"output"', '"const"', '2', 'false', 'true', '"output"', '"const"', '3', 'true', '"return"', 'true', '"const"', 'true', ] self.assertTrue(run_barebone(commands, ['1', '1', '1', '1', '1'], 1)) def test_constructors_break(self): commands = ['"while"', '"const"', 'true', '"output"', '"const"', '1', 'true', '"if"', '"const"', 'true', '"break"', 'false', 'true', '"output"', '"const"', '2', 'false', 'true', '"output"', '"const"', '3', 'true', '"return"', 'true', '"const"', 'true', ] self.assertTrue(run_barebone(commands, ['1', '3'], 1))