UNPKG

1.72 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 'list.js',
24 'defer.js',
25 'for.js',
26 'forin.js',
27 'try_if.js',
28 'parallel.js',
29 'parallel_exception.js',
30];
31
32var 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
44var 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
57describe('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});