diff --git a/test/diff2html-tests.js b/test/diff2html-tests.js
index 49108b2..765df8a 100644
--- a/test/diff2html-tests.js
+++ b/test/diff2html-tests.js
@@ -2,6 +2,182 @@ var assert = require('assert');
var Diff2Html = require('../src/diff2html.js').Diff2Html;
+var diffExample1 =
+ 'diff --git a/sample b/sample\n' +
+ 'index 0000001..0ddf2ba\n' +
+ '--- a/sample\n' +
+ '+++ b/sample\n' +
+ '@@ -1 +1 @@\n' +
+ '-test\n' +
+ '+test1\n';
+
+var jsonExample1 =
+ [{
+ blocks: [{
+ lines: [{
+ content: '-test',
+ type: 'd2h-del',
+ oldNumber: 1,
+ newNumber: null
+ },
+ {
+ content: '+test1',
+ type: 'd2h-ins',
+ oldNumber: null,
+ newNumber: 1
+ }],
+ oldStartLine: '1',
+ oldStartLine2: null,
+ newStartLine: '1',
+ header: '@@ -1 +1 @@'
+ }],
+ deletedLines: 1,
+ addedLines: 1,
+ checksumBefore: '0000001',
+ checksumAfter: '0ddf2ba',
+ oldName: 'sample',
+ language: undefined,
+ newName: 'sample',
+ isCombined: false
+ }];
+
+var filesExample1 =
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ ' \n' +
+ ' | \n' +
+ ' +1\n' +
+ ' | \n' +
+ ' \n' +
+ ' -1\n' +
+ ' | \n' +
+ ' \n' +
+ ' sample \n' +
+ ' | \n' +
+ '
\n' +
+ '
\n';
+
+var htmlLineExample1 =
+ '\n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ '
\n' +
+ ' | \n' +
+ ' 1 \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
+ '
\n' +
+ ' | \n' +
+ ' \n' +
+ ' 1 \n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' +\n' +
+ ' test1\n' +
+ ' \n' +
+ ' | \n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
';
+
+var htmlLineExample1WithFilesSummary = filesExample1 + htmlLineExample1;
+
+var htmlSideExample1 =
+ '\n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' @@ -1 +1 @@ \n' +
+ ' | \n' +
+ '
\n' +
+ '\n' +
+ ' | 1 | \n' +
+ ' -test | \n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ '
\n' +
+ '\n' +
+ ' | 1 | \n' +
+ ' +test1 | \n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n';
+
+var htmlSideExample1WithFilesSummary = filesExample1 + htmlSideExample1;
+
describe('Diff2Html', function() {
describe('getJsonFromDiff', function() {
it('should parse simple diff to json', function() {
@@ -14,6 +190,8 @@ describe('Diff2Html', function() {
'-test\n' +
'+test1\n';
var result = Diff2Html.getJsonFromDiff(diff);
+
+ console.log(result);
var file1 = result[0];
assert.equal(1, result.length);
assert.equal(1, file1.addedLines);
@@ -71,5 +249,35 @@ describe('Diff2Html', function() {
assert.equal(null, result[0].blocks[0].lines[8].oldNumber);
assert.equal(56, result[0].blocks[0].lines[8].newNumber);
});
+
+ it('should generate pretty line by line html from diff', function() {
+ var result = Diff2Html.getPrettyHtmlFromDiff(diffExample1);
+ assert.equal(htmlLineExample1, result);
+ });
+
+ it('should generate pretty line by line html from json', function() {
+ var result = Diff2Html.getPrettyHtmlFromJson(jsonExample1);
+ assert.equal(htmlLineExample1, result);
+ });
+
+ it('should generate pretty diff with files summary', function() {
+ var result = Diff2Html.getPrettyHtmlFromDiff(diffExample1, {showFiles: true});
+ assert.equal(htmlLineExample1WithFilesSummary, result);
+ });
+
+ it('should generate pretty side by side html from diff', function() {
+ var result = Diff2Html.getPrettySideBySideHtmlFromDiff(diffExample1);
+ assert.equal(htmlSideExample1, result);
+ });
+
+ it('should generate pretty side by side html from json', function() {
+ var result = Diff2Html.getPrettySideBySideHtmlFromJson(jsonExample1);
+ assert.equal(htmlSideExample1, result);
+ });
+
+ it('should generate pretty side by side html from diff', function() {
+ var result = Diff2Html.getPrettySideBySideHtmlFromDiff(diffExample1, {showFiles: true});
+ assert.equal(htmlSideExample1WithFilesSummary, result);
+ });
});
});
diff --git a/test/side-by-side-printer-tests.js b/test/side-by-side-printer-tests.js
index d4b9837..c0d71cb 100644
--- a/test/side-by-side-printer-tests.js
+++ b/test/side-by-side-printer-tests.js
@@ -153,4 +153,98 @@ describe('SideBySidePrinter', function() {
assert.equal(expected, fileHtml);
});
});
+
+ describe('generateSideBySideJsonHtml', function() {
+ it('should work for list of files', function() {
+ var exampleJson = [{
+ blocks: [{
+ lines: [{
+ content: '-test',
+ type: 'd2h-del',
+ oldNumber: 1,
+ newNumber: null
+ },
+ {
+ content: '+test1r',
+ type: 'd2h-ins',
+ oldNumber: null,
+ newNumber: 1
+ }],
+ oldStartLine: '1',
+ oldStartLine2: null,
+ newStartLine: '1',
+ header: '@@ -1 +1 @@'
+ }],
+ deletedLines: 1,
+ addedLines: 1,
+ checksumBefore: '0000001',
+ checksumAfter: '0ddf2ba',
+ oldName: 'sample',
+ language: undefined,
+ newName: 'sample',
+ isCombined: false
+ }];
+
+ var sideBySidePrinter = new SideBySidePrinter({matching: 'lines'});
+ var html = sideBySidePrinter.generateSideBySideJsonHtml(exampleJson);
+ var expected =
+ '\n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' @@ -1 +1 @@ \n' +
+ ' | \n' +
+ '
\n' +
+ '\n' +
+ ' | 1 | \n' +
+ ' -test | \n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ '
\n' +
+ '\n' +
+ ' | 1 | \n' +
+ ' +test1r | \n' +
+ '
\n' +
+ ' \n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n' +
+ '
\n';
+
+ assert.equal(expected, html);
+ });
+ });
});