UNPKG

1.81 kBJavaScriptView Raw
1var assert = require('assert');
2var fs = require('fs');
3var path = require('path');
4var child_process = require('child_process');
5var continuation = require('../continuation');
6
7var 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 'try_sync.js',
24 'try_nested_function.js',
25 'list.js',
26 'defer.js',
27 'for.js',
28 'forin.js',
29 'try_if.js',
30 'parallel.js',
31 'parallel_exception.js',
32 'nested_block.js',
33 'multiple_parallel.js',
34];
35
36var compileByApi = function(filename, done) {
37 fs.readFile('test/cases/' + filename, 'utf-8', function (err, code) {
38 if (err) return done(err);
39 code = continuation.compile(code);
40 fs.readFile('test/results/' + filename, 'utf-8', function(err, result) {
41 if (err) return done(err);
42 assert.equal(code, result);
43 done();
44 });
45 });
46}
47
48var compileByCli = function(filename, done) {
49 var bin = 'bin/continuation'
50 var cmd = bin + ' test/cases/' + filename + ' -p'
51 child_process.exec(cmd, function (err, stdout, stderr) {
52 if (err) return done(err);
53 fs.readFile('test/results/' + filename, 'utf-8', function(err, result) {
54 if (err) done(err);
55 assert.equal(stdout, result + '\n');
56 done();
57 });
58 });
59}
60
61describe('Transformation', function () {
62 describe('Compile by api', function () {
63 files.forEach(function (filename) {
64 it(filename, function(done){
65 compileByApi(filename, done);
66 });
67 });
68 });
69 describe('Compile by command line', function () {
70 files.forEach(function (filename) {
71 it(filename, function(done){
72 compileByCli(filename, done);
73 });
74 });
75 });
76});