|
|
|
@ -102,6 +102,7 @@ static void vsnprintf_builder_3(char* buffer, ...)
|
|
|
|
|
va_end(args);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("vsnprintf", "[]" ) {
|
|
|
|
|
char buffer[100];
|
|
|
|
|
|
|
|
|
@ -346,13 +347,12 @@ TEST_CASE("- flag", "[]" ) {
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%0-15d", -42);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-42 "));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%0-15.3e", -42.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-4.200e+01 "));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%0-15.3g", -42.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-42.0 "));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -876,89 +876,86 @@ TEST_CASE("padding 20.5", "[]" ) {
|
|
|
|
|
REQUIRE(!strcmp(buffer, " 00EDCB5433"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("padding neg numbers", "[]" ) {
|
|
|
|
|
char buffer[100];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// space padding
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 1d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 2d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 3d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " -5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 4d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " -5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// zero padding
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%01d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%02d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%03d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-05"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%04d", -5);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-005"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TEST_CASE("float padding neg numbers", "[]" ) {
|
|
|
|
|
char buffer[100];
|
|
|
|
|
|
|
|
|
|
// space padding
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 3.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 4.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 5.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " -5.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 6.1g", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " -5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 6.1e", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5.0e+00"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "% 10.1e", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " -5.0e+00"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// zero padding
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%03.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%04.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%05.1f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-05.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%010.1e", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-005.0e+00"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// zero padding no decimal point
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%01.0f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%02.0f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-5"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%03.0f", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-05"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%07.0E", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-05E+00"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%03.0g", -5.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-05"));
|
|
|
|
|
}
|
|
|
|
@ -1061,7 +1058,7 @@ TEST_CASE("float", "[]" ) {
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%+8e", INFINITY);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " +inf"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.4f", 3.1415354);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "3.1415"));
|
|
|
|
|
|
|
|
|
@ -1143,34 +1140,34 @@ TEST_CASE("float", "[]" ) {
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%G", 12345.678);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "12345.7"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.7G", 12345.678);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "12345.68"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.5G", 123456789.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "1.2346E+08"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.6G", 12345.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "12345.0"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%+12.4g", 123456789.);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " +1.235e+08"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.2G", 0.001234);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "0.0012"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%+10.4G", 0.001234);
|
|
|
|
|
REQUIRE(!strcmp(buffer, " +0.001234"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%+012.4g", 0.00001234);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "+001.234e-05"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.3g", -1.2345e-308);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-1.23e-308"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%+.3E", 1.23e+308);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "+1.230E+308"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// out of range for float: should switch to exp notation
|
|
|
|
|
test::sprintf(buffer, "%.1f", 1E20);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "1.0e+20"));
|
|
|
|
@ -1291,7 +1288,6 @@ TEST_CASE("types", "[]" ) {
|
|
|
|
|
test::sprintf(buffer, "%ji", -2147483647LL);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "-2147483647"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1429,10 +1425,10 @@ TEST_CASE("misc", "[]" ) {
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.*g", 2, 0.33333333);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "0.33"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.*e", 2, 0.33333333);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "3.33e-01"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test::sprintf(buffer, "%.*d", -1, 1);
|
|
|
|
|
REQUIRE(!strcmp(buffer, "1"));
|
|
|
|
|
|
|
|
|
|