1 var assert = require("assert"),
2 sprintfjs = require("../src/sprintf.js"),
3 sprintf = sprintfjs.sprintf,
4 vsprintf = sprintfjs.vsprintf
6 describe("sprintfjs", function() {
7 it("should return formated strings for simple placeholders", function() {
8 assert.equal("%", sprintf("%%"))
9 assert.equal("10", sprintf("%b", 2))
10 assert.equal("A", sprintf("%c", 65))
11 assert.equal("2", sprintf("%d", 2))
12 assert.equal("2", sprintf("%i", 2))
13 assert.equal("2", sprintf("%d", "2"))
14 assert.equal("2", sprintf("%i", "2"))
15 assert.equal("2e+0", sprintf("%e", 2))
16 assert.equal("2", sprintf("%u", 2))
17 assert.equal("4294967294", sprintf("%u", -2))
18 assert.equal("2.2", sprintf("%f", 2.2))
19 assert.equal("10", sprintf("%o", 8))
20 assert.equal("%s", sprintf("%s", "%s"))
21 assert.equal("ff", sprintf("%x", 255))
22 assert.equal("FF", sprintf("%X", 255))
23 assert.equal("Polly wants a cracker", sprintf("%2$s %3$s a %1$s", "cracker", "Polly", "wants"))
24 assert.equal("Hello world!", sprintf("Hello %(who)s!", {"who": "world"}))
27 it("should return formated strings for complex placeholders", function() {
29 assert.equal("2", sprintf("%d", 2))
30 assert.equal("-2", sprintf("%d", -2))
31 assert.equal("+2", sprintf("%+d", 2))
32 assert.equal("-2", sprintf("%+d", -2))
33 assert.equal("2", sprintf("%i", 2))
34 assert.equal("-2", sprintf("%i", -2))
35 assert.equal("+2", sprintf("%+i", 2))
36 assert.equal("-2", sprintf("%+i", -2))
37 assert.equal("2.2", sprintf("%f", 2.2))
38 assert.equal("-2.2", sprintf("%f", -2.2))
39 assert.equal("+2.2", sprintf("%+f", 2.2))
40 assert.equal("-2.2", sprintf("%+f", -2.2))
41 assert.equal("-2.3", sprintf("%+.1f", -2.34))
42 assert.equal("-0.0", sprintf("%+.1f", -0.01))
43 assert.equal("-000000123", sprintf("%+010d", -123))
44 assert.equal("______-123", sprintf("%+'_10d", -123))
45 assert.equal("-234.34 123.2", sprintf("%f %f", -234.34, 123.2))
48 assert.equal("-0002", sprintf("%05d", -2))
49 assert.equal("-0002", sprintf("%05i", -2))
50 assert.equal(" <", sprintf("%5s", "<"))
51 assert.equal("0000<", sprintf("%05s", "<"))
52 assert.equal("____<", sprintf("%'_5s", "<"))
53 assert.equal("> ", sprintf("%-5s", ">"))
54 assert.equal(">0000", sprintf("%0-5s", ">"))
55 assert.equal(">____", sprintf("%'_-5s", ">"))
56 assert.equal("xxxxxx", sprintf("%5s", "xxxxxx"))
57 assert.equal("1234", sprintf("%02u", 1234))
58 assert.equal(" -10.235", sprintf("%8.3f", -10.23456))
59 assert.equal("-12.34 xxx", sprintf("%f %s", -12.34, "xxx"))
62 assert.equal("2.3", sprintf("%.1f", 2.345))
63 assert.equal("xxxxx", sprintf("%5.5s", "xxxxxx"))
64 assert.equal(" x", sprintf("%5.1s", "xxxxxx"))
68 it("should return formated strings for callbacks", function() {
69 assert.equal("foobar", sprintf("%s", function() { return "foobar" }))
70 assert.equal(Date.now(), sprintf("%s", Date.now)) // should pass...