diff options
Diffstat (limited to 'node_modules/gauge/test/progress-bar.js')
-rw-r--r-- | node_modules/gauge/test/progress-bar.js | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/node_modules/gauge/test/progress-bar.js b/node_modules/gauge/test/progress-bar.js new file mode 100644 index 000000000..8e2a5ad64 --- /dev/null +++ b/node_modules/gauge/test/progress-bar.js @@ -0,0 +1,148 @@ +"use strict" +var test = require("tap").test +var ProgressBar = require("../progress-bar.js") + +var cursor = [] +var C +var bar = new ProgressBar({theme: ProgressBar.ascii}, C = { + show: function () { + cursor.push(["show"]) + return C + }, + hide: function () { + cursor.push(["hide"]) + return C + }, + up: function (lines) { + cursor.push(["up",lines]) + return C + }, + horizontalAbsolute: function (col) { + cursor.push(["horizontalAbsolute", col]) + return C + }, + eraseLine: function () { + cursor.push(["eraseLine"]) + return C + }, + write: function (line) { + cursor.push(["write", line]) + return C + } +}) + + +function isOutput(t, msg, output) { + var tests = [] + for (var ii = 0; ii<output.length; ++ii) { + for (var jj = 0; jj<output[ii].length; ++jj) { + tests.push({cmd: ii, arg: jj}) + } + } + tests.forEach(function(test) { + t.is(cursor[test.cmd] ? cursor[test.cmd][test.arg] : null, + output[test.cmd][test.arg], + msg + ": " + output[test.cmd] + (test.arg ? " arg #"+test.arg : "")) + }) +} + +test("hide", function (t) { + t.plan(11) + process.stderr.isTTY = false + bar.hide() + t.is(cursor.length, 0, "We don't progress bar without a tty") + cursor = [] + process.stderr.isTTY = true + bar.hide() + isOutput(t, "hide while not showing",[ + ["show"], // cursor + ["horizontalAbsolute",0], + ["eraseLine"]]) + cursor = [] + bar.showing = true + bar.hide() + isOutput(t, "hide while showing",[ + ["show"], // cursor + ["up", 1], + ["horizontalAbsolute",0], + ["eraseLine"]]) +}) + +test("renderTemplate", function (t) { + t.plan(16) + process.stderr.columns = 11 + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "name"}],{name: "NAME"}) + t.is(result, "NAME", "name substitution") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "completionbar"}],{completed: 0}) + t.is(result, "----------", "0% bar") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "completionbar"}],{completed: 0.5}) + t.is(result, "#####-----", "50% bar") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "completionbar"}],{completed: 1}) + t.is(result, "##########", "100% bar") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "completionbar"}],{completed: -100}) + t.is(result, "----------", "0% underflow bar") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "completionbar"}],{completed: 100}) + t.is(result, "##########", "100% overflow bar") + var result = bar.renderTemplate(ProgressBar.ascii,[{type: "name"},{type: "completionbar"}],{name: "NAME", completed: 0.5}) + t.is(result, "NAME###---", "name + 50%") + var result = bar.renderTemplate(ProgressBar.ascii, ["static"], {}) + t.is(result, "static", "static text") + var result = bar.renderTemplate(ProgressBar.ascii, ["static",{type: "name"}], {name: "NAME"}) + t.is(result, "staticNAME", "static text + var") + var result = bar.renderTemplate(ProgressBar.ascii, ["static",{type: "name", separated: true}], {name: "NAME"}) + t.is(result, "static NAME ", "pre-separated") + var result = bar.renderTemplate(ProgressBar.ascii, [{type: "name", separated: true}, "static"], {name: "NAME"}) + t.is(result, "NAME static", "post-separated") + var result = bar.renderTemplate(ProgressBar.ascii, ["1",{type: "name", separated: true}, "2"], {name: ""}) + t.is(result, "12", "separated no value") + var result = bar.renderTemplate(ProgressBar.ascii, ["1",{type: "name", separated: true}, "2"], {name: "NAME"}) + t.is(result, "1 NAME 2", "separated value") + var result = bar.renderTemplate(ProgressBar.ascii, [{type: "spinner"}], {spinner: 0}) + t.is(result, "", "No spinner") + var result = bar.renderTemplate(ProgressBar.ascii, [{type: "spinner"}], {spinner: 1}) + t.is(result, "\\", "Spinner 1") + var result = bar.renderTemplate(ProgressBar.ascii, [{type: "spinner"}], {spinner: 10}) + t.is(result, "|", "Spinner 10") +}) + +test("show & pulse", function (t) { + t.plan(23) + + process.stderr.columns = 16 + cursor = [] + process.stderr.isTTY = false + bar.template[0].length = 6 + bar.last = new Date(0) + bar.show("NAME", 0) + t.is(cursor.length, 0, "no tty, no progressbar") + + cursor = [] + process.stderr.isTTY = true + bar.last = new Date(0) + bar.show("NAME", 0.1) + isOutput(t, "tty, name, completion", + [ [ 'hide' ], + [ 'horizontalAbsolute', 0 ], + [ 'write', 'NAME |#-----|\n' ], + [ 'show' ] ]) + + bar.show("S") + cursor = [] + bar.last = new Date(0) + bar.pulse() + isOutput(t, "pulsed spinner", + [ [ 'up', 1 ], + [ 'hide' ], + [ 'horizontalAbsolute', 0 ], + [ 'write', 'S \\ |----|\n' ], + [ 'show' ] ]) + cursor = [] + bar.last = new Date(0) + bar.pulse("P") + isOutput(t, "pulsed spinner with subsection", + [ [ 'up', 1 ], + [ 'hide' ], + [ 'horizontalAbsolute', 0 ], + [ 'write', 'S -> P | |----|\n' ], + [ 'show' ] ]) +}) |