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

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

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

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