Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Impement tests for gen_format
Matthew Seaman committed 12 years ago
commit 0c580754466efbf7a27b8dd9b41111dad022e58a
parent 1605f73
2 files changed +89 -84
modified libpkg/pkg_printf.c
@@ -1218,12 +1218,27 @@ gen_format(char *buf, size_t buflen, unsigned flags, const char *tail)

	/* PP_ALTERNATE_FORM1 is not used by regular printf(3) */

+
	/* If PP_EXPLICIT_PLUS and PP_SPACE_FOR_PLUS are both set,
+
	   the result is formatted according to PP_EXPLICIT_PLUS */
+

+
	if ((flags & (PP_EXPLICIT_PLUS|PP_SPACE_FOR_PLUS)) ==
+
	    (PP_EXPLICIT_PLUS|PP_SPACE_FOR_PLUS))
+
		flags &= ~(PP_SPACE_FOR_PLUS);
+

+
	/* If PP_LEFT_ALIGN and PP_ZERO_PAD are given together,
+
	   PP_LEFT_ALIGN applies */
+

+
	if ((flags & (PP_LEFT_ALIGN|PP_ZERO_PAD)) ==
+
	    (PP_LEFT_ALIGN|PP_ZERO_PAD))
+
		flags &= ~(PP_ZERO_PAD);
+

	if (flags & PP_ALTERNATE_FORM2)
		buf[bp++] = '#';

	if (flags & PP_LEFT_ALIGN)
		buf[bp++] = '-';
-
	else if (flags & PP_ZERO_PAD)
+

+
	if (flags & PP_ZERO_PAD)
		buf[bp++] = '0';

	if (buflen - bp < tlen + 2)
@@ -1231,7 +1246,8 @@ gen_format(char *buf, size_t buflen, unsigned flags, const char *tail)
	
	if (flags & PP_EXPLICIT_PLUS)
		buf[bp++] = '+';
-
	else if (flags & PP_SPACE_FOR_PLUS)
+

+
	if (flags & PP_SPACE_FOR_PLUS)
		buf[bp++] = ' ';

	if (flags & PP_THOUSANDS_SEP)
