TEST(LongTypeTest, PrintValueTest) {
  CheckPrintValue(INT64_C(0));
  CheckPrintValue(INT64_C(123));
  CheckPrintValue(INT64_C(-123));
  CheckPrintValue(std::numeric_limits<std::int64_t>::max());
  CheckPrintValue(std::numeric_limits<std::int64_t>::min());
}
TEST(FloatTypeTest, PrintValueTest) {
  // Floats without a fractional part.
  CheckPrintValue(0.0f);
  CheckPrintValue(123.0f);
  CheckPrintValue(-123.0f);

  // Try with a fractional part.
  CheckPrintValue(123.456f);
  CheckPrintValue(-123.456f);

  // Try with large and small exponents.
  CheckPrintValue(8.2575e20f);
  CheckPrintValue(-8.2575e20f);
  CheckPrintValue(8.2575e-20f);
  CheckPrintValue(-8.2575e-20f);

  // Various limits: largest and smallest normalized positive values, smallest
  // denormalized nonzero value, and largest negative value.
  CheckPrintValue(std::numeric_limits<float>::max());
  CheckPrintValue(std::numeric_limits<float>::min());
  CheckPrintValue(std::numeric_limits<float>::denorm_min());
  CheckPrintValue(std::numeric_limits<float>::lowest());
}