|
4 | 4 | var chai = require('chai'); |
5 | 5 | var should = chai.should(); |
6 | 6 | var assert = chai.assert; |
| 7 | + var ansi = require('ansi-escape-sequences'); |
| 8 | + var style = {}; |
| 9 | + var fg = {}; |
| 10 | + var bg = {}; |
| 11 | + Object.keys(ansi.style).forEach(function(key) { |
| 12 | + var value = ansi.style[key]; |
| 13 | + if(/^bg-/.test(key)) { |
| 14 | + bg[key.substr(3)] = value; |
| 15 | + } else { |
| 16 | + fg[key] = value; |
| 17 | + } |
| 18 | + }); |
| 19 | + Object.keys(fg).forEach(function(key) { |
| 20 | + if( !(key in bg) ) { |
| 21 | + style[key] = fg[key]; |
| 22 | + delete fg[key]; |
| 23 | + } |
| 24 | + }); |
7 | 25 | var col = 0; |
8 | 26 | var logbuf = listit.buffer(); |
9 | 27 | process.on("exit", function() { |
|
15 | 33 | func(); |
16 | 34 | titles = titles.slice(0, titles.length - 1); |
17 | 35 | } |
| 36 | + function styled(message, styles) { |
| 37 | + var args = Array.apply(null, arguments); |
| 38 | + styles = args.slice(1); |
| 39 | + styles.push(message, ansi.style.reset); |
| 40 | + return styles.join(''); |
| 41 | + } |
18 | 42 | function it(name, test) { |
19 | 43 | logbuf.d(titles.join(" ") + " " + name); |
20 | 44 | try { |
21 | 45 | test(); |
22 | | - logbuf.d("OK"); |
| 46 | + logbuf.d(styled(" PASS ", |
| 47 | + bg.green, fg.white)); |
23 | 48 | logbuf.nl(); |
24 | 49 | } catch(ex) { |
25 | | - logbuf.d("FAIL"); |
| 50 | + logbuf.d(styled(" FAIL ", |
| 51 | + bg.red, fg.white, style.bold)); |
26 | 52 | logbuf.nl(); |
27 | 53 | test(); |
| 54 | + console.error(ex); |
28 | 55 | } |
29 | 56 | } |
30 | 57 | describe("listit.buffer", function() { |
|
223 | 250 | "C 333.3 D -4.444"); |
224 | 251 | }); |
225 | 252 | }); |
226 | | - describe("bidimentional data", function() { |
| 253 | + describe("bidimensional data", function() { |
227 | 254 | it("no autoAlign", function() { |
228 | 255 | var buffer = new listit.buffer(); |
229 | 256 | buffer.d([ |
|
247 | 274 | }); |
248 | 275 | }); |
249 | 276 | }); |
| 277 | + describe("Do not count escape sequences for column width,", function() { |
| 278 | + Object.keys(ansi.style).forEach(function(key) { |
| 279 | + var style = ansi.style[key]; |
| 280 | + it("style " + key + "#1", function() { |
| 281 | + var buffer = new listit.buffer(); |
| 282 | + buffer.d([ styled("A", style), "B" ], ["C", "D"]); |
| 283 | + assert.equal(buffer.toString(), styled("A", style) + " B\n" + "C D"); |
| 284 | + }); |
| 285 | + it("style " + key + "#2", function() { |
| 286 | + var buffer = new listit.buffer(); |
| 287 | + buffer.d([ "A", styled("B", style) ], ["C", "D"]); |
| 288 | + assert.equal(buffer.toString(), "A " + styled("B", style) + "\n" + "C D"); |
| 289 | + }); |
| 290 | + }); |
| 291 | + }); |
250 | 292 | }()); |
0 commit comments