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 expression 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('program 1', () => {
|
29 | const input = `
|
30 | var x=1;var y=2;console.log(x+y);
|
31 | `;
|
32 | const output = `
|
33 | var x = 1;
|
34 | var y = 2;
|
35 | console.log(x + y);
|
36 | `;
|
37 | assert.equal(execCLI(input), output);
|
38 | });
|
39 | });
|
40 |
|
41 | describe('arrays', () => {
|
42 | it('variable declaration 1', () => {
|
43 | const input = `
|
44 | var x=[1,2,3,4,5];
|
45 | `;
|
46 | const output = `
|
47 | var x = [1, 2, 3, 4, 5];
|
48 | `;
|
49 | assert.equal(execCLI(input), output);
|
50 | });
|
51 | });
|
52 |
|
53 | describe('objects', () => {
|
54 | it('object declaration 1', () => {
|
55 | const input = `
|
56 | var x={a:1,b:2,c:3};
|
57 | `;
|
58 | const output = `
|
59 | var x = { a: 1, b: 2, c: 3 };
|
60 | `;
|
61 | assert.equal(execCLI(input), output);
|
62 | });
|
63 | });
|
64 |
|
65 | describe('objects in arrays', () => {
|
66 | it('object/array declaration 1', () => {
|
67 | const input = `
|
68 | var x=[{a:1},{b:2},{c:3}];
|
69 | `;
|
70 | const output = `
|
71 | var x = [{ a: 1 }, { b: 2 }, { c: 3 }];
|
72 | `;
|
73 | assert.equal(execCLI(input), output);
|
74 | });
|
75 |
|
76 | it('object/array declaration 2', () => {
|
77 | const input = `
|
78 | 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}];
|
79 | `;
|
80 | const output = `
|
81 | var x = [{
|
82 | a: 1,
|
83 | b: 2,
|
84 | c: 3,
|
85 | }, {
|
86 | a: 1,
|
87 | b: 2,
|
88 | c: 3,
|
89 | }, {
|
90 | a: 1,
|
91 | b: 2,
|
92 | c: 3,
|
93 | }, {
|
94 | a: 1,
|
95 | b: 2,
|
96 | c: 3,
|
97 | }, {
|
98 | a: 1,
|
99 | b: 2,
|
100 | c: 3,
|
101 | }];
|
102 | `;
|
103 | assert.equal(execCLI(input), output);
|
104 | });
|
105 | });
|
106 |
|
107 | describe('arrays in objects', () => {
|
108 | it('array/object declaration 1', () => {
|
109 | const input = `
|
110 | var x={a:[1,2,3],b:[1,2,3],c:[1,2,3],d:[1,2,3],e:[1,2,3]};
|
111 | `;
|
112 | const output = `
|
113 | var x = {
|
114 | a: [1, 2, 3],
|
115 | b: [1, 2, 3],
|
116 | c: [1, 2, 3],
|
117 | d: [1, 2, 3],
|
118 | e: [1, 2, 3],
|
119 | };
|
120 | `;
|
121 | assert.equal(execCLI(input), output);
|
122 | });
|
123 | });
|