motion
Version:
motion - moving development forward
106 lines (84 loc) • 2.38 kB
JavaScript
// Copyright 2014, 2015 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)
var fs = require("fs")
var assert = require("assert")
var lineNumbers = require("../")
var sumJS = [
"/**",
" * Sums two numbers.",
" *",
" * @param a Number",
" * @param b Number",
" * @returns Number",
" */",
"",
"function sum(a, b) {",
" return a + b",
"}"
]
var defaultOutput = [
" 1 | /**",
" 2 | * Sums two numbers.",
" 3 | *",
" 4 | * @param a Number",
" 5 | * @param b Number",
" 6 | * @returns Number",
" 7 | */",
" 8 | ",
" 9 | function sum(a, b) {",
" 10 | return a + b",
" 11 | }"
]
suite("lineNumbers", function() {
test("is a function", function() {
assert.equal(typeof lineNumbers, "function")
})
test("defaults", function() {
assert.equal(lineNumbers(sumJS.join("\n")), defaultOutput.join("\n"))
})
test("array of lines", function() {
assert.deepEqual(lineNumbers(sumJS), defaultOutput)
})
test("options", function() {
assert.equal(lineNumbers(sumJS.join("\n"), {
start: 5,
padding: "0",
before: " ",
after: ": ",
transform: function(params) {
if (params.number === 13) {
params.line = params.line + "\n" + params.before +
Array(params.width + 1).join(" ") + params.after +
Array(params.line.indexOf("(") + 1).join(" ") + "^"
params.before = params.before.replace(/^./, ">")
}
}
}), [
" 05: /**",
" 06: * Sums two numbers.",
" 07: *",
" 08: * @param a Number",
" 09: * @param b Number",
" 10: * @returns Number",
" 11: */",
" 12: ",
"> 13: function sum(a, b) {",
" : ^",
" 14: return a + b",
" 15: }"
].join("\n"))
})
test("Windows-style newlines", function() {
assert.equal(lineNumbers("a\r\nb"), " 1 | a\r\n 2 | b")
})
test("trailing newline", function() {
assert.equal(lineNumbers("single line\n"), " 1 | single line\n 2 | ")
})
test("no newline", function() {
assert.equal(lineNumbers("single line"), " 1 | single line")
})
test("one more digit", function() {
assert.equal(lineNumbers("a", {start: 9}), " 9 | a")
assert.equal(lineNumbers("a\nb", {start: 9}), " 9 | a\n 10 | b")
})
})