1 | var assert = require('assert');
|
2 | var fs = require('fs');
|
3 | var path = require('path');
|
4 | var child_process = require('child_process');
|
5 | var continuation = require('../continuation');
|
6 |
|
7 | var files = [
|
8 | 'readfile.js',
|
9 | 'fib.js',
|
10 | 'if.js',
|
11 | 'ifvar.js',
|
12 | 'loop.js',
|
13 | 'switch.js',
|
14 | 'switchbreak.js',
|
15 | 'whilebreak.js',
|
16 | 'continue.js',
|
17 | 'factor.js',
|
18 | 'pi.js',
|
19 | 'diskusage.js',
|
20 | 'try_body.js',
|
21 | 'try_catch.js',
|
22 | 'try_both.js',
|
23 | 'list.js',
|
24 | 'defer.js',
|
25 | 'for.js',
|
26 | 'forin.js',
|
27 | 'try_if.js',
|
28 | 'parallel.js',
|
29 | 'parallel_exception.js',
|
30 | ];
|
31 |
|
32 | var compileByApi = function(filename, done) {
|
33 | fs.readFile('test/cases/' + filename, 'utf-8', function (err, code) {
|
34 | if (err) return done(err);
|
35 | code = continuation.compile(code);
|
36 | fs.readFile('test/results/' + filename, 'utf-8', function(err, result) {
|
37 | if (err) return done(err);
|
38 | assert.equal(code, result);
|
39 | done();
|
40 | });
|
41 | });
|
42 | }
|
43 |
|
44 | var compileByCli = function(filename, done) {
|
45 | var bin = 'bin/continuation'
|
46 | var cmd = bin + ' test/cases/' + filename + ' -p'
|
47 | child_process.exec(cmd, function (err, stdout, stderr) {
|
48 | if (err) return done(err);
|
49 | fs.readFile('test/results/' + filename, 'utf-8', function(err, result) {
|
50 | if (err) done(err);
|
51 | assert.equal(stdout, result + '\n');
|
52 | done();
|
53 | });
|
54 | });
|
55 | }
|
56 |
|
57 | describe('Transformation', function () {
|
58 | describe('Compile by api', function () {
|
59 | files.forEach(function (filename) {
|
60 | it(filename, function(done){
|
61 | compileByApi(filename, done);
|
62 | });
|
63 | });
|
64 | });
|
65 | describe('Compile by command line', function () {
|
66 | files.forEach(function (filename) {
|
67 | it(filename, function(done){
|
68 | compileByCli(filename, done);
|
69 | });
|
70 | });
|
71 | });
|
72 | });
|