PageRenderTime 190ms CodeModel.GetById 4ms RepoModel.GetById 1ms app.codeStats 0ms

/historical/timestamp_test.py

https://bitbucket.org/lindenlab/apiary/
Python | 196 lines | 127 code | 45 blank | 24 comment | 1 complexity | ae7f6e1a4dfc72dff621b5475f473376 MD5 | raw file
  1. #
  2. # $LicenseInfo:firstyear=2010&license=mit$
  3. #
  4. # Copyright (c) 2010, Linden Research, Inc.
  5. #
  6. # Permission is hereby granted, free of charge, to any person obtaining a copy
  7. # of this software and associated documentation files (the "Software"), to deal
  8. # in the Software without restriction, including without limitation the rights
  9. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. # copies of the Software, and to permit persons to whom the Software is
  11. # furnished to do so, subject to the following conditions:
  12. #
  13. # The above copyright notice and this permission notice shall be included in
  14. # all copies or substantial portions of the Software.
  15. #
  16. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  22. # THE SOFTWARE.
  23. # $/LicenseInfo$
  24. #
  25. import unittest
  26. from timestamp import TimeStamp
  27. class TestConstruction(unittest.TestCase):
  28. def testFloatConstruction(self):
  29. ts = TimeStamp(12.3456789)
  30. self.assertEqual(ts.seconds, 12)
  31. self.assertEqual(ts.micros, 345679)
  32. ts = TimeStamp(123.456789)
  33. self.assertEqual(ts.seconds, 123)
  34. self.assertEqual(ts.micros, 456789)
  35. ts = TimeStamp(1234.56789)
  36. self.assertEqual(ts.seconds, 1234)
  37. self.assertEqual(ts.micros, 567890)
  38. ts = TimeStamp(12345.6789)
  39. self.assertEqual(ts.seconds, 12345)
  40. self.assertEqual(ts.micros, 678900)
  41. ts = TimeStamp(123456.789)
  42. self.assertEqual(ts.seconds, 123456)
  43. self.assertEqual(ts.micros, 789000)
  44. ts = TimeStamp(1234567.89)
  45. self.assertEqual(ts.seconds, 1234567)
  46. self.assertEqual(ts.micros, 890000)
  47. ts = TimeStamp(12345678.9)
  48. self.assertEqual(ts.seconds, 12345678)
  49. self.assertEqual(ts.micros, 900000)
  50. ts = TimeStamp(123456789.)
  51. self.assertEqual(ts.seconds, 123456789)
  52. self.assertEqual(ts.micros, 0)
  53. def testIntConstruction(self):
  54. ts = TimeStamp(123456789)
  55. self.assertEqual(ts.seconds, 123456789)
  56. self.assertEqual(ts.micros, 0)
  57. ts = TimeStamp(123, 456789)
  58. self.assertEqual(ts.seconds, 123)
  59. self.assertEqual(ts.micros, 456789)
  60. def testStringConstruction(self):
  61. ts = TimeStamp('12.3456789')
  62. self.assertEqual(ts.seconds, 12)
  63. self.assertEqual(ts.micros, 345679)
  64. ts = TimeStamp('123.456789')
  65. self.assertEqual(ts.seconds, 123)
  66. self.assertEqual(ts.micros, 456789)
  67. ts = TimeStamp('1234.56789')
  68. self.assertEqual(ts.seconds, 1234)
  69. self.assertEqual(ts.micros, 567890)
  70. ts = TimeStamp('12345.6789')
  71. self.assertEqual(ts.seconds, 12345)
  72. self.assertEqual(ts.micros, 678900)
  73. ts = TimeStamp('123456.789')
  74. self.assertEqual(ts.seconds, 123456)
  75. self.assertEqual(ts.micros, 789000)
  76. ts = TimeStamp('1234567.89')
  77. self.assertEqual(ts.seconds, 1234567)
  78. self.assertEqual(ts.micros, 890000)
  79. ts = TimeStamp('12345678.9')
  80. self.assertEqual(ts.seconds, 12345678)
  81. self.assertEqual(ts.micros, 900000)
  82. ts = TimeStamp('123456789.')
  83. self.assertEqual(ts.seconds, 123456789)
  84. self.assertEqual(ts.micros, 0)
  85. class TestOperations(unittest.TestCase):
  86. def testEquality(self):
  87. t1 = TimeStamp(100, 900000)
  88. t1x = TimeStamp(100.9)
  89. self.assert_(t1 == t1x)
  90. def testOrdering(self):
  91. t1 = TimeStamp(100, 900000)
  92. t2 = TimeStamp(100, 900001)
  93. t3 = TimeStamp(101, 000002)
  94. self.assert_(t1 < t2)
  95. self.assert_(t2 < t3)
  96. self.assert_(t1 < t3)
  97. def testDifference(self):
  98. t1 = TimeStamp(100, 900000)
  99. t2 = TimeStamp(100, 900001)
  100. t3 = TimeStamp(101, 000002)
  101. t1x = TimeStamp(100.9)
  102. self.assertEqual(t1 - t1x, TimeStamp(0,0))
  103. self.assertEqual(t2 - t1, TimeStamp(0,1))
  104. self.assertEqual(t3 - t2, TimeStamp(0,100001))
  105. self.assertEqual(t3 - t1, TimeStamp(0,100002))
  106. self.assertEqual(t1 - t2, TimeStamp(-1,999999))
  107. self.assertEqual(t2 - t3, TimeStamp(-1,899999))
  108. self.assertEqual(t1 - t3, TimeStamp(-1,899998))
  109. def testAdding(self):
  110. t1 = TimeStamp(100, 900000)
  111. t2 = TimeStamp(100, 900001)
  112. t3 = TimeStamp(101, 0)
  113. t4 = TimeStamp(101, 000002)
  114. d0 = TimeStamp(0,0)
  115. d21 = TimeStamp(0,1)
  116. d31 = TimeStamp(0,100000)
  117. d41 = TimeStamp(0,100002)
  118. d42 = TimeStamp(0,100001)
  119. self.assertEqual(t1 + d0, t1)
  120. self.assertEqual(t1 + d21, t2)
  121. self.assertEqual(t1 + d31, t3)
  122. self.assertEqual(t1 + d41, t4)
  123. self.assertEqual(t2 + d42, t4)
  124. def testAddInPlace(self):
  125. t1 = TimeStamp(100, 900000)
  126. t1 += TimeStamp(1,1)
  127. self.assertEqual(t1, TimeStamp(101, 900001))
  128. class TestStringConversion(unittest.TestCase):
  129. def testStr(self):
  130. self.assertEqual(str(TimeStamp(100,0)), '100.000000')
  131. self.assertEqual(str(TimeStamp(100,1)), '100.000001')
  132. self.assertEqual(str(TimeStamp(0)), '0.000000')
  133. def testRepr(self):
  134. self.assertEqual(repr(TimeStamp(100,0)), 'TimeStamp(100,0)')
  135. self.assertEqual(repr(TimeStamp(100,1)), 'TimeStamp(100,1)')
  136. self.assertEqual(repr(TimeStamp(0)), 'TimeStamp(0,0)')
  137. def testFloat(self):
  138. self.assertEqual(float(TimeStamp(100,0)), 100.0)
  139. self.assertEqual(float(TimeStamp(100,1)), 100.000001)
  140. self.assertEqual(float(TimeStamp(100,499999)), 100.499999)
  141. self.assertEqual(float(TimeStamp(100,500000)), 100.500000)
  142. self.assertEqual(float(TimeStamp(100,500001)), 100.500001)
  143. self.assertEqual(float(TimeStamp(100,999999)), 100.999999)
  144. self.assertEqual(float(TimeStamp(0)), 0.0)
  145. class TestRanges(unittest.TestCase):
  146. def testBig(self):
  147. ts = TimeStamp('1237237351.064861')
  148. self.assertEqual(ts.seconds, 1237237351)
  149. self.assertEqual(ts.micros, 64861)
  150. if __name__ == '__main__':
  151. unittest.main()