mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-18 01:53:22 +08:00
[0.3.x] fixed : division for python3
git-svn-id: https://pykd.svn.codeplex.com/svn@90965 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
6b90cf1c99
commit
0df2fba54f
@ -508,8 +508,15 @@ BOOST_PYTHON_MODULE( pykd )
|
||||
.def( "__rsub__", &NumVariantAdaptor::rsub )
|
||||
.def( "__mul__", &NumVariantAdaptor::mul )
|
||||
.def( "__rmul__", &NumVariantAdaptor::mul )
|
||||
#if PY_VERSION_HEX < 0x03000000
|
||||
.def( "__div__", &NumVariantAdaptor::div )
|
||||
.def( "__rdiv__", &NumVariantAdaptor::rdiv )
|
||||
#else
|
||||
.def("__truediv__", &NumVariantAdaptor::truediv)
|
||||
.def("__rtruediv__", &NumVariantAdaptor::rtruediv)
|
||||
#endif
|
||||
.def("__floordiv__", &NumVariantAdaptor::div)
|
||||
.def("__rfloordiv__", &NumVariantAdaptor::rdiv)
|
||||
.def( "__mod__", &NumVariantAdaptor::mod )
|
||||
.def( "__rmod__", &NumVariantAdaptor::rmod )
|
||||
.def( "__rshift__", &NumVariantAdaptor::rshift )
|
||||
|
@ -169,6 +169,14 @@ public:
|
||||
return convertToPython(var) / obj;
|
||||
}
|
||||
|
||||
static python::object truediv(kdlib::NumBehavior& var, python::object& obj) {
|
||||
return convertToPython(var) / obj;
|
||||
}
|
||||
|
||||
static python::object rtruediv(kdlib::NumBehavior& var, python::object& obj) {
|
||||
return obj / convertToPython(var);
|
||||
}
|
||||
|
||||
static python::object rdiv( kdlib::NumBehavior& var, python::object& obj ) {
|
||||
return obj / convertToPython(var);
|
||||
}
|
||||
|
@ -108,24 +108,14 @@ class IntBaseTest( unittest.TestCase ):
|
||||
self.assertEqual( -1, 2 / numVariant(-2) )
|
||||
self.assertEqual( 1, -2 / numVariant(-2) )
|
||||
self.assertEqual( 3, numVariant(7)/numVariant(2) )
|
||||
|
||||
try:
|
||||
-2 / numVariant(0)
|
||||
self.assertTrue( False )
|
||||
except ZeroDivisionError:
|
||||
self.assertTrue( True )
|
||||
|
||||
try:
|
||||
numVariant(2)/0
|
||||
self.assertTrue( False )
|
||||
except ZeroDivisionError:
|
||||
self.assertTrue( True )
|
||||
|
||||
try:
|
||||
numVariant(0)/numVariant(0)
|
||||
self.assertTrue( False )
|
||||
except ZeroDivisionError:
|
||||
self.assertTrue( True )
|
||||
self.assertRaises(ZeroDivisionError, lambda x: -2 / numVariant(0), 0 )
|
||||
self.assertRaises(ZeroDivisionError, lambda x: numVariant(2)/0, 0 )
|
||||
self.assertRaises(ZeroDivisionError, lambda x: numVariant(0)/numVariant(0), 0 )
|
||||
|
||||
def testDivFloor(self):
|
||||
self.assertEqual(0, numVariant(1) // 2 )
|
||||
self.assertEqual(numVariant(1) // 2, 0 )
|
||||
|
||||
def testMod( self ):
|
||||
self.assertEqual( 1, numVariant(3) % 2 )
|
||||
|
@ -222,7 +222,7 @@ class TypeInfoTest( unittest.TestCase ):
|
||||
def testEnumSubscribe(self):
|
||||
ti = pykd.typeInfo( "enumType" )
|
||||
self.assertEqual( 3, len(ti) )
|
||||
self.assertEqual( [ 1, 2, 3], [ long(field) for field in ti ] )
|
||||
self.assertEqual( [ 1, 2, 3], [ int(field) for field in ti ] )
|
||||
self.assertEqual( [ ( "ONE", 1), ("TWO", 2), ("THREE", 3) ], ti.fields() )
|
||||
|
||||
def testStructNullSize(self):
|
||||
|
Loading…
Reference in New Issue
Block a user