test_constructors_al.py 8.1 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))