test_create_nodevalue.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. import unittest
  2. from modelverse_state.main import ModelverseState
  3. from modelverse_state import status
  4. class TestCreateNodeValue(unittest.TestCase):
  5. def setUp(self):
  6. self.mvs = ModelverseState()
  7. def test_create_nodevalue_different_id_simple(self):
  8. id1, r1 = self.mvs.create_nodevalue(1)
  9. id2, r2 = self.mvs.create_nodevalue(1)
  10. self.assertEquals(r1, status.SUCCESS)
  11. self.assertEquals(r2, status.SUCCESS)
  12. self.assertNotEquals(id1, id2)
  13. def test_create_nodevalue_read(self):
  14. id1, r1 = self.mvs.create_nodevalue(1)
  15. self.assertEquals(r1, status.SUCCESS)
  16. val, r2 = self.mvs.read_value(id1)
  17. self.assertEquals(r2, status.SUCCESS)
  18. self.assertEquals(val, 1)
  19. def test_create_nodevalue_integer_oob_negative(self):
  20. # Overflow towards minus infinity
  21. for i in range(-2**63 - 10, -2**63):
  22. id1, r = self.mvs.create_nodevalue(i)
  23. self.assertEquals(r, status.FAIL_CNV_OOB)
  24. def test_create_nodevalue_integer_ib_negative(self):
  25. # Just within range
  26. v = set()
  27. size = 0
  28. for i in range(-2**63, -2**63 + 10):
  29. id1, r = self.mvs.create_nodevalue(i)
  30. self.assertEquals(r, status.SUCCESS)
  31. size += 1
  32. v.add(id1)
  33. self.assertEquals(len(v), size)
  34. def test_create_nodevalue_integer_ib_zero(self):
  35. # Nicely within range
  36. v = set()
  37. size = 0
  38. for i in range(-10, 10):
  39. id1, r = self.mvs.create_nodevalue(i)
  40. self.assertEquals(r, status.SUCCESS)
  41. size += 1
  42. v.add(id1)
  43. self.assertEquals(len(v), size)
  44. def test_create_nodevalue_integer_oob_positive(self):
  45. # Overflow towards minus infinity
  46. for i in range(2**64, 2**64+10):
  47. id1, r = self.mvs.create_nodevalue(i)
  48. self.assertEquals(r, status.FAIL_CNV_OOB)
  49. def test_create_nodevalue_integer_ib_positive(self):
  50. # Just within range
  51. v = set()
  52. size = 0
  53. for i in range(2**64-10, 2**64):
  54. id1, r = self.mvs.create_nodevalue(i)
  55. self.assertEquals(r, status.SUCCESS)
  56. size += 1
  57. v.add(id1)
  58. self.assertEquals(len(v), size)
  59. def test_create_nodevalue_boolean(self):
  60. id1, r1 = self.mvs.create_nodevalue(True)
  61. id2, r2 = self.mvs.create_nodevalue(False)
  62. self.assertEquals(r1, status.SUCCESS)
  63. self.assertEquals(r2, status.SUCCESS)
  64. self.assertNotEquals(id1, id2)
  65. def test_create_nodevalue_boolean_same(self):
  66. id1, r1 = self.mvs.create_nodevalue(True)
  67. id2, r2 = self.mvs.create_nodevalue(True)
  68. self.assertEquals(r1, status.SUCCESS)
  69. self.assertEquals(r2, status.SUCCESS)
  70. self.assertNotEquals(id1, id2)
  71. def test_create_nodevalue_float_keeps_type(self):
  72. id1, r = self.mvs.create_nodevalue(0.0)
  73. self.assertEquals(r, status.SUCCESS)
  74. v, r = self.mvs.read_value(id1)
  75. self.assertEquals(r, status.SUCCESS)
  76. self.assertEquals(type(v), float)
  77. self.assertEquals(v, 0.0)
  78. def test_create_nodevalue_string_empty(self):
  79. id1, r = self.mvs.create_nodevalue("")
  80. self.assertEquals(r, status.SUCCESS)
  81. v, r = self.mvs.read_value(id1)
  82. self.assertEquals(r, status.SUCCESS)
  83. self.assertEquals(type(v), str)
  84. self.assertEquals(v, "")
  85. def test_create_nodevalue_string_normal(self):
  86. id1, r = self.mvs.create_nodevalue("ABC")
  87. self.assertEquals(r, status.SUCCESS)
  88. v, r = self.mvs.read_value(id1)
  89. self.assertEquals(r, status.SUCCESS)
  90. self.assertEquals(type(v), str)
  91. self.assertEquals(v, "ABC")
  92. def test_create_nodevalue_string_not_parsed(self):
  93. id1, r = self.mvs.create_nodevalue("1")
  94. self.assertEquals(r, status.SUCCESS)
  95. v, r = self.mvs.read_value(id1)
  96. self.assertEquals(r, status.SUCCESS)
  97. self.assertEquals(type(v), str)
  98. self.assertEquals(v, "1")
  99. id1, r = self.mvs.create_nodevalue("1.0")
  100. self.assertEquals(r, status.SUCCESS)
  101. v, r = self.mvs.read_value(id1)
  102. self.assertEquals(r, status.SUCCESS)
  103. self.assertEquals(type(v), str)
  104. self.assertEquals(v, "1.0")
  105. id1, r = self.mvs.create_nodevalue("-1.0")
  106. self.assertEquals(r, status.SUCCESS)
  107. v, r = self.mvs.read_value(id1)
  108. self.assertEquals(r, status.SUCCESS)
  109. self.assertEquals(type(v), str)
  110. self.assertEquals(v, "-1.0")
  111. id1, r = self.mvs.create_nodevalue("True")
  112. self.assertEquals(r, status.SUCCESS)
  113. v, r = self.mvs.read_value(id1)
  114. self.assertEquals(r, status.SUCCESS)
  115. self.assertEquals(type(v), str)
  116. self.assertEquals(v, "True")
  117. def test_create_nodevalue_junk(self):
  118. class Unknown(object):
  119. pass
  120. id1, r = self.mvs.create_nodevalue(Unknown())
  121. self.assertEquals(r, status.FAIL_CNV_OOB)
  122. v, r = self.mvs.read_value(id1)
  123. self.assertEquals(r, status.FAIL_RV_UNKNOWN)
  124. self.assertEquals(v, None)
  125. def test_create_nodevalue_action_if(self):
  126. id1, r = self.mvs.create_nodevalue({"value": "if"})
  127. self.assertEquals(r, status.SUCCESS)
  128. v, r = self.mvs.read_value(id1)
  129. self.assertEquals(r, status.SUCCESS)
  130. self.assertEquals(v, {"value": "if"})
  131. def test_create_nodevalue_action_while(self):
  132. id1, r = self.mvs.create_nodevalue({"value": "while"})
  133. self.assertEquals(r, status.SUCCESS)
  134. v, r = self.mvs.read_value(id1)
  135. self.assertEquals(r, status.SUCCESS)
  136. self.assertEquals(v, {"value": "while"})
  137. def test_create_nodevalue_action_assign(self):
  138. id1, r = self.mvs.create_nodevalue({"value": "assign"})
  139. self.assertEquals(r, status.SUCCESS)
  140. v, r = self.mvs.read_value(id1)
  141. self.assertEquals(r, status.SUCCESS)
  142. self.assertEquals(v, {"value": "assign"})
  143. def test_create_nodevalue_action_call(self):
  144. id1, r = self.mvs.create_nodevalue({"value": "call"})
  145. self.assertEquals(r, status.SUCCESS)
  146. v, r = self.mvs.read_value(id1)
  147. self.assertEquals(r, status.SUCCESS)
  148. self.assertEquals(v, {"value": "call"})
  149. def test_create_nodevalue_action_break(self):
  150. id1, r = self.mvs.create_nodevalue({"value": "break"})
  151. self.assertEquals(r, status.SUCCESS)
  152. v, r = self.mvs.read_value(id1)
  153. self.assertEquals(r, status.SUCCESS)
  154. self.assertEquals(v, {"value": "break"})
  155. def test_create_nodevalue_action_continue(self):
  156. id1, r = self.mvs.create_nodevalue({"value": "continue"})
  157. self.assertEquals(r, status.SUCCESS)
  158. v, r = self.mvs.read_value(id1)
  159. self.assertEquals(r, status.SUCCESS)
  160. self.assertEquals(v, {"value": "continue"})
  161. def test_create_nodevalue_action_return(self):
  162. id1, r = self.mvs.create_nodevalue({"value": "return"})
  163. self.assertEquals(r, status.SUCCESS)
  164. v, r = self.mvs.read_value(id1)
  165. self.assertEquals(r, status.SUCCESS)
  166. self.assertEquals(v, {"value": "return"})
  167. def test_create_nodevalue_action_resolve(self):
  168. id1, r = self.mvs.create_nodevalue({"value": "resolve"})
  169. self.assertEquals(r, status.SUCCESS)
  170. v, r = self.mvs.read_value(id1)
  171. self.assertEquals(r, status.SUCCESS)
  172. self.assertEquals(v, {"value": "resolve"})
  173. def test_create_nodevalue_action_access(self):
  174. id1, r = self.mvs.create_nodevalue({"value": "access"})
  175. self.assertEquals(r, status.SUCCESS)
  176. v, r = self.mvs.read_value(id1)
  177. self.assertEquals(r, status.SUCCESS)
  178. self.assertEquals(v, {"value": "access"})
  179. def test_create_nodevalue_action_unknown(self):
  180. id1, r = self.mvs.create_nodevalue({"value": "unknown"})
  181. self.assertEquals(r, status.FAIL_CNV_OOB)
  182. v, r = self.mvs.read_value(id1)
  183. self.assertEquals(r, status.FAIL_RV_UNKNOWN)
  184. def test_create_nodevalue_type_integer(self):
  185. id1, r = self.mvs.create_nodevalue({"value": "Integer"})
  186. self.assertEquals(r, status.SUCCESS)
  187. v, r = self.mvs.read_value(id1)
  188. self.assertEquals(r, status.SUCCESS)
  189. self.assertEquals(v, {"value": "Integer"})
  190. def test_create_nodevalue_type_float(self):
  191. id1, r = self.mvs.create_nodevalue({"value": "Float"})
  192. self.assertEquals(r, status.SUCCESS)
  193. v, r = self.mvs.read_value(id1)
  194. self.assertEquals(r, status.SUCCESS)
  195. self.assertEquals(v, {"value": "Float"})
  196. def test_create_nodevalue_type_string(self):
  197. id1, r = self.mvs.create_nodevalue({"value": "String"})
  198. self.assertEquals(r, status.SUCCESS)
  199. v, r = self.mvs.read_value(id1)
  200. self.assertEquals(r, status.SUCCESS)
  201. self.assertEquals(v, {"value": "String"})
  202. def test_create_nodevalue_type_boolean(self):
  203. id1, r = self.mvs.create_nodevalue({"value": "Boolean"})
  204. self.assertEquals(r, status.SUCCESS)
  205. v, r = self.mvs.read_value(id1)
  206. self.assertEquals(r, status.SUCCESS)
  207. self.assertEquals(v, {"value": "Boolean"})
  208. def test_create_nodevalue_type_action(self):
  209. id1, r = self.mvs.create_nodevalue({"value": "Action"})
  210. self.assertEquals(r, status.SUCCESS)
  211. v, r = self.mvs.read_value(id1)
  212. self.assertEquals(r, status.SUCCESS)
  213. self.assertEquals(v, {"value": "Action"})
  214. def test_create_nodevalue_type_type(self):
  215. id1, r = self.mvs.create_nodevalue({"value": "Type"})
  216. self.assertEquals(r, status.SUCCESS)
  217. v, r = self.mvs.read_value(id1)
  218. self.assertEquals(r, status.SUCCESS)
  219. self.assertEquals(v, {"value": "Type"})
  220. def test_create_nodevalue_action_input(self):
  221. id1, r = self.mvs.create_nodevalue({"value": "input"})
  222. self.assertEquals(r, status.SUCCESS)
  223. v, r = self.mvs.read_value(id1)
  224. self.assertEquals(r, status.SUCCESS)
  225. self.assertEquals(v, {"value": "input"})
  226. def test_create_nodevalue_action_output(self):
  227. id1, r = self.mvs.create_nodevalue({"value": "output"})
  228. self.assertEquals(r, status.SUCCESS)
  229. v, r = self.mvs.read_value(id1)
  230. self.assertEquals(r, status.SUCCESS)
  231. self.assertEquals(v, {"value": "output"})
  232. def test_create_nodevalue_action_declare(self):
  233. id1, r = self.mvs.create_nodevalue({"value": "declare"})
  234. self.assertEquals(r, status.SUCCESS)
  235. v, r = self.mvs.read_value(id1)
  236. self.assertEquals(r, status.SUCCESS)
  237. self.assertEquals(v, {"value": "declare"})