UNPKG

line-chomper

Version:

Chomps utf-8 based byte stream into lines.

107 lines (93 loc) 2.88 kB
var Stream = require("stream"); var libLineChomper = require("../lib/line-chomper"); describe("Random access using line offsets", function () { it("can chomp file from line offset to end", function (done) { libLineChomper.chomp(__dirname + "/files/small-nix.txt", { fromLine: 1 }, function (err, lines) { expect(lines.length).toEqual(3); expect(lines[0]).toEqual("line2"); expect(lines[2]).toEqual("line4"); done(); }); }); it("can chomp file from line offset to line offset", function (done) { libLineChomper.chomp(__dirname + "/files/small-nix.txt", { fromLine: 2, toLine: 3 }, function (err, lines) { expect(lines.length).toEqual(1); expect(lines[0]).toEqual(""); done(); }); }); it("can chomp file from line offset, respecting line count", function (done) { libLineChomper.chomp( __dirname + "/files/small-nix.txt", { fromLine: 0, lineCount: 1, toLine: 100 }, function (err, lines) { expect(lines.length).toEqual(1); expect(lines[0]).toEqual("line1"); done(); } ); }); it("can chomp arbitrary stream, respecting line offsets", function (done) { var stream = new Stream.Readable(); stream._read = function () {}; stream.push("line1\n"); stream.push("line2\n"); stream.push("line3\n"); libLineChomper.chomp(stream, { fromLine: 1, toLine: 5 }, function (err, lines) { expect(lines.length).toEqual(2); expect(lines[0]).toEqual("line2"); expect(lines[1]).toEqual("line3"); done(); }); stream.resume(); stream.push(null); }); it("can map line offsets", function (done) { libLineChomper.mapLineOffsets(__dirname + "/files/small-nix.txt", 10, function (err, lineOffsets) { expect(err).toBeNull(); expect(lineOffsets.length).toEqual(1); expect(lineOffsets[0].line).toEqual(2); expect(lineOffsets[0].offset).toEqual(12); done(); }); }); it("can call custom line callback while mapping line offsets", function (done) { libLineChomper.mapLineOffsets(__dirname + "/files/small-nix.txt", lineCallback, finalCallback); var counter = 0; function lineCallback(line, offset, sizeInBytes) { counter++; if (counter === 1) { expect(line).toEqual("line1"); expect(offset).toEqual(0); expect(sizeInBytes).toEqual(6); } return false; } function finalCallback(err, lineOffsets, count) { expect(err).toBeNull(); expect(lineOffsets.length).toEqual(0); expect(count).toEqual(4); expect(counter).toEqual(4); done(); } }); it("can use mapped line offsets", function (done) { var options = { lineOffsets: [ { line: 1, offset: 6 }, { line: 2, offset: 12 }, { line: 3, offset: 13 } ], fromLine: 3 }; libLineChomper.chomp(__dirname + "/files/small-nix.txt", options, function (err, lines) { expect(lines.length).toEqual(1); expect(lines[0]).toEqual("line4"); done(); }); }) });