aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVedran Grudenic <grudenic.vedran@gmail.com>2019-01-20 23:14:51 +0100
committerMarco Paland <marco@paland.com>2019-01-26 14:39:55 +0100
commitc7fbbfd600f929505181d938a2bcdfc6bd50aa07 (patch)
treec97fd8f13f83ba6689ed43dd9e735785e1a4bfde /test
parentc013a0e8d6bb57247074c748a05bbe7f43bdec6f (diff)
downloadprintf-c7fbbfd600f929505181d938a2bcdfc6bd50aa07.tar.gz
printf-c7fbbfd600f929505181d938a2bcdfc6bd50aa07.tar.bz2
printf-c7fbbfd600f929505181d938a2bcdfc6bd50aa07.zip
patch for issue #40 (Digit missing from negative numbers in certain cases)
Diffstat (limited to 'test')
-rw-r--r--test/test_suite.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/test_suite.cpp b/test/test_suite.cpp
index 100b59f..66ba5f3 100644
--- a/test/test_suite.cpp
+++ b/test/test_suite.cpp
@@ -864,6 +864,74 @@ 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"));
+
+ // 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"));
+
+ // 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_CASE("length", "[]" ) {
char buffer[100];