test_read_value.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import unittest
  2. from modelverse_state.main import ModelverseState
  3. from modelverse_state import status
  4. class TestReadValue(unittest.TestCase):
  5. def setUp(self):
  6. self.mvs = ModelverseState()
  7. def test_read_value_different_id_simple(self):
  8. id1, r1 = self.mvs.create_nodevalue(1)
  9. id2, r2 = self.mvs.create_nodevalue(2)
  10. self.assertEquals(r1, status.SUCCESS)
  11. self.assertEquals(r2, status.SUCCESS)
  12. v1, r1 = self.mvs.read_value(id1)
  13. v2, r2 = self.mvs.read_value(id2)
  14. self.assertEquals(r1, status.SUCCESS)
  15. self.assertEquals(r2, status.SUCCESS)
  16. self.assertEquals(v1, 1)
  17. self.assertEquals(v2, 2)
  18. def test_read_value_integer_oob_negative(self):
  19. # Overflow towards minus infinity
  20. for i in range(-2**63 - 10, -2**63):
  21. id1, r = self.mvs.create_nodevalue(i)
  22. self.assertEquals(r, status.FAIL_CNV_OOB)
  23. self.assertEquals(id1, None)
  24. v, r = self.mvs.read_value(id1)
  25. self.assertEquals(r, status.FAIL_RV_UNKNOWN)
  26. self.assertEquals(v, None)
  27. def test_read_value_integer_ib_negative(self):
  28. # Just within range
  29. for i in range(-2**63, -2**63 + 10):
  30. id1, r = self.mvs.create_nodevalue(i)
  31. self.assertEquals(r, status.SUCCESS)
  32. v, r = self.mvs.read_value(id1)
  33. self.assertEquals(r, status.SUCCESS)
  34. self.assertEquals(v, i)
  35. def test_read_value_integer_ib_zero(self):
  36. # Nicely within range
  37. for i in range(-10, 10):
  38. id1, r = self.mvs.create_nodevalue(i)
  39. self.assertEquals(r, status.SUCCESS)
  40. v, r = self.mvs.read_value(id1)
  41. self.assertEquals(r, status.SUCCESS)
  42. self.assertEquals(v, i)
  43. def test_read_value_integer_oob_positive(self):
  44. # Overflow towards minus infinity
  45. for i in range(2**64, 2**64+10):
  46. id1, r = self.mvs.create_nodevalue(i)
  47. self.assertEquals(r, status.FAIL_CNV_OOB)
  48. self.assertEquals(id1, None)
  49. v, r = self.mvs.read_value(id1)
  50. self.assertEquals(r, status.FAIL_RV_UNKNOWN)
  51. self.assertEquals(v, None)
  52. def test_read_value_integer_ib_positive(self):
  53. # Just within range
  54. for i in range(2**64-10, 2**64):
  55. id1, r = self.mvs.create_nodevalue(i)
  56. self.assertEquals(r, status.SUCCESS)
  57. v, r = self.mvs.read_value(id1)
  58. self.assertEquals(r, status.SUCCESS)
  59. self.assertEquals(v, i)
  60. def test_read_value_boolean(self):
  61. id1, r1 = self.mvs.create_nodevalue(True)
  62. id2, r2 = self.mvs.create_nodevalue(False)
  63. self.assertEquals(r1, status.SUCCESS)
  64. self.assertEquals(r2, status.SUCCESS)
  65. v1, r1 = self.mvs.read_value(id1)
  66. v2, r2 = self.mvs.read_value(id2)
  67. self.assertEquals(r1, status.SUCCESS)
  68. self.assertEquals(r2, status.SUCCESS)
  69. self.assertEquals(v1, True)
  70. self.assertEquals(v2, False)
  71. def test_read_nodevalue_boolean_same(self):
  72. id1, r1 = self.mvs.create_nodevalue(True)
  73. id2, r2 = self.mvs.create_nodevalue(True)
  74. self.assertEquals(r1, status.SUCCESS)
  75. self.assertEquals(r2, status.SUCCESS)
  76. v1, r1 = self.mvs.read_value(id1)
  77. v2, r2 = self.mvs.read_value(id2)
  78. self.assertEquals(r1, status.SUCCESS)
  79. self.assertEquals(r2, status.SUCCESS)
  80. self.assertEquals(v1, True)
  81. self.assertEquals(v2, True)
  82. def test_read_value_no_exist(self):
  83. v1, r1 = self.mvs.read_value(100000)
  84. self.assertEquals(r1, status.FAIL_RV_UNKNOWN)
  85. self.assertEquals(v1, None)
  86. def test_read_value_no_value(self):
  87. id1, r1 = self.mvs.create_node()
  88. self.assertEquals(r1, status.SUCCESS)
  89. v1, r1 = self.mvs.read_value(id1)
  90. self.assertEquals(r1, status.FAIL_RV_NO_VALUE)
  91. self.assertEquals(v1, None)