def testExponentSetter(self) : f32 = Float() f64 = Float(length=64) def setExponent(f, value) : f.raw_exponent = value bin = '01000110000110110100100101100001' f32.bin = bin self.assertEqual(f32.bin, bin) self.assertEqual(f32.raw_sign, '0') self.assertEqual(f32.raw_exponent, '10001100') self.assertEqual(f32.raw_mantissa, '00110110100100101100001') # length 8 f32.raw_exponent = '10101010' # length 11 self.assertRaises(bitstring.CreationError, setExponent, f32, '10111111111') # exponent and sign (should remain unchanged) self.assertEqual(f32.raw_sign, '0') self.assertEqual(f32.raw_mantissa, '00110110100100101100001') # invalid binary self.assertRaises(bitstring.CreationError, setExponent, f32, '10000003') # invalid type self.assertRaises(bitstring.CreationError, setExponent, f32, {}) bin = '0100000000010010000110000000000010100111110001011010110001000111' f64.bin = bin self.assertEqual(f64.bin, bin) self.assertEqual(f64.raw_sign, '0') self.assertEqual(f64.raw_exponent, '10000000001') self.assertEqual(f64.raw_mantissa, '0010000110000000000010100111110001011010110001000111') # length 11 f64.raw_exponent = '10101010001' self.assertEqual(f64.raw_exponent, '10101010001') # length 50 self.assertRaises(bitstring.CreationError, setExponent, f64, '10001010') # exponent and sign (should remain unchanged) self.assertEqual(f64.raw_sign, '0') self.assertEqual(f64.raw_mantissa,'0010000110000000000010100111110001011010110001000111') # invalid binary self.assertRaises(bitstring.CreationError, setExponent, f64, '10111000009') # invalid type self.assertRaises(bitstring.CreationError, setExponent, f64, [])
def test_ExponentField_ExponentValue(self) : f = Float() f.raw_exponent = '10000001' self.assertEqual(f.raw_exponent, '10000001') self.assertEqual(f.exponent_field, 129) self.assertEqual(f.exponent_value, 2) f.raw_exponent = '11111111' self.assertEqual(f.raw_exponent, '11111111') self.assertEqual(f.exponent_field, 255) self.assertEqual(f.exponent_value, 128) f = Float(length=64) f.raw_exponent = '10000000000' self.assertEqual(f.raw_exponent, '10000000000') self.assertEqual(f.exponent_field, 1024) self.assertEqual(f.exponent_value, 1) f.raw_exponent = '11111111111' self.assertEqual(f.raw_exponent, '11111111111') self.assertEqual(f.exponent_field, 2047) self.assertEqual(f.exponent_value, 1024)