def testMulDouble(self): """ Ints are promoted by doubles during multiplication. """ i = IntObject(4) result = i.call(u"multiply", [DoubleObject(2.1)]) self.assertTrue(isinstance(result, DoubleObject)) self.assertEqual(result.getDouble(), 8.4)
def testMax(self): i = IntObject(3) result = i.call(u"max", [IntObject(5)]) self.assertEqual(result.getInt(), 5)
def testApproxDivideNaN(self): i = IntObject(0) result = i.call(u"approxDivide", [i]) self.assertTrue(math.isnan(result.getDouble()))
def testApproxDivide(self): i = IntObject(4) result = i.call(u"approxDivide", [IntObject(2)]) self.assertAlmostEqual(result.getDouble(), 2.0)
def testAdd(self): i = IntObject(32) result = i.call(u"add", [IntObject(11)]) self.assertEqual(result.getInt(), 43)
def testShiftRightLarge(self): i = IntObject(0x7fffffffffffffff) result = i.call(u"shiftRight", [IntObject(64)]) self.assertEqual(result.getInt(), 0x0)
def testModPow(self): i = IntObject(3) result = i.call(u"modPow", [IntObject(1000000), IntObject(255)]) self.assertEqual(result.getInt(), 171)
def testMin(self): i = IntObject(3) result = i.call(u"min", [IntObject(5)]) self.assertEqual(result.getInt(), 3)
def testComplement(self): i = IntObject(5) result = i.call(u"complement", []) self.assertEqual(result.getInt(), -6)
def testApproxDivideBigInt(self): i = IntObject(7937000378463977) # Hack. bi = BigInt(rbigint.fromint(1000000000000000000).int_mul(10)) result = i.call(u"approxDivide", [bi]) self.assertAlmostEqual(result._d, 0.0007937000378463977)
def testAddDouble(self): i = IntObject(32) result = i.call(u"add", [DoubleObject(1.1)]) self.assertAlmostEqual(result.getDouble(), 33.1)
def testOpCmpBigInt(self): i = IntObject(2) bi = BigInt(rbigint.fromint(6)) result = i.call(u"op__cmp", [bi]) self.assertEqual(result.getInt(), -1)
def testOpCmpDouble(self): i = IntObject(2) result = i.call(u"op__cmp", [DoubleObject(2.0)]) self.assertEqual(result.getInt(), 0)
def testPowSmall(self): i = IntObject(5) result = i.call(u"pow", [IntObject(7)]) self.assertEqual(result.getInt(), 78125)
def testShiftLeftFar(self): i = IntObject(0x1) result = i.call(u"shiftLeft", [IntObject(65)]) bi = rbigint.fromint(0x1).lshift(65) self.assertTrue(result.bi.eq(bi))
def testOr(self): i = IntObject(0x3) result = i.call(u"or", [IntObject(0x5)]) self.assertEqual(result.getInt(), 0x7)
def testSubtractDouble(self): i = IntObject(5) result = i.call(u"subtract", [DoubleObject(1.5)]) self.assertAlmostEqual(result.getDouble(), 3.5)
def testPow(self): i = IntObject(3) result = i.call(u"pow", [IntObject(100)]) self.assertTrue(result.bi.eq(rbigint.fromint(3).pow(rbigint.fromint(100))))
def testShiftLeftLarge(self): i = IntObject(0x5c5c) result = i.call(u"shiftLeft", [IntObject(64)]) bi = rbigint.fromint(0x5c5c).lshift(64) self.assertTrue(result.bi.eq(bi))
def testShiftRight(self): i = IntObject(0xf0) result = i.call(u"shiftRight", [IntObject(5)]) self.assertEqual(result.getInt(), 0x7)
def testPow(self): i = IntObject(3) result = i.call(u"pow", [IntObject(100)]) self.assertTrue( result.bi.eq(rbigint.fromint(3).pow(rbigint.fromint(100))))
def testSubtract(self): i = IntObject(5) result = i.call(u"subtract", [IntObject(15)]) self.assertAlmostEqual(result.getInt(), -10)
def testBitLength(self): i = IntObject(42) result = i.call(u"bitLength", []) self.assertEqual(result.getInt(), 6)