123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- import unittest
- import sys
- import os
- from utils import execute, kill, run_file, run_barebone
- def flatten(lst):
- new_lst = []
- for f in lst:
- if isinstance(f, (list, tuple)):
- new_lst.extend(flatten(f))
- else:
- new_lst.append(f)
- return new_lst
- 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(flatten(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(flatten(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(flatten(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(flatten(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(flatten(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(flatten(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(flatten(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(flatten(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(flatten(commands), ["5"], 1))
- def test_constructors_output_input(self):
- commands = ['"output"',
- '"input"',
- 'true',
- '"return"',
- 'true',
- '"const"', "true",
- ]
- self.assertTrue(run_barebone(flatten(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(flatten(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(flatten(commands), ['1', '3'], 1))
|