1 | const path = require('path');
|
2 | const assert = require('assert');
|
3 | const execFileSync = require('child_process').execFileSync;
|
4 | const mocha = require('mocha');
|
5 |
|
6 | const { describe, it } = mocha;
|
7 |
|
8 | const execCLI = input =>
|
9 | execFileSync(path.resolve(__dirname, '../../lib/cli.js'), {
|
10 | input,
|
11 | encoding: 'utf8',
|
12 | });
|
13 |
|
14 | describe('blocks', () => {
|
15 | it('function declaration 1', () => {
|
16 | const input = `
|
17 | function f(){a();b();}
|
18 | `;
|
19 | const output = `
|
20 | function f() {
|
21 | a();
|
22 | b();
|
23 | }
|
24 | `;
|
25 | assert.equal(execCLI(input), output);
|
26 | });
|
27 |
|
28 | it('function declaration 2', () => {
|
29 | const input = `
|
30 | function f(){/* comment */a();b();}
|
31 | `;
|
32 | const output = `
|
33 | function f() { /* comment */
|
34 | a();
|
35 | b();
|
36 | }
|
37 | `;
|
38 | assert.equal(execCLI(input), output);
|
39 | });
|
40 |
|
41 | it('program 1', () => {
|
42 | const input = `
|
43 | var x=1;var y=2;console.log(x+y);
|
44 | `;
|
45 | const output = `
|
46 | var x = 1;
|
47 | var y = 2;
|
48 | console.log(x + y);
|
49 | `;
|
50 | assert.equal(execCLI(input), output);
|
51 | });
|
52 | });
|
53 |
|
54 | describe('arrays', () => {
|
55 | it('variable declaration 1', () => {
|
56 | const input = `
|
57 | var x=[1,2,3,4,5];
|
58 | `;
|
59 | const output = `
|
60 | var x = [1, 2, 3, 4, 5];
|
61 | `;
|
62 | assert.equal(execCLI(input), output);
|
63 | });
|
64 | });
|
65 |
|
66 | describe('objects', () => {
|
67 | it('object declaration 1', () => {
|
68 | const input = `
|
69 | var x={a:1,b:2,c:3};
|
70 | `;
|
71 | const output = `
|
72 | var x = { a: 1, b: 2, c: 3 };
|
73 | `;
|
74 | assert.equal(execCLI(input), output);
|
75 | });
|
76 | });
|
77 |
|
78 | describe('objects in arrays', () => {
|
79 | it('object/array declaration 1', () => {
|
80 | const input = `
|
81 | var x=[{a:1},{b:2},{c:3}];
|
82 | `;
|
83 | const output = `
|
84 | var x = [{ a: 1 }, { b: 2 }, { c: 3 }];
|
85 | `;
|
86 | assert.equal(execCLI(input), output);
|
87 | });
|
88 |
|
89 | it('object/array declaration 2', () => {
|
90 | const input = `
|
91 | var x=[{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3},{a:1,b:2,c:3}];
|
92 | `;
|
93 | const output = `
|
94 | var x = [{
|
95 | a: 1,
|
96 | b: 2,
|
97 | c: 3,
|
98 | }, {
|
99 | a: 1,
|
100 | b: 2,
|
101 | c: 3,
|
102 | }, {
|
103 | a: 1,
|
104 | b: 2,
|
105 | c: 3,
|
106 | }, {
|
107 | a: 1,
|
108 | b: 2,
|
109 | c: 3,
|
110 | }, {
|
111 | a: 1,
|
112 | b: 2,
|
113 | c: 3,
|
114 | }];
|
115 | `;
|
116 | assert.equal(execCLI(input), output);
|
117 | });
|
118 | });
|
119 |
|
120 | describe('arrays in objects', () => {
|
121 | it('array/object declaration 1', () => {
|
122 | const input = `
|
123 | var x={a:[1,2,3],b:[1,2,3],c:[1,2,3],d:[1,2,3],e:[1,2,3]};
|
124 | `;
|
125 | const output = `
|
126 | var x = {
|
127 | a: [1, 2, 3],
|
128 | b: [1, 2, 3],
|
129 | c: [1, 2, 3],
|
130 | d: [1, 2, 3],
|
131 | e: [1, 2, 3],
|
132 | };
|
133 | `;
|
134 | assert.equal(execCLI(input), output);
|
135 | });
|
136 | });
|