PageRenderTime 51ms CodeModel.GetById 15ms RepoModel.GetById 1ms app.codeStats 0ms

/branch/0.1.x/test/scripts/intbase.py

#
Python | 173 lines | 149 code | 24 blank | 0 comment | 13 complexity | 870e938e7b8ff25acafd3a5c8ad7213f MD5 | raw file
Possible License(s): CC-BY-SA-3.0, Unlicense
  1. import unittest
  2. import target
  3. from pykd import intBase
  4. class IntBaseTest( unittest.TestCase ):
  5. def testCtor( self ):
  6. a = intBase(0xFF)
  7. a = intBase(0xFFFF)
  8. a = intBase(0xFFFFFFFF)
  9. a = intBase(0x8000000000000000)
  10. a = intBase(0xFFFFFFFFFFFFFFFF)
  11. a = intBase(-20)
  12. a = intBase(-2000)
  13. a = intBase(-200000)
  14. a = intBase(-20000000000)
  15. a = intBase(-0xFFFFFFFFFFFFFFFF )
  16. a = intBase( True )
  17. def testEq( self ):
  18. self.assertTrue( 0xFF == intBase(0xFF) and intBase(0xFF) == 0xFF )
  19. self.assertTrue( 0xFFFF == intBase(0xFFFF) and 0xFFFF == intBase(0xFFFF) )
  20. self.assertTrue( 0xFFFFFFFF == intBase(0xFFFFFFFF) and intBase(0xFFFFFFFF) == 0xFFFFFFFF )
  21. self.assertTrue( 0x8000000000000000 == intBase(0x8000000000000000) )
  22. self.assertTrue( 0xFFFFFFFFFFFFFFFF == intBase(0xFFFFFFFFFFFFFFFF) )
  23. self.assertTrue( -20 == intBase(-20) )
  24. self.assertTrue( -2000 == intBase(-2000) )
  25. self.assertTrue( -0x7FFFFFFF == intBase(-0x7FFFFFFF) )
  26. self.assertTrue( -20000000000 == intBase(-20000000000) )
  27. self.assertTrue( -0x8000000000000000 == intBase(-0x8000000000000000) )
  28. self.assertTrue( intBase(0x20L) == intBase(0x20) )
  29. self.assertTrue( True == intBase(True) )
  30. self.assertTrue( False == intBase(0) )
  31. self.assertTrue( True == intBase(1) )
  32. self.assertTrue( intBase(1) == intBase(1) )
  33. def testNe( self ):
  34. self.assertTrue( 0xFE != intBase(0xFF) )
  35. self.assertTrue( 0xFF00 != intBase(0xFFFF) )
  36. self.assertTrue( 0xFFFFFF88 != intBase(0xFFFFFFFF) )
  37. self.assertTrue( 0x8000000000000000 - 1 != intBase(0x8000000000000000) )
  38. self.assertTrue( 0xFFFFFFFFFFFFFFFF - 1 != intBase(0xFFFFFFFFFFFFFFFF) )
  39. self.assertTrue( -20 + 1 != intBase(-20) )
  40. self.assertTrue( -2000 + 1 != intBase(-2000) )
  41. self.assertTrue( -20000000000 + 1 != intBase(-20000000000) )
  42. self.assertTrue( -0x8000000000000000 - 1 != intBase(-0x8000000000000000) )
  43. self.assertTrue( intBase(1) != intBase(2) )
  44. def testLtGt( self ):
  45. self.assertTrue( 0xFE < intBase(0xFF) and intBase(0xFE) < 0xFF )
  46. self.assertFalse( -99 < intBase(-100) and intBase(-99) < - 100 )
  47. self.assertTrue( 0xFFFFFFFFFFFFFFFE < intBase(0xFFFFFFFFFFFFFFFF) )
  48. self.assertFalse(0xFFFFFFFFFFFFFFFF < intBase(0xFFFFFFFFFFFFFFFE) )
  49. self.assertTrue( intBase(0xFFFFFFFFFFFFFFFE) < 0xFFFFFFFFFFFFFFFF )
  50. self.assertTrue( intBase(1) < intBase(2) )
  51. def testLeGe( self ):
  52. self.assertTrue( 0xFE <= intBase(0xFF) and intBase(0xFE) <= 0xFF )
  53. self.assertTrue( 0xFF <= intBase(0xFF) )
  54. self.assertFalse( -99 <= intBase(-100) and intBase(-99) <= - 100 )
  55. self.assertTrue( 0xFFFFFFFFFFFFFFFE <= intBase(0xFFFFFFFFFFFFFFFF) )
  56. self.assertFalse(0xFFFFFFFFFFFFFFFF <= intBase(0xFFFFFFFFFFFFFFFE) )
  57. self.assertTrue( intBase(0xFFFFFFFFFFFFFFFF) <= 0xFFFFFFFFFFFFFFFF )
  58. self.assertFalse( intBase(1) >= intBase(2) )
  59. def testAdd( self ):
  60. self.assertEqual( 10, intBase(5) + 5 )
  61. self.assertEqual( 10, 5 + intBase(5) )
  62. a = 10
  63. a += intBase(10)
  64. self.assertEqual( 20, a )
  65. self.assertEqual( -20, intBase(-10) + (-10) )
  66. self.assertEqual( 10, intBase(-10) + 20 )
  67. self.assertEqual( 0x7fffffffffffffff + 1, intBase(0x7fffffffffffffff) + 1)
  68. self.assertEqual( -0x8000000000000000 + 10, intBase(-0x8000000000000000) + 10 )
  69. self.assertEqual( 0, intBase(-0x8000000000000000) + 0x8000000000000000 )
  70. self.assertEqual( 5, intBase(3) + intBase(2) )
  71. def testSub( self ):
  72. self.assertEqual( 0, intBase(5) - 5 )
  73. self.assertEqual( 10, 15 - intBase(5) )
  74. a = 10
  75. a -= intBase(5)
  76. self.assertEqual( 5, a )
  77. self.assertEqual( -20, intBase(-10) -10 )
  78. self.assertEqual( -10, 10 - intBase(20) )
  79. self.assertEqual( -0xFFFFFFFF - 1, intBase(-0xFFFFFFFF) - 1 )
  80. self.assertEqual( 5, intBase(7) - intBase(2) )
  81. def testMul( self ):
  82. self.assertEqual( 4, intBase(2) * 2 )
  83. self.assertEqual( 4, 2 * intBase(2) )
  84. self.assertEqual( -4, 2 * intBase(-2) )
  85. self.assertEqual( 4, -2 * intBase(-2) )
  86. self.assertEqual( 0x7fffffffffffffff * 2, intBase(0x7fffffffffffffff) * 2)
  87. self.assertEqual( 0x80000000*2, intBase(0x80000000)*2 )
  88. self.assertEqual( -0x80000000*2, 2 * intBase(-0x80000000))
  89. self.assertEqual( 14, intBase(7)*intBase(2) )
  90. def testDiv( self ):
  91. self.assertEqual( 1, intBase(2) / 2 )
  92. self.assertEqual( 2, 5 / intBase(2) )
  93. self.assertEqual( -1, 2 / intBase(-2) )
  94. self.assertEqual( 1, -2 / intBase(-2) )
  95. self.assertEqual( 3, intBase(7)/intBase(2) )
  96. try:
  97. -2 / intBase(0)
  98. self.assertTrue( False )
  99. except ZeroDivisionError:
  100. self.assertTrue( True )
  101. try:
  102. intBase(2)/0
  103. self.assertTrue( False )
  104. except ZeroDivisionError:
  105. self.assertTrue( True )
  106. try:
  107. intBase(0)/intBase(0)
  108. self.assertTrue( False )
  109. except ZeroDivisionError:
  110. self.assertTrue( True )
  111. def testMod( self ):
  112. self.assertEqual( 1, intBase(3) % 2 )
  113. self.assertEqual( 0, intBase(3) % 3 )
  114. self.assertEqual( 1, 3 % intBase(2) )
  115. self.assertEqual( 0, 3 % intBase(3) )
  116. self.assertEqual( 2, intBase(5) % intBase(3) )
  117. def testShift( self ):
  118. self.assertEqual( 0xFFFFFFFF >> 8, intBase(0xFFFFFFFF) >> 8 )
  119. self.assertEqual( 0x00FFFFFF << 8, intBase(0x00FFFFFF) << 8 )
  120. self.assertEqual( 0xFFFFFFFF >> 8, 0xFFFFFFFF >> intBase(8) )
  121. self.assertEqual( 0x00FFFFFF << 8, 0x00FFFFFF << intBase(8) )
  122. def testAnd( self ):
  123. self.assertEqual( 0xFFFFFFFF & 0xFFFF, intBase(0xFFFFFFFF) & 0xFFFF )
  124. self.assertEqual( 0xFFFFFFFF & 0xFFFF, 0xFFFFFFFF & intBase(0xFFFF) )
  125. self.assertEqual( -0xFFFFFFFF & 0xFFFF, intBase(-0xFFFFFFFF) & 0xFFFF )
  126. self.assertEqual( -0xFFFFFFFF & 0xFFFF, -0xFFFFFFFF & intBase(0xFFFF) )
  127. def testOr( self ):
  128. self.assertEqual( 0xFFFF0000 | 0xFFFF, intBase(0xFFFF0000) | 0xFFFF )
  129. self.assertEqual( 0xFFFF0000 | 0xFFFF, 0xFFFF0000 | intBase(0xFFFF) )
  130. self.assertEqual( -0xFFFF0000 | 0xFFFF, intBase(-0xFFFF0000) | 0xFFFF )
  131. self.assertEqual( -0xFFFF0000 | 0xFFFF, -0xFFFF0000 | intBase(0xFFFF) )
  132. def testXor( self ):
  133. self.assertEqual( 0xFFFFFFFF ^ 0xFFFF, intBase(0xFFFFFFFF) ^ 0xFFFF )
  134. self.assertEqual( 0xFFFFFFFF ^ 0xFFFF, 0xFFFFFFFF ^ intBase(0xFFFF) )
  135. self.assertEqual( -0xFFFFFFFF ^ 0xFFFF, intBase(-0xFFFFFFFF) ^ 0xFFFF )
  136. self.assertEqual( -0xFFFFFFFF ^ 0xFFFF, -0xFFFFFFFF ^ intBase(0xFFFF) )
  137. def testUnary( self ):
  138. self.assertEqual( -0xFFFFFFFF, -intBase(0xFFFFFFFF) )
  139. self.assertEqual( 0xFFFFFFFF, +intBase(0xFFFFFFFF) )
  140. self.assertEqual( 0, ~intBase(0xFFFFFFFF) )
  141. def testLongConvert( self ):
  142. self.assertEqual( "100", "%d" % intBase(100) )
  143. self.assertEqual( "FFFF", "%X" % intBase(0xFFFF) )
  144. self.assertEqual( "-70000000000", "%d" % intBase(-70000000000) )
  145. self.assertEqual( "FFFFFFFFFFFFFF", "%X" % intBase(0xFFFFFFFFFFFFFF) )
  146. self.assertEqual( "0", "%d" % intBase(False) )
  147. def testConvert( self ):
  148. self.assertEqual( "100", "%d" % intBase(100) )
  149. self.assertEqual( "64", "%x" % intBase(100) )