# 1) format plain int a = 12; b = sprintf("%i", a); if (b != "12") exit(1); # 2) format int with width a = 12; b = sprintf("%4i", a); if (b != " 12") exit(2); # 3) format int with zero fill a = 12; b = sprintf("%04i", a); if (b != "0012") exit(3); # 4) format int left adjusted a = 12; b = sprintf("%-4i", a); if (b != "12 ") exit(4); # 5) format int with sign a = 12; b = sprintf("%+i", a); if (b != "+12") exit(5); # 6) format plain float a = 12.5; b = sprintf("%f", a); if (b != "12.500000") exit(6); # 7) format float with width a = 12.5; b = sprintf("%10f", a); if (b != " 12.500000") exit(7); # 8) format float with zero fill a = 12.5; b = sprintf("%010f", a); if (b != "012.500000") exit(8); # 9) format float with sign a = 12.5; b = sprintf("%+10f", a); if (b != "+12.500000") exit(9); # 10) format float with precision a = 12.5; b = sprintf("%.2f", a); if (b != "12.50") exit(10); # 11) format float with left adjustment a = 12.5; b = sprintf("%-10f", a); if (b != "12.500000 ") exit(11); # 12) format plain string a = "foo"; b = sprintf("%s", a); if (b != "foo") exit(12); # 13) format string with width a = "foo"; b = sprintf("%6s", a); if (b != " foo") exit(13); # 14) format string left adjusted a = "foo"; b = sprintf("%-6s", a); if (b != "foo ") exit(14); # 15) no format b = sprintf("foo"); if (b != "foo") exit(15); # 16) plain percent sign b = sprintf("%%"); if (b != "%") exit(16); # 17) multiple conversions a = 12.5; b = "foo"; c = sprintf("%2.2f %% %s", a, b); if (c != "12.50 % foo") exit(17); print("17 subtests ");