123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- import unittest
- import sys
- import os
- from utils import execute, kill, run_file, run_barebone
- def extend_commands(commands):
- # Initially we communicate with the compilation_manager to add the bytecodes
- pre = [
- '3',
- '"upload"',
- '"test.o"',
- '"MD5_HASH"',
- 'true', # use NEW interface for constructors
- '"funcdef"', '"main"', '0', # Main function
- ]
- # We only have to define "main" for now
- post = [
- 'true',
- '"main"',
- 'true',
- 'false',
- ]
- return pre + commands + post
- class TestConstructorsActionLanguageLinkable(unittest.TestCase):
- def test_constructors_simple(self):
- commands = [
- '"output"',
- '"const"', 'true',
- 'true',
- '"return"',
- 'true',
- '"const"', 'true',
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["True"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["True"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["False"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["True"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, [None], None, timeout=True, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["False"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["True", "True", "True", "True"], None, link=["test.o"]))
- 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",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["5"], None, link=["test.o"]))
- def test_constructors_output_input(self):
- commands = [
- '"output"',
- '"input"',
- 'true',
- '"return"',
- 'true',
- '"const"', "true",
- 'false',
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ["123456"], None, link=["test.o"], inputs=["123456"]))
- 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',
- 'false'
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ['1', '1', '1', '1', '1'], None, link=["test.o"]))
- 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',
- 'false'
- ]
- commands = extend_commands(commands)
- self.assertTrue(run_barebone(commands, ['1', '3'], None, link=["test.o"]))
|