Commit Diff


commit - df121a0027e6dc08abe6fc907c9af2593a263c17
commit + ae1c9bc4abbd66d522a82fde4cf631c2678f742c
blob - /dev/null
blob + 715fcd5baa27edc1e7d59007ef821fc1d9dbe65e (mode 644)
--- /dev/null
+++ src/lib9/fmt/test2.c
@@ -0,0 +1,9 @@
+#include <stdarg.h>
+#include <utf.h>
+#include <fmt.h>
+
+int
+main(int argc, char **argv)
+{
+	print("%020.10d\n", 100);
+}
blob - /dev/null
blob + 7cda8dcbdddf889fc5a23d62619b00489efc49bf (mode 644)
--- /dev/null
+++ src/lib9/fmt/test3.c
@@ -0,0 +1,52 @@
+#include <u.h>
+#include <libc.h>
+#include <stdio.h>
+
+void
+test(char *fmt, ...)
+{
+	va_list arg;
+	char fmtbuf[100], stdbuf[100];
+
+	va_start(arg, fmt);
+	vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg);
+	va_end(arg);
+
+	va_start(arg, fmt);
+	vsnprint(stdbuf, sizeof stdbuf, fmt, arg);
+	va_end(arg);
+
+	if(strcmp(fmtbuf, stdbuf) != 0)
+		print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf);
+
+	print("fmt %s: %s\n", fmt, fmtbuf);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+	test("%f", 3.14159);
+	test("%f", 3.14159e10);
+	test("%f", 3.14159e-10);
+
+	test("%e", 3.14159);
+	test("%e", 3.14159e10);
+	test("%e", 3.14159e-10);
+
+	test("%g", 3.14159);
+	test("%g", 3.14159e10);
+	test("%g", 3.14159e-10);
+
+	test("%g", 2e25);
+	test("%.18g", 2e25);
+
+	test("%2.18g", 1.0);
+	test("%2.18f", 1.0);
+	test("%f", 3.1415927/4);
+
+	test("%20.10d", 12345);
+	test("%0.10d", 12345);
+
+	return 0;
+}