e47f16c3093e5eb6e49940916fdebd2bd488b818
[platform/framework/web/crosswalk-tizen.git] /
1 //jshint node:true, eqnull:true
2 'use strict';
3
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');
10
11 // ==================
12 // whiteSpaceToIndent
13 // ==================
14
15 var ws1 = { type: 'WhiteSpace', value: '  ' };
16 indent.whiteSpaceToIndent(ws1);
17 assert.equal(ws1.type, 'Indent');
18 assert.equal(ws1.level, 1);
19
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);
24
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);
29
30 // =============
31 // alignComments
32 // =============
33
34 // yes, this will throw if it doesn't support empty nodes/ast
35 indent.alignComments({});
36
37 formatAndCompare('align_comment-input.js', 'align_comment-output.js', indent.alignComments);
38
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();
45
46   if (output !== expected) {
47     process.stderr.write(diff.createPatch(expectedFile, expected, output));
48     process.exit(1);
49   } else {
50     console.error('ok %s', inputFile);
51   }
52 }
53
54 function getFile(name) {
55   return fs.readFileSync(path.join(__dirname, name)).toString();
56 }