test_constructors_al.py 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. import unittest
  2. import sys
  3. import os
  4. from utils import execute, kill, run_file, run_barebone
  5. class TestConstructorsActionLanguage(unittest.TestCase):
  6. def test_constructors_simple(self):
  7. commands = ["output", # Output
  8. "const", True,
  9. True, # (has next)
  10. "return", # Return
  11. True, # (has value)
  12. "const", True,
  13. ]
  14. self.assertTrue(run_barebone(commands, [True], 1))
  15. def test_constructors_if_else_true(self):
  16. commands = ["if", # If
  17. "const", True, # Condition
  18. "output", # True-part
  19. "const", True,
  20. False, # Has next
  21. True, # Has else
  22. "output", # False-part
  23. "const", False,
  24. False, # Has next
  25. True, # Has next
  26. "return", # Return
  27. True, # Has value
  28. "const", "true",
  29. ]
  30. self.assertTrue(run_barebone(commands, [True], 1))
  31. def test_constructors_if_else_false(self):
  32. commands = ["if", # If
  33. "const", False, # Condition
  34. "output", # True-part
  35. "const", True,
  36. False, # Has next
  37. True, # Has else
  38. "output", # False-part
  39. "const", False,
  40. False, # Has next
  41. True, # Has next
  42. "return", # Return
  43. True, # Has value
  44. "const", "true",
  45. ]
  46. self.assertTrue(run_barebone(commands, [False], 1))
  47. def test_constructors_if_true(self):
  48. commands = ["if", # If
  49. "const", True, # Condition
  50. "output", # True-part
  51. "const", True,
  52. False, # Has next
  53. False, # Has else
  54. True, # Has next
  55. "return", # Return
  56. True, # Has value
  57. "const", "true",
  58. ]
  59. self.assertTrue(run_barebone(commands, [True], 1))
  60. def test_constructors_if_false(self):
  61. commands = ["if", # If
  62. "const", False, # Condition
  63. "output", # True-part
  64. "const", True,
  65. False, # Has next
  66. False, # Has else
  67. True, # Has next
  68. "return", # Return
  69. True, # Has value
  70. "const", "true",
  71. ]
  72. self.assertTrue(run_barebone(commands, [None], 1, timeout=True))
  73. def test_constructors_addition(self):
  74. commands = ["output",
  75. "call",
  76. "deref", "primitives/integer_addition",
  77. 2,
  78. "const", 1,
  79. "const", 5,
  80. False,
  81. True,
  82. "return", True, "const", True,
  83. ]
  84. self.assertTrue(run_barebone(commands, [6], 1))
  85. def test_constructors_while_false(self):
  86. commands = ["while", # While
  87. "const", False, # Condition
  88. "output", # True-part
  89. "const", True,
  90. False, # Has next
  91. True, # Has next
  92. "output", # Output false
  93. "const", False,
  94. True, # Has next
  95. "return", # Return
  96. True, # Has value
  97. "const", "true",
  98. ]
  99. self.assertTrue(run_barebone(commands, [False], 1))
  100. def test_constructors_while_true(self):
  101. commands = ["while", # While
  102. "const", True, # Condition
  103. "output", # True-part
  104. "const", True,
  105. False, # Has next
  106. True, # Has next
  107. "output", # False-part
  108. "const", False,
  109. True, # Has next
  110. "return", # Return
  111. True, # Has value
  112. "const", "true",
  113. ]
  114. self.assertTrue(run_barebone(commands, [True, True, True, True], 1))
  115. def test_constructors_declare_and_assign(self):
  116. commands = ["declare",
  117. "1",
  118. True,
  119. "assign",
  120. "resolve", "1",
  121. "const", 5,
  122. True,
  123. "output",
  124. "access", "resolve", "1",
  125. True,
  126. "return",
  127. True,
  128. "const", "true",
  129. ]
  130. self.assertTrue(run_barebone(commands, [5], 1))
  131. def test_constructors_output_input(self):
  132. commands = ["output",
  133. "input",
  134. True,
  135. "return",
  136. True,
  137. "const", "true",
  138. ]
  139. self.assertTrue(run_barebone(commands + [123456], [123456], 1))
  140. def test_constructors_continue(self):
  141. commands = ["while",
  142. "const", True,
  143. "output", "const", 1,
  144. True,
  145. "if",
  146. "const", True,
  147. "continue",
  148. False,
  149. True,
  150. "output", "const", 2,
  151. False,
  152. True,
  153. "output", "const", 3,
  154. True,
  155. "return", True,
  156. "const", True,
  157. ]
  158. self.assertTrue(run_barebone(commands, [1, 1, 1, 1, 1], 1))
  159. def test_constructors_break(self):
  160. commands = ["while",
  161. "const", True,
  162. "output", "const", 1,
  163. True,
  164. "if",
  165. "const", True,
  166. "break",
  167. False,
  168. True,
  169. "output", "const", 2,
  170. False,
  171. True,
  172. "output", "const", 3,
  173. True,
  174. "return", True,
  175. "const", True,
  176. ]
  177. self.assertTrue(run_barebone(commands, [1, 3], 1))