1 //jshint node:true, eqnull:true
4 var assert = require('assert');
5 var diff = require('diff');
6 var fs = require('fs');
7 var indent = require('../rocambole-indent');
8 var path = require('path');
9 var rocambole = require('rocambole');
15 var ws1 = { type: 'WhiteSpace', value: ' ' };
16 indent.whiteSpaceToIndent(ws1);
17 assert.equal(ws1.type, 'Indent');
18 assert.equal(ws1.level, 1);
20 var ws2 = { type: 'WhiteSpace', value: ' ', prev: { type: 'LineBreak' } };
21 indent.whiteSpaceToIndent(ws2, ' ');
22 assert.equal(ws2.type, 'Indent');
23 assert.equal(ws2.level, 1);
25 var ws3 = { type: 'WhiteSpace', value: ' ', prev: { type: 'Punctuator' } };
26 indent.whiteSpaceToIndent(ws3, ' ');
27 assert.equal(ws3.type, 'WhiteSpace');
28 assert.equal(ws3.level, undefined);
34 // yes, this will throw if it doesn't support empty nodes/ast
35 indent.alignComments({});
37 formatAndCompare('align_comment-input.js', 'align_comment-output.js', indent.alignComments);
39 function formatAndCompare(inputFile, expectedFile, method) {
40 var input = getFile(inputFile);
41 var expected = getFile(expectedFile);
42 var ast = rocambole.parse(input);
43 method.call(indent, ast);
44 var output = ast.toString();
46 if (output !== expected) {
47 process.stderr.write(diff.createPatch(expectedFile, expected, output));
50 console.error('ok %s', inputFile);
54 function getFile(name) {
55 return fs.readFileSync(path.join(__dirname, name)).toString();