[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:
SND\kernelnet_cp 2016-03-21 09:13:12 +00:00 committed by Mikhail I. Izmestev
parent 6b90cf1c99
commit 0df2fba54f
4 changed files with 23 additions and 18 deletions

View File

@ -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 )

View File

@ -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);
}

View File

@ -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 )

View File

@ -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):