modified tests/pkg_printf/test.c
@@ -43,90 +43,79 @@ ATF_TC_BODY(gen_format, tc)
	char		*tail = "x";

	struct gf_test_vals {
-
		unsigned    flags;
		const char *out;
+
		unsigned    flags;
	} gf_test_vals[] = {
-
		{ 0x00,	"%*x", },
-
		{ 0x01,	"%*x", },
-
		{ 0x02,	"%#*x", },
-
		{ 0x03,	"%#*x", },
-

-
		{ 0x04,	"%-*x", },
-
		{ 0x05,	"%-*x", },
-
		{ 0x06,	"%#-*x", },
-
		{ 0x07,	"%#-*x", },
-

-
		{ 0x08,	"%+*x", },
-
		{ 0x09,	"%+*x", },
-
		{ 0x0a,	"%#+*x", },
-
		{ 0x0b,	"%#+*x", },
-

-
		{ 0x0c,	"%-+*x", },
-
		{ 0x0d,	"%-+*x", },
-
		{ 0x0e,	"%#-+*x", },
-
		{ 0x0f,	"%#-+*x", },
-

-
		{ 0x10,	"% *x", },
-
		{ 0x11,	"% *x", },
-
		{ 0x12,	"%# *x", },
-
		{ 0x13,	"%# *x", },
-

-
		{ 0x14,	"%- *x", },
-
		{ 0x15,	"%- *x", },
-
		{ 0x16,	"%#- *x", },
-
		{ 0x17,	"%#- *x", },
-

-
		{ 0x18,	"%+*x", },
-
		{ 0x19,	"%+*x", },
-
		{ 0x1a,	"%#+*x", },
-
		{ 0x1b,	"%#+*x", },
-

-
		{ 0x1c,	"%-+*x", },
-
		{ 0x1d,	"%-+*x", },
-
		{ 0x1e,	"%#-+*x", },
-
		{ 0x1f,	"%#-+*x", },
-

-
		{ 0x20,	"%0*x", },
-
		{ 0x21,	"%0*x", },
-
		{ 0x22,	"%#0*x", },
-
		{ 0x23,	"%#0*x", },
-

-
		{ 0x24,	"%-*x", },
-
		{ 0x25,	"%-*x", },
-
		{ 0x26,	"%#-*x", },
-
		{ 0x27,	"%#-*x", },
-

-
		{ 0x28,	"%0+*x", },
-
		{ 0x29,	"%0+*x", },
-
		{ 0x2a,	"%#0+*x", },
-
		{ 0x2b,	"%#0+*x", },
-

-
		{ 0x2c,	"%-+*x", },
-
		{ 0x2d,	"%-+*x", },
-
		{ 0x2e,	"%#-+*x", },
-
		{ 0x2f,	"%#-+*x", },
-

-
		{ 0x30,	"%0 *x", },
-
		{ 0x31,	"%0 *x", },
-
		{ 0x32,	"%#0 *x", },
-
		{ 0x33,	"%#0 *x", },
-

-
		{ 0x34,	"%- *x", },
-
		{ 0x35,	"%- *x", },
-
		{ 0x36,	"%#- *x", },
-
		{ 0x37,	"%#- *x", },
-

-
		{ 0x38,	"%0+*x", },
-
		{ 0x39,	"%0+*x", },
-
		{ 0x3a,	"%#0+*x", },
-
		{ 0x3b,	"%#0+*x", },
-

-
		{ 0x3c,	"%-+*x", },
-
		{ 0x3d,	"%-+*x", },
-
		{ 0x3e,	"%#-+*x", },
-
		{ 0x3f,	"%#-+*x", },
-

-
		{ 0,    NULL, },
+

+
		{ "%*x",     0, },
+

+
		{ "%*x",     PP_ALTERNATE_FORM1, }, /* Has no effect */
+

+
		{ "%#*x",    PP_ALTERNATE_FORM2, },
+
		{ "%-*x",    PP_LEFT_ALIGN, },
+
		{ "%#-*x",   PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%+*x",    PP_EXPLICIT_PLUS, },
+
		{ "%#+*x",   PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+*x",   PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+*x",  PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "% *x",    PP_SPACE_FOR_PLUS, },
+
		{ "%# *x",   PP_SPACE_FOR_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%- *x",   PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#- *x",  PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%+*x",    PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS, },
+
		{ "%#+*x",   PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+*x",   PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+*x",  PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0*x",    PP_ZERO_PAD, },
+
		{ "%#0*x",   PP_ZERO_PAD|PP_ALTERNATE_FORM2, },
+
		{ "%-*x",    PP_ZERO_PAD|PP_LEFT_ALIGN, },
+
		{ "%#-*x",   PP_ZERO_PAD|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0+*x",   PP_ZERO_PAD|PP_EXPLICIT_PLUS, },
+
		{ "%#0+*x",  PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+*x",   PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+*x",  PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0 *x",   PP_ZERO_PAD|PP_SPACE_FOR_PLUS, },
+
		{ "%#0 *x",  PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%- *x",   PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#- *x",  PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0+*x",   PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS, },
+
		{ "%#0+*x",  PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+*x",   PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+*x",  PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%'*x",    PP_THOUSANDS_SEP, },
+
		{ "%#'*x",   PP_THOUSANDS_SEP|PP_ALTERNATE_FORM2, },
+
		{ "%-'*x",   PP_THOUSANDS_SEP|PP_LEFT_ALIGN, },
+
		{ "%#-'*x",  PP_THOUSANDS_SEP|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%+'*x",   PP_THOUSANDS_SEP|PP_EXPLICIT_PLUS, },
+
		{ "%#+'*x",  PP_THOUSANDS_SEP|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+'*x",  PP_THOUSANDS_SEP|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+'*x", PP_THOUSANDS_SEP|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "% '*x",   PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS, },
+
		{ "%# '*x",  PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%- '*x",  PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#- '*x", PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%+'*x",   PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS, },
+
		{ "%#+'*x",  PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+'*x",  PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+'*x", PP_THOUSANDS_SEP|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0'*x",   PP_THOUSANDS_SEP|PP_ZERO_PAD, },
+
		{ "%#0'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_ALTERNATE_FORM2, },
+
		{ "%-'*x",   PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_LEFT_ALIGN, },
+
		{ "%#-'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0+'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_EXPLICIT_PLUS, },
+
		{ "%#0+'*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+'*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0 '*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS, },
+
		{ "%#0 '*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%- '*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#- '*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+
		{ "%0+'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS, },
+
		{ "%#0+'*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_ALTERNATE_FORM2, },
+
		{ "%-+'*x",  PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN, },
+
		{ "%#-+'*x", PP_THOUSANDS_SEP|PP_ZERO_PAD|PP_SPACE_FOR_PLUS|PP_EXPLICIT_PLUS|PP_LEFT_ALIGN|PP_ALTERNATE_FORM2, },
+

+
		{ NULL, 0, },
	};

	for (i = 0; gf_test_vals[i].out != NULL; i++) {