def testFloatTypePrecisionLossWarning(self, *unused_mocks): instance = standard_artifacts.Float() # TODO(b/156776413): with self.assertWarnsRegex('lost precision'): self.assertAlmostEqual(instance.decode(_TEST_FLOAT128_RAW), _TEST_FLOAT128) # Lost precision warning absl.logging.warning.assert_called_once()
def testSpecialFloatValues(self): coder = standard_artifacts.Float() positive_infinity_float = float('inf') negative_infinity_float = float('-inf') nan_float = float('nan') encoded_positive_infinity = coder.encode(positive_infinity_float) encoded_negative_infinity = coder.encode(negative_infinity_float) encoded_nan = coder.encode(nan_float) decoded_positive_infinity = coder.decode(encoded_positive_infinity) decoded_negative_infinity = coder.decode(encoded_negative_infinity) decoded_nan = coder.decode(encoded_nan) self.assertEqual(encoded_positive_infinity, b'Infinity') self.assertEqual(encoded_negative_infinity, b'-Infinity') self.assertEqual(encoded_nan, b'NaN') self.assertEqual(decoded_positive_infinity, positive_infinity_float) self.assertEqual(decoded_negative_infinity, negative_infinity_float) self.assertTrue(math.isinf(decoded_positive_infinity)) self.assertTrue(math.isinf(decoded_negative_infinity)) self.assertTrue(math.isnan(decoded_nan))
def testFloatType(self): instance = standard_artifacts.Float() self.assertEqual(_TEST_FLOAT_RAW, instance.encode(_TEST_FLOAT_DECODED)) self.assertAlmostEqual(_TEST_FLOAT_DECODED, instance.decode(_TEST_FLOAT_RAW))
def testFloatInfNanEncodingWarning(self, *unused_mocks): instance = standard_artifacts.Float() instance.encode(float('inf')) # Non-portable encoding warning absl.logging.warning.assert_called_once()