unix/fiss

lib/libfmt/test3.c in master
Repositories | Summary | Log | Files | LICENSE

test3.c (867B) download


 1#include <libc.h>
 2#include <stdio.h>
 3#include <u.h>
 4
 5void test(char* fmt, ...) {
 6	va_list arg;
 7	char    fmtbuf[100], stdbuf[100];
 8
 9	va_start(arg, fmt);
10	vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg);
11	va_end(arg);
12
13	va_start(arg, fmt);
14	vsnprint(stdbuf, sizeof stdbuf, fmt, arg);
15	va_end(arg);
16
17	if (strcmp(fmtbuf, stdbuf) != 0)
18		print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf);
19
20	print("fmt %s: %s\n", fmt, fmtbuf);
21}
22
23
24int main(int argc, char* argv[]) {
25	test("%f", 3.14159);
26	test("%f", 3.14159e10);
27	test("%f", 3.14159e-10);
28
29	test("%e", 3.14159);
30	test("%e", 3.14159e10);
31	test("%e", 3.14159e-10);
32
33	test("%g", 3.14159);
34	test("%g", 3.14159e10);
35	test("%g", 3.14159e-10);
36
37	test("%g", 2e25);
38	test("%.18g", 2e25);
39
40	test("%2.18g", 1.0);
41	test("%2.18f", 1.0);
42	test("%f", 3.1415927 / 4);
43
44	test("%20.10d", 12345);
45	test("%0.10d", 12345);
46
47	return 0;
48}