|
1 | | -import util from 'util'; |
2 | 1 | import test from 'ava'; |
3 | 2 | import chalk from 'chalk'; |
4 | 3 | import stripAnsi from 'strip-ansi'; |
5 | 4 | import randomItem from 'random-item'; |
6 | | -import sliceAnsi from '.'; |
| 5 | +import sliceAnsi from './index.js'; |
| 6 | + |
| 7 | +chalk.level = 1; |
7 | 8 |
|
8 | 9 | const fixture = chalk.red('the ') + chalk.green('quick ') + chalk.blue('brown ') + chalk.cyan('fox ') + chalk.yellow('jumped '); |
9 | 10 | const stripped = stripAnsi(fixture); |
10 | 11 |
|
11 | 12 | function generate(string) { |
12 | | - const rand1 = randomItem(['rock', 'paper', 'scissors']); |
13 | | - const rand2 = randomItem(['blue', 'green', 'yellow', 'red']); |
14 | | - return `${string}:${chalk[rand2](rand1)} `; |
| 13 | + const random1 = randomItem(['rock', 'paper', 'scissors']); |
| 14 | + const random2 = randomItem(['blue', 'green', 'yellow', 'red']); |
| 15 | + return `${string}:${chalk[random2](random1)} `; |
15 | 16 | } |
16 | 17 |
|
17 | 18 | test('main', t => { |
18 | 19 | // The slice should behave exactly as a regular JS slice behaves |
19 | | - for (let i = 0; i < 20; i++) { |
20 | | - for (let j = 19; j > i; j--) { |
21 | | - const nativeSlice = stripped.slice(i, j); |
22 | | - const ansiSlice = sliceAnsi(fixture, i, j); |
| 20 | + for (let index = 0; index < 20; index++) { |
| 21 | + for (let index2 = 19; index2 > index; index2--) { |
| 22 | + const nativeSlice = stripped.slice(index, index2); |
| 23 | + const ansiSlice = sliceAnsi(fixture, index, index2); |
23 | 24 | t.is(nativeSlice, stripAnsi(ansiSlice)); |
24 | 25 | } |
25 | 26 | } |
26 | 27 |
|
27 | | - const a = util.inspect('\u001B[31mthe \u001B[39m\u001B[32mquick \u001B[39m'); |
28 | | - const b = util.inspect('\u001B[34mbrown \u001B[39m\u001B[36mfox \u001B[39m'); |
29 | | - const c = util.inspect('\u001B[31m \u001B[39m\u001B[32mquick \u001B[39m\u001B[34mbrown \u001B[39m\u001B[36mfox \u001B[39m'); |
| 28 | + const a = JSON.stringify('\u001B[31mthe \u001B[39m\u001B[32mquick \u001B[39m'); |
| 29 | + const b = JSON.stringify('\u001B[34mbrown \u001B[39m\u001B[36mfox \u001B[39m'); |
| 30 | + const c = JSON.stringify('\u001B[31m \u001B[39m\u001B[32mquick \u001B[39m\u001B[34mbrown \u001B[39m\u001B[36mfox \u001B[39m'); |
30 | 31 |
|
31 | | - t.is(util.inspect(sliceAnsi(fixture, 0, 10)), a); |
32 | | - t.is(util.inspect(sliceAnsi(fixture, 10, 20)), b); |
33 | | - t.is(util.inspect(sliceAnsi(fixture, 3, 20)), c); |
| 32 | + t.is(JSON.stringify(sliceAnsi(fixture, 0, 10)), a); |
| 33 | + t.is(JSON.stringify(sliceAnsi(fixture, 10, 20)), b); |
| 34 | + t.is(JSON.stringify(sliceAnsi(fixture, 3, 20)), c); |
34 | 35 |
|
35 | | - const str = generate(1) + generate(2) + generate(3) + generate(4) + generate(5) + generate(6) + generate(7) + generate(8) + generate(9) + generate(10) + generate(11) + generate(12) + generate(13) + generate(14) + generate(15) + generate(1) + generate(2) + generate(3) + generate(4) + generate(5) + generate(6) + generate(7) + generate(8) + generate(9) + generate(10) + generate(11) + generate(12) + generate(13) + generate(14) + generate(15); |
36 | | - const native = stripAnsi(str).slice(0, 55); |
37 | | - const ansi = stripAnsi(sliceAnsi(str, 0, 55)); |
| 36 | + const string = generate(1) + generate(2) + generate(3) + generate(4) + generate(5) + generate(6) + generate(7) + generate(8) + generate(9) + generate(10) + generate(11) + generate(12) + generate(13) + generate(14) + generate(15) + generate(1) + generate(2) + generate(3) + generate(4) + generate(5) + generate(6) + generate(7) + generate(8) + generate(9) + generate(10) + generate(11) + generate(12) + generate(13) + generate(14) + generate(15); |
| 37 | + const native = stripAnsi(string).slice(0, 55); |
| 38 | + const ansi = stripAnsi(sliceAnsi(string, 0, 55)); |
38 | 39 | t.is(native, ansi); |
39 | 40 | }); |
40 | 41 |
|
@@ -90,7 +91,7 @@ test('doesn\'t add extra escapes', t => { |
90 | 91 | const output = `${chalk.black.bgYellow(' RUNS ')} ${chalk.green('test')}`; |
91 | 92 | t.is(sliceAnsi(output, 0, 7), `${chalk.black.bgYellow(' RUNS ')} `); |
92 | 93 | t.is(sliceAnsi(output, 0, 8), `${chalk.black.bgYellow(' RUNS ')} `); |
93 | | - t.is(sliceAnsi('\u001B[31m' + output, 0, 4), `\u001B[31m${chalk.black.bgYellow(' RUN')}`); |
| 94 | + t.is(JSON.stringify(sliceAnsi('\u001B[31m' + output, 0, 4)), JSON.stringify(`\u001B[31m${chalk.black.bgYellow(' RUN')}`)); |
94 | 95 | }); |
95 | 96 |
|
96 | 97 | // See https://github.com/chalk/slice-ansi/issues/26 |
|
0 commit comments