From: Rasmus Villemoes <linux@rasmusvillemoes.dk>
To: Andrew Morton <akpm@linux-foundation.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Kees Cook <keescook@chromium.org>
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH v3 11/14] lib/test_printf.c: add a few number() tests
Date: Thu, 3 Dec 2015 21:51:10 +0100 [thread overview]
Message-ID: <1449175873-1780-12-git-send-email-linux@rasmusvillemoes.dk> (raw)
In-Reply-To: <1449175873-1780-1-git-send-email-linux@rasmusvillemoes.dk>
This adds a few tests to test_number, one of which serves to document
another deviation from POSIX/C99 (printing 0 with an explicit
precision of 0).
Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
---
lib/test_printf.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/lib/test_printf.c b/lib/test_printf.c
index 3393d667c6b8..b23ce824766f 100644
--- a/lib/test_printf.c
+++ b/lib/test_printf.c
@@ -158,6 +158,30 @@ test_number(void)
test("0x1234abcd ", "%#-12x", 0x1234abcd);
test(" 0x1234abcd", "%#12x", 0x1234abcd);
test("0|001| 12|+123| 1234|-123|-1234", "%d|%03d|%3d|%+d|% d|%+d|% d", 0, 1, 12, 123, 1234, -123, -1234);
+ test("0|1|1|128|255", "%hhu|%hhu|%hhu|%hhu|%hhu", 0, 1, 257, 128, -1);
+ test("0|1|1|-128|-1", "%hhd|%hhd|%hhd|%hhd|%hhd", 0, 1, 257, 128, -1);
+ test("2015122420151225", "%ho%ho%#ho", 1037, 5282, -11627);
+ /*
+ * POSIX/C99: »The result of converting zero with an explicit
+ * precision of zero shall be no characters.« Hence the output
+ * from the below test should really be "00|0||| ". However,
+ * the kernel's printf also produces a single 0 in that
+ * case. This test case simply documents the current
+ * behaviour.
+ */
+ test("00|0|0|0|0", "%.2d|%.1d|%.0d|%.*d|%1.0d", 0, 0, 0, 0, 0, 0);
+#ifndef __CHAR_UNSIGNED__
+ {
+ /*
+ * Passing a 'char' to a %02x specifier doesn't do
+ * what was presumably the intention when char is
+ * signed and the value is negative. One must either &
+ * with 0xff or cast to u8.
+ */
+ char val = -16;
+ test("0xfffffff0|0xf0|0xf0", "%#02x|%#02x|%#02x", val, val & 0xff, (u8)val);
+ }
+#endif
}
static void __init
--
2.6.1
next prev parent reply other threads:[~2015-12-03 20:51 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-03 20:50 [PATCH v3 00/14] printf stuff for 4.5 Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 01/14] lib/vsprintf.c: pull out padding code from dentry_name() Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 02/14] lib/vsprintf.c: move string() below widen_string() Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 03/14] lib/vsprintf.c: eliminate potential race in string() Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 04/14] lib/vsprintf.c: expand field_width to 24 bits Rasmus Villemoes
2015-12-03 20:54 ` Joe Perches
2015-12-03 21:28 ` Andy Shevchenko
2015-12-03 23:34 ` Andrew Morton
2015-12-04 0:03 ` Joe Perches
2015-12-04 8:59 ` Rasmus Villemoes
2015-12-04 9:02 ` Rasmus Villemoes
2015-12-03 23:41 ` Joe Perches
2015-12-03 20:51 ` [PATCH v3 05/14] lib/vsprintf.c: help gcc make number() smaller Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 06/14] lib/vsprintf.c: warn about too large precisions and field widths Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 07/14] lib/kasprintf.c: add sanity check to kvasprintf Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 08/14] lib/test_printf.c: don't BUG Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 09/14] lib/test_printf.c: check for out-of-bound writes Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 10/14] lib/test_printf.c: test precision quirks Rasmus Villemoes
2015-12-03 20:51 ` Rasmus Villemoes [this message]
2015-12-03 20:51 ` [PATCH v3 12/14] lib/test_printf.c: account for kvasprintf tests Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 13/14] lib/test_printf.c: add test for large bitmaps Rasmus Villemoes
2015-12-03 20:51 ` [PATCH v3 14/14] lib/test_printf.c: test dentry printing Rasmus Villemoes
2015-12-04 0:19 ` Andrew Morton
2015-12-04 8:16 ` Rasmus Villemoes
2015-12-04 8:46 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1449175873-1780-12-git-send-email-linux@rasmusvillemoes.dk \
--to=linux@rasmusvillemoes.dk \
--cc=akpm@linux-foundation.org \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®