react 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +5 -2
- package/README.md +16 -2
- package/browser-test/dist.html +1 -1
- package/browser-test/index.html +3 -3
- package/browser-test/min.html +1 -1
- package/dist/react.js +407 -557
- package/dist/react.min.js +22 -1
- package/doc/advanced.md +9 -1
- package/lib/base-task.js +16 -19
- package/lib/cb-task.js +5 -5
- package/lib/core.js +7 -7
- package/lib/dsl.js +29 -29
- package/lib/error.js +4 -4
- package/lib/event-collector.js +6 -6
- package/lib/event-manager.js +13 -6
- package/lib/eventemitter.js +3 -3
- package/lib/finalcb-first-task.js +4 -4
- package/lib/finalcb-task.js +4 -4
- package/lib/id.js +3 -3
- package/lib/input-parser.js +10 -10
- package/lib/log-events.js +23 -14
- package/lib/parse.js +3 -3
- package/lib/promise-resolve.js +4 -4
- package/lib/promise-task.js +4 -4
- package/lib/react.js +7 -7
- package/lib/ret-task.js +4 -4
- package/lib/sprintf.js +8 -8
- package/lib/status.js +3 -3
- package/lib/task.js +44 -47
- package/lib/track-tasks.js +4 -4
- package/lib/validate.js +8 -8
- package/lib/vcon.js +31 -8
- package/lib/when-task.js +7 -8
- package/package.json +7 -8
- package/test/ast.mocha.js +4 -4
- package/test/cb-task.mocha.js +17 -17
- package/test/core-deferred.mocha.js +8 -8
- package/test/core-when.mocha.js +7 -7
- package/test/core.mocha.js +52 -52
- package/test/dsl.mocha.js +45 -43
- package/test/event-manager.mocha.js +2 -2
- package/test/exec-options.mocha.js +4 -4
- package/test/finalcb-task.mocha.js +6 -6
- package/test/input-parser.mocha.js +1 -1
- package/test/log-events.mocha.js +88 -0
- package/test/module-use.mocha.js +24 -7
- package/test/promise-auto-resolve.mocha.js +4 -4
- package/test/ret-task.mocha.js +18 -18
- package/test/task.mocha.js +3 -3
- package/test/validate-cb-task.mocha.js +11 -11
- package/test/validate-ret-task.mocha.js +14 -14
- package/test/validate.mocha.js +57 -57
- package/test/vcon.mocha.js +13 -13
- package/vendor/chai/chai.js +3371 -1158
- package/vendor/requirejs/require.js +1447 -1455
- package/vendor/requirejs/require.min.js +31 -28
- package/vendor/mocha/mocha.css +0 -135
- package/vendor/mocha/mocha.js +0 -3589
package/test/cb-task.mocha.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true CbTask:true VContext:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -18,6 +17,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
(function () {
|
|
20
|
+
'use strict';
|
|
21
21
|
|
|
22
22
|
var t = chai.assert;
|
|
23
23
|
|
|
@@ -66,7 +66,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
66
66
|
t.equal(task.isReady(vCon, tasksByName), false);
|
|
67
67
|
task.status = null;
|
|
68
68
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
69
|
-
done();
|
|
69
|
+
done();
|
|
70
70
|
});
|
|
71
71
|
|
|
72
72
|
test('no args defined, no after -> not ready', function (done) {
|
|
@@ -82,39 +82,39 @@ if (typeof(VContext) === 'undefined') {
|
|
|
82
82
|
var vCon = VContext.create([1, {}], ['b', 'c']);
|
|
83
83
|
var tasksByName = { foo: task };
|
|
84
84
|
t.equal(task.isReady(vCon, tasksByName), false);
|
|
85
|
-
done();
|
|
85
|
+
done();
|
|
86
86
|
});
|
|
87
87
|
|
|
88
88
|
test('all args defined, no after, out no obj parent -> NOT ready', function (done) {
|
|
89
89
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['d.e'] });
|
|
90
90
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
91
91
|
var tasksByName = { foo: task };
|
|
92
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
93
|
-
done();
|
|
92
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
93
|
+
done();
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
test('all args defined, no after, out no obj.par.par -> NOT ready', function (done) {
|
|
97
97
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
|
|
98
98
|
var vCon = VContext.create([1, { }], ['b', 'c']);
|
|
99
99
|
var tasksByName = { foo: task };
|
|
100
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
101
|
-
done();
|
|
100
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent undef');
|
|
101
|
+
done();
|
|
102
102
|
});
|
|
103
103
|
|
|
104
104
|
test('all args defined, no after, out null obj parent -> NOT ready', function (done) {
|
|
105
105
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e'] });
|
|
106
106
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
107
107
|
var tasksByName = { foo: task };
|
|
108
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
109
|
-
done();
|
|
108
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
109
|
+
done();
|
|
110
110
|
});
|
|
111
111
|
|
|
112
112
|
test('all args defined, no after, out null obj.par.par -> NOT ready', function (done) {
|
|
113
113
|
var task = new CbTask({ type: 'cb', f: foo, a: ['b', 'c'], out: ['c.e.f'] });
|
|
114
114
|
var vCon = VContext.create([1, { e: null }], ['b', 'c']);
|
|
115
115
|
var tasksByName = { foo: task };
|
|
116
|
-
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
117
|
-
done();
|
|
116
|
+
t.equal(task.isReady(vCon, tasksByName), false, 'false if out objparent null');
|
|
117
|
+
done();
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
test('all args defined, no after -> ready', function (done) {
|
|
@@ -122,7 +122,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
122
122
|
var vCon = VContext.create([1, null], ['b', 'c']);
|
|
123
123
|
var tasksByName = { foo: task };
|
|
124
124
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
125
|
-
done();
|
|
125
|
+
done();
|
|
126
126
|
});
|
|
127
127
|
|
|
128
128
|
test('all args defined, objprop null, no after -> ready', function (done) {
|
|
@@ -130,7 +130,7 @@ if (typeof(VContext) === 'undefined') {
|
|
|
130
130
|
var vCon = VContext.create([1, { prop: null }], ['b', 'c']);
|
|
131
131
|
var tasksByName = { foo: task };
|
|
132
132
|
t.equal(task.isReady(vCon, tasksByName), true);
|
|
133
|
-
done();
|
|
133
|
+
done();
|
|
134
134
|
});
|
|
135
135
|
|
|
136
136
|
test('all args defined, after not complete -> NOT ready', function (done) {
|
|
@@ -140,8 +140,8 @@ if (typeof(VContext) === 'undefined') {
|
|
|
140
140
|
{ type: 'cb', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
|
|
141
141
|
var vCon = VContext.create([1, 2], ['b', 'c']);
|
|
142
142
|
var tasksByName = { foo: task, bar: tbar, cat: tcat };
|
|
143
|
-
t.equal(task.isReady(vCon, tasksByName), false);
|
|
144
|
-
done();
|
|
143
|
+
t.equal(task.isReady(vCon, tasksByName), false);
|
|
144
|
+
done();
|
|
145
145
|
});
|
|
146
146
|
|
|
147
147
|
test('all args defined, after all complete -> ready', function (done) {
|
|
@@ -151,8 +151,8 @@ if (typeof(VContext) === 'undefined') {
|
|
|
151
151
|
{ type: 'cb', f: foo, a: ['b', 'c'], out: [], after: ['cat', 'bar']});
|
|
152
152
|
var vCon = VContext.create([1, 2], ['b', 'c']);
|
|
153
153
|
var tasksByName = { foo: task, bar: tbar, cat: tcat };
|
|
154
|
-
t.equal(task.isReady(vCon, tasksByName), true);
|
|
155
|
-
done();
|
|
154
|
+
t.equal(task.isReady(vCon, tasksByName), true);
|
|
155
|
+
done();
|
|
156
156
|
});
|
|
157
157
|
|
|
158
158
|
test('string without . is not method call', function (done) {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true Deferred:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -14,6 +13,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
(function () {
|
|
16
|
+
'use strict';
|
|
17
17
|
|
|
18
18
|
var t = chai.assert;
|
|
19
19
|
|
|
@@ -55,7 +55,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
55
55
|
var fn = react();
|
|
56
56
|
var errors = fn.setAndValidateAST({
|
|
57
57
|
inParams: ['a', 'b'],
|
|
58
|
-
tasks: [
|
|
58
|
+
tasks: [
|
|
59
59
|
{ f: multiply, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
60
60
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
61
61
|
],
|
|
@@ -69,7 +69,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
69
69
|
t.equal(d, 9);
|
|
70
70
|
done();
|
|
71
71
|
});
|
|
72
|
-
});
|
|
72
|
+
});
|
|
73
73
|
|
|
74
74
|
test('using "this" in a cb function', function (done) {
|
|
75
75
|
function getA(cb) {
|
|
@@ -81,11 +81,11 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
81
81
|
}, 10);
|
|
82
82
|
return deferred.promise();
|
|
83
83
|
}
|
|
84
|
-
|
|
84
|
+
|
|
85
85
|
var fn = react();
|
|
86
86
|
var errors = fn.setAndValidateAST({
|
|
87
87
|
inParams: [],
|
|
88
|
-
tasks: [
|
|
88
|
+
tasks: [
|
|
89
89
|
{ f: getA, a: [], out: ['a'], type: 'promise' }
|
|
90
90
|
],
|
|
91
91
|
outTask: { a: ['a'] }
|
|
@@ -108,7 +108,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
108
108
|
var fn = react();
|
|
109
109
|
var errors = fn.setAndValidateAST({
|
|
110
110
|
inParams: ['a', 'b'],
|
|
111
|
-
tasks: [
|
|
111
|
+
tasks: [
|
|
112
112
|
{ f: badFunc, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
113
113
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
114
114
|
],
|
|
@@ -126,7 +126,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
126
126
|
var fn = react();
|
|
127
127
|
var errors = fn.setAndValidateAST({
|
|
128
128
|
inParams: ['a', 'b'],
|
|
129
|
-
tasks: [
|
|
129
|
+
tasks: [
|
|
130
130
|
{ f: badF2, a: ['a', 'b'], out: ['c'], type: 'promise' },
|
|
131
131
|
{ f: add, a: ['c', 'b'], out: ['d'], type: 'promise' }
|
|
132
132
|
],
|
|
@@ -140,4 +140,4 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
140
140
|
});
|
|
141
141
|
});
|
|
142
142
|
|
|
143
|
-
}());
|
|
143
|
+
}());
|
package/test/core-when.mocha.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true Deferred:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -14,6 +13,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
(function () {
|
|
16
|
+
'use strict';
|
|
17
17
|
|
|
18
18
|
var t = chai.assert;
|
|
19
19
|
|
|
@@ -51,7 +51,7 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
51
51
|
var fn = react();
|
|
52
52
|
var errors = fn.setAndValidateAST({
|
|
53
53
|
inParams: ['pm', 'pa'],
|
|
54
|
-
tasks: [
|
|
54
|
+
tasks: [
|
|
55
55
|
{ a: ['pm'], out: ['m'], type: 'when' },
|
|
56
56
|
{ a: ['pa'], out: ['a'], type: 'when' }
|
|
57
57
|
],
|
|
@@ -61,21 +61,21 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
61
61
|
|
|
62
62
|
var pm = multiply(2, 3);
|
|
63
63
|
var pa = add(4, 5);
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
fn(pm, pa, function (err, m, a) {
|
|
66
66
|
t.equal(err, null);
|
|
67
67
|
t.equal(m, 6);
|
|
68
68
|
t.equal(a, 9);
|
|
69
69
|
done();
|
|
70
70
|
});
|
|
71
|
-
});
|
|
71
|
+
});
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
test('rejects with error', function (done) {
|
|
75
75
|
var fn = react();
|
|
76
76
|
var errors = fn.setAndValidateAST({
|
|
77
77
|
inParams: ['pm', 'pa'],
|
|
78
|
-
tasks: [
|
|
78
|
+
tasks: [
|
|
79
79
|
{ a: ['pm'], out: ['m'], type: 'when' },
|
|
80
80
|
{ a: ['pa'], out: ['a'], type: 'when' }
|
|
81
81
|
],
|
|
@@ -86,11 +86,11 @@ if (typeof(Deferred) === 'undefined') {
|
|
|
86
86
|
var pm = badF2(2, 3);
|
|
87
87
|
var pa = add(4, 5);
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
fn(pm, pa, function (err, m, a) {
|
|
91
91
|
t.equal(err.message, 'my-error');
|
|
92
92
|
done();
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
95
|
|
|
96
|
-
}());
|
|
96
|
+
}());
|
package/test/core.mocha.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
/*global react:true */
|
|
3
2
|
|
|
4
3
|
if (typeof(chai) === 'undefined') {
|
|
@@ -10,6 +9,7 @@ if (typeof(react) === 'undefined') {
|
|
|
10
9
|
}
|
|
11
10
|
|
|
12
11
|
(function () {
|
|
12
|
+
'use strict';
|
|
13
13
|
|
|
14
14
|
var t = chai.assert;
|
|
15
15
|
|
|
@@ -68,7 +68,7 @@ if (typeof(react) === 'undefined') {
|
|
|
68
68
|
{ f: multiply, a: ['a', 'b'], out: ['c'], type: 'cb', name: 'multiply_0' },
|
|
69
69
|
{ f: multiply, a: ['a', 'b'], out: ['d'], name: 'multiply', type: 'cb' },
|
|
70
70
|
{ f: multiply, a: ['a', 'b'], out: ['e'], name: 'times', type: 'cb' },
|
|
71
|
-
{ f: anonFn, a: ['a', 'b'], out: ['g'], type: 'ret', name: 'task_3' },
|
|
71
|
+
{ f: anonFn, a: ['a', 'b'], out: ['g'], type: 'ret', name: 'task_3' },
|
|
72
72
|
{ f: multiply, a: ['a', 'b'], out: ['f'], type: 'cb', name: 'multiply_4' }
|
|
73
73
|
]);
|
|
74
74
|
done();
|
|
@@ -96,7 +96,7 @@ if (typeof(react) === 'undefined') {
|
|
|
96
96
|
var fn = react();
|
|
97
97
|
var errors = fn.setAndValidateAST({
|
|
98
98
|
inParams: ['a', 'b'],
|
|
99
|
-
tasks: [
|
|
99
|
+
tasks: [
|
|
100
100
|
{ f: multiply, a: ['a', 'b'], out: ['c'] },
|
|
101
101
|
{ f: add, a: ['c', 'b'], out: ['d'] }
|
|
102
102
|
],
|
|
@@ -110,13 +110,13 @@ if (typeof(react) === 'undefined') {
|
|
|
110
110
|
t.equal(d, 9);
|
|
111
111
|
done();
|
|
112
112
|
});
|
|
113
|
-
});
|
|
113
|
+
});
|
|
114
114
|
|
|
115
115
|
test('multi-step with after as nonarr fn', function (done) {
|
|
116
116
|
var fn = react();
|
|
117
117
|
var errors = fn.setAndValidateAST({
|
|
118
118
|
inParams: ['a', 'b'],
|
|
119
|
-
tasks: [
|
|
119
|
+
tasks: [
|
|
120
120
|
{ f: multiply, a: ['a', 'b'], out: ['c'], after: add },
|
|
121
121
|
{ f: add, a: ['a', 'b'], out: ['d'] }
|
|
122
122
|
],
|
|
@@ -126,7 +126,7 @@ if (typeof(react) === 'undefined') {
|
|
|
126
126
|
|
|
127
127
|
var collector = react.createEventCollector();
|
|
128
128
|
collector.capture(fn, 'task.complete');
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
fn(2, 3, function (err, c, d) {
|
|
131
131
|
t.equal(err, null);
|
|
132
132
|
t.equal(c, 6);
|
|
@@ -137,13 +137,13 @@ if (typeof(react) === 'undefined') {
|
|
|
137
137
|
t.equal(events[1].task.name, 'multiply', 'name matches');
|
|
138
138
|
done();
|
|
139
139
|
});
|
|
140
|
-
});
|
|
140
|
+
});
|
|
141
141
|
|
|
142
142
|
test('mixed multi-step with after as nonarr fn w/events', function (done) {
|
|
143
143
|
var fn = react();
|
|
144
144
|
var errors = fn.setAndValidateAST({
|
|
145
145
|
inParams: ['a', 'b'],
|
|
146
|
-
tasks: [
|
|
146
|
+
tasks: [
|
|
147
147
|
{ f: multiply, a: ['a', 'b'], out: ['c'], after: fnRetsSum },
|
|
148
148
|
{ f: fnRetsSum, a: ['a', 'b'], out: ['d'], type: 'ret' }
|
|
149
149
|
],
|
|
@@ -153,7 +153,7 @@ if (typeof(react) === 'undefined') {
|
|
|
153
153
|
|
|
154
154
|
var collector = react.createEventCollector();
|
|
155
155
|
collector.capture(fn, 'task.complete');
|
|
156
|
-
|
|
156
|
+
|
|
157
157
|
fn(2, 3, function (err, c, d) {
|
|
158
158
|
t.equal(err, null);
|
|
159
159
|
t.equal(c, 6);
|
|
@@ -164,19 +164,19 @@ if (typeof(react) === 'undefined') {
|
|
|
164
164
|
t.isNotNull(events[0].task.id, 'has unique id');
|
|
165
165
|
t.isNotNull(events[0].task.startTime, 'has startTime');
|
|
166
166
|
t.isNotNull(events[0].task.endTime, 'has endTime');
|
|
167
|
-
t.isNotNull(events[0].task.elapsedTime !== undefined, 'has elapsedTime');
|
|
167
|
+
t.isNotNull(events[0].task.elapsedTime !== undefined, 'has elapsedTime');
|
|
168
168
|
t.isNotNull(events[0].task.args, 'has args');
|
|
169
169
|
t.isNotNull(events[0].task.results, 'has results');
|
|
170
170
|
t.equal(events[1].task.name, 'multiply', 'name matches');
|
|
171
171
|
t.isNotNull(events[1].task.id, 'has unique id');
|
|
172
172
|
t.isNotNull(events[1].task.startTime, 'has startTime');
|
|
173
173
|
t.isNotNull(events[1].task.endTime, 'has endTime');
|
|
174
|
-
t.isNotNull(events[1].task.elapsedTime !== undefined, 'has elapsedTime');
|
|
174
|
+
t.isNotNull(events[1].task.elapsedTime !== undefined, 'has elapsedTime');
|
|
175
175
|
t.isNotNull(events[1].task.args, 'has args');
|
|
176
176
|
t.isNotNull(events[1].task.results, 'has results');
|
|
177
177
|
done();
|
|
178
178
|
});
|
|
179
|
-
});
|
|
179
|
+
});
|
|
180
180
|
|
|
181
181
|
|
|
182
182
|
|
|
@@ -185,7 +185,7 @@ if (typeof(react) === 'undefined') {
|
|
|
185
185
|
var fn = react();
|
|
186
186
|
var errors = fn.setAndValidateAST({
|
|
187
187
|
inParams: ['a', 'b', 'c'],
|
|
188
|
-
tasks: [
|
|
188
|
+
tasks: [
|
|
189
189
|
{ f: multiply, a: ['a', 'b'], out: ['c.mult'] },
|
|
190
190
|
{ f: fnRetsSum, a: ['c.mult', 'b'], out: ['c.sum'], type: 'ret' }
|
|
191
191
|
],
|
|
@@ -200,13 +200,13 @@ if (typeof(react) === 'undefined') {
|
|
|
200
200
|
t.deepEqual(c, { foo: 1, mult: 6, sum: 9});
|
|
201
201
|
done();
|
|
202
202
|
});
|
|
203
|
-
});
|
|
203
|
+
});
|
|
204
204
|
|
|
205
205
|
test('error when cant complete', function (done) {
|
|
206
206
|
var fn = react();
|
|
207
207
|
var errors = fn.setAndValidateAST({
|
|
208
208
|
inParams: ['a', 'b', 'c'],
|
|
209
|
-
tasks: [
|
|
209
|
+
tasks: [
|
|
210
210
|
{ f: multiply, a: ['a', 'b'], out: ['c.mult'] },
|
|
211
211
|
{ f: fnRetsSum, a: ['c.bad', 'b'], out: ['c.sum'], type: 'ret' },
|
|
212
212
|
{ f: add, a: ['c.sum', 'a'], out: ['d']}
|
|
@@ -225,11 +225,11 @@ if (typeof(react) === 'undefined') {
|
|
|
225
225
|
test('objects', function (done) {
|
|
226
226
|
function retObj(a, b, cb) { cb(null, { bar: a + b }); }
|
|
227
227
|
function concat(a, b, cb) { cb(null, { result: a + b }); }
|
|
228
|
-
|
|
228
|
+
|
|
229
229
|
var fn = react();
|
|
230
230
|
var errors = fn.setAndValidateAST({
|
|
231
231
|
inParams: ['a', 'b'],
|
|
232
|
-
tasks: [
|
|
232
|
+
tasks: [
|
|
233
233
|
{ f: retObj, a: ['a.foo', 'b'], out: ['c'] },
|
|
234
234
|
{ f: concat, a: ['c.bar', 'b'], out: ['d'] }
|
|
235
235
|
],
|
|
@@ -243,18 +243,18 @@ if (typeof(react) === 'undefined') {
|
|
|
243
243
|
t.equal(dresult, 'FOOBB');
|
|
244
244
|
done();
|
|
245
245
|
});
|
|
246
|
-
});
|
|
246
|
+
});
|
|
247
247
|
|
|
248
248
|
test('objects from container', function (done) {
|
|
249
249
|
var C = {
|
|
250
250
|
retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
|
|
251
251
|
concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
|
|
252
252
|
};
|
|
253
|
-
|
|
253
|
+
|
|
254
254
|
var fn = react();
|
|
255
255
|
var errors = fn.setAndValidateAST({
|
|
256
256
|
inParams: ['a', 'b'],
|
|
257
|
-
tasks: [
|
|
257
|
+
tasks: [
|
|
258
258
|
{ f: C.retObj, a: ['a.foo', 'b'], out: ['c'] },
|
|
259
259
|
{ f: C.concat, a: ['c.bar', 'b'], out: ['d'] }
|
|
260
260
|
],
|
|
@@ -268,43 +268,43 @@ if (typeof(react) === 'undefined') {
|
|
|
268
268
|
t.equal(dresult, 'FOOBB');
|
|
269
269
|
done();
|
|
270
270
|
});
|
|
271
|
-
});
|
|
271
|
+
});
|
|
272
272
|
|
|
273
273
|
test('objects from container input arg', function (done) {
|
|
274
274
|
var CONT = {
|
|
275
275
|
retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
|
|
276
276
|
concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
|
|
277
277
|
};
|
|
278
|
-
|
|
278
|
+
|
|
279
279
|
var fn = react();
|
|
280
280
|
var errors = fn.setAndValidateAST({
|
|
281
281
|
inParams: ['a', 'b', 'CONT'],
|
|
282
|
-
tasks: [
|
|
282
|
+
tasks: [
|
|
283
283
|
{ f: 'CONT.retObj', a: ['a.foo', 'b'], out: ['c'] },
|
|
284
284
|
{ f: 'CONT.concat', a: ['c.bar', 'b'], out: ['d'] }
|
|
285
285
|
],
|
|
286
286
|
outTask: { a: ['c', 'd.result'] }
|
|
287
287
|
});
|
|
288
288
|
t.deepEqual(errors, [], 'no validation errors');
|
|
289
|
-
|
|
289
|
+
|
|
290
290
|
fn({ foo: 'FOO' }, 'B', CONT, function (err, c, dresult) {
|
|
291
291
|
t.equal(err, null);
|
|
292
292
|
t.deepEqual(c, { bar: 'FOOB' });
|
|
293
293
|
t.equal(dresult, 'FOOBB');
|
|
294
294
|
done();
|
|
295
295
|
});
|
|
296
|
-
});
|
|
296
|
+
});
|
|
297
297
|
|
|
298
298
|
test('use locals for functions', function (done) {
|
|
299
299
|
var locals = {
|
|
300
300
|
retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
|
|
301
301
|
concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
|
|
302
302
|
};
|
|
303
|
-
|
|
303
|
+
|
|
304
304
|
var fn = react();
|
|
305
305
|
var errors = fn.setAndValidateAST({
|
|
306
306
|
inParams: ['a', 'b'],
|
|
307
|
-
tasks: [
|
|
307
|
+
tasks: [
|
|
308
308
|
{ f: 'retObj', a: ['a.foo', 'b'], out: ['c'] },
|
|
309
309
|
{ f: 'concat', a: ['c.bar', 'b'], out: ['d'] }
|
|
310
310
|
],
|
|
@@ -319,18 +319,18 @@ if (typeof(react) === 'undefined') {
|
|
|
319
319
|
t.equal(dresult, 'FOOBB');
|
|
320
320
|
done();
|
|
321
321
|
});
|
|
322
|
-
});
|
|
322
|
+
});
|
|
323
323
|
|
|
324
324
|
test('objects from locals', function (done) {
|
|
325
325
|
var CONT = {
|
|
326
326
|
retObj: function retObj(a, b, cb) { cb(null, { bar: a + b }); },
|
|
327
327
|
concat: function concat(a, b, cb) { cb(null, { result: a + b }); }
|
|
328
328
|
};
|
|
329
|
-
|
|
329
|
+
|
|
330
330
|
var fn = react();
|
|
331
331
|
var errors = fn.setAndValidateAST({
|
|
332
332
|
inParams: ['a', 'b'],
|
|
333
|
-
tasks: [
|
|
333
|
+
tasks: [
|
|
334
334
|
{ f: 'CONT.retObj', a: ['a.foo', 'b'], out: ['c'] },
|
|
335
335
|
{ f: 'CONT.concat', a: ['c.bar', 'b'], out: ['d'] }
|
|
336
336
|
],
|
|
@@ -345,13 +345,13 @@ if (typeof(react) === 'undefined') {
|
|
|
345
345
|
t.equal(dresult, 'FOOBB');
|
|
346
346
|
done();
|
|
347
347
|
});
|
|
348
|
-
});
|
|
349
|
-
|
|
348
|
+
});
|
|
349
|
+
|
|
350
350
|
test('multi-step func throws, cb with error', function (done) {
|
|
351
351
|
var fn = react();
|
|
352
352
|
var errors = fn.setAndValidateAST({
|
|
353
353
|
inParams: ['a', 'b'],
|
|
354
|
-
tasks: [
|
|
354
|
+
tasks: [
|
|
355
355
|
{ f: multiply, a: ['a', 'b'], out: ['c'] },
|
|
356
356
|
{ f: badFunc, a: ['c', 'b'], out: ['d'] }
|
|
357
357
|
],
|
|
@@ -363,14 +363,14 @@ if (typeof(react) === 'undefined') {
|
|
|
363
363
|
t.equal(err.message, 'badFuncThrow');
|
|
364
364
|
done();
|
|
365
365
|
});
|
|
366
|
-
});
|
|
367
|
-
|
|
366
|
+
});
|
|
367
|
+
|
|
368
368
|
test('multi-step func cb err, cb with error', function (done) {
|
|
369
|
-
|
|
369
|
+
|
|
370
370
|
var fn = react();
|
|
371
371
|
var errors = fn.setAndValidateAST({
|
|
372
372
|
inParams: ['a', 'b'],
|
|
373
|
-
tasks: [
|
|
373
|
+
tasks: [
|
|
374
374
|
{ f: multiply, a: ['a', 'b'], out: ['c'] },
|
|
375
375
|
{ f: badF2, a: ['c', 'b'], out: ['d'] },
|
|
376
376
|
{ f: add, a: ['d', 'b'], out: ['e'] }
|
|
@@ -383,19 +383,19 @@ if (typeof(react) === 'undefined') {
|
|
|
383
383
|
t.equal(err.message, 'my-error');
|
|
384
384
|
done();
|
|
385
385
|
});
|
|
386
|
-
});
|
|
386
|
+
});
|
|
387
387
|
|
|
388
388
|
test('using "this" in a cb function', function (done) {
|
|
389
|
-
|
|
389
|
+
|
|
390
390
|
function getA(cb) {
|
|
391
391
|
/*jshint validthis: true */
|
|
392
392
|
cb(null, this.a);
|
|
393
393
|
}
|
|
394
|
-
|
|
394
|
+
|
|
395
395
|
var fn = react();
|
|
396
396
|
var errors = fn.setAndValidateAST({
|
|
397
397
|
inParams: [],
|
|
398
|
-
tasks: [
|
|
398
|
+
tasks: [
|
|
399
399
|
{ f: getA, a: [], out: ['a'] }
|
|
400
400
|
],
|
|
401
401
|
outTask: { a: ['a'] }
|
|
@@ -418,11 +418,11 @@ if (typeof(react) === 'undefined') {
|
|
|
418
418
|
/*jshint validthis: true */
|
|
419
419
|
return this.a;
|
|
420
420
|
}
|
|
421
|
-
|
|
421
|
+
|
|
422
422
|
var fn = react();
|
|
423
423
|
var errors = fn.setAndValidateAST({
|
|
424
424
|
inParams: [],
|
|
425
|
-
tasks: [
|
|
425
|
+
tasks: [
|
|
426
426
|
{ f: getA, a: [], out: ['a'], type: 'ret' }
|
|
427
427
|
],
|
|
428
428
|
outTask: { a: ['a'] }
|
|
@@ -443,7 +443,7 @@ if (typeof(react) === 'undefined') {
|
|
|
443
443
|
test('undefined input arguments will be upgraded from undefined to null', function (done) {
|
|
444
444
|
var fn = react();
|
|
445
445
|
function concat(a, b) {
|
|
446
|
-
return '' + a + b;
|
|
446
|
+
return '' + a + b;
|
|
447
447
|
}
|
|
448
448
|
var errors = fn.setAndValidateAST({
|
|
449
449
|
inParams: ['a', 'b'],
|
|
@@ -469,7 +469,7 @@ if (typeof(react) === 'undefined') {
|
|
|
469
469
|
var fn = react();
|
|
470
470
|
var errors = fn.setAndValidateAST({
|
|
471
471
|
inParams: ['a', 'b'],
|
|
472
|
-
tasks: [
|
|
472
|
+
tasks: [
|
|
473
473
|
{ f: multiply, a: ['a', 'b'], out: ['c'] },
|
|
474
474
|
{ f: add, a: ['a', 'b'], out: ['c'], after: ['multiply'] }
|
|
475
475
|
],
|
|
@@ -489,7 +489,7 @@ if (typeof(react) === 'undefined') {
|
|
|
489
489
|
t.deepEqual(events[0].task.results, [6], 'results match');
|
|
490
490
|
done();
|
|
491
491
|
});
|
|
492
|
-
});
|
|
492
|
+
});
|
|
493
493
|
|
|
494
494
|
test('selectFirst with third succeeding', function (done) {
|
|
495
495
|
function noSuccess(a, b, cb) { cb(null); } // returns undefined result
|
|
@@ -497,7 +497,7 @@ if (typeof(react) === 'undefined') {
|
|
|
497
497
|
var fn = react();
|
|
498
498
|
var errors = fn.setAndValidateAST({
|
|
499
499
|
inParams: ['a', 'b'],
|
|
500
|
-
tasks: [
|
|
500
|
+
tasks: [
|
|
501
501
|
{ f: noSuccess, a: ['a', 'b'], out: ['c'] },
|
|
502
502
|
{ f: noSuccessNull, a: ['a', 'b'], out: ['c'], after: ['noSuccess'] },
|
|
503
503
|
{ f: add, a: ['a', 'b'], out: ['c'], after: ['noSuccessNull'] }
|
|
@@ -518,7 +518,7 @@ if (typeof(react) === 'undefined') {
|
|
|
518
518
|
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
519
519
|
done();
|
|
520
520
|
});
|
|
521
|
-
});
|
|
521
|
+
});
|
|
522
522
|
|
|
523
523
|
|
|
524
524
|
test('selectFirst forces order with third succeeding', function (done) {
|
|
@@ -529,7 +529,7 @@ if (typeof(react) === 'undefined') {
|
|
|
529
529
|
var fn = react();
|
|
530
530
|
var errors = fn.setAndValidateAST({
|
|
531
531
|
inParams: ['a', 'b'],
|
|
532
|
-
tasks: [
|
|
532
|
+
tasks: [
|
|
533
533
|
{ f: noSuccess, a: ['a', 'b'], out: ['c'] },
|
|
534
534
|
{ f: noSuccessNull, a: ['a', 'b'], out: ['c'], after: ['noSuccess']},
|
|
535
535
|
{ f: add, a: ['a', 'b'], out: ['c'], after: ['noSuccessNull'] },
|
|
@@ -553,7 +553,7 @@ if (typeof(react) === 'undefined') {
|
|
|
553
553
|
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
554
554
|
done();
|
|
555
555
|
});
|
|
556
|
-
});
|
|
556
|
+
});
|
|
557
557
|
|
|
558
558
|
test('selectFirst using direct returns', function (done) {
|
|
559
559
|
function noSuccess(a, b) { } // returns undefined result
|
|
@@ -562,7 +562,7 @@ if (typeof(react) === 'undefined') {
|
|
|
562
562
|
var fn = react();
|
|
563
563
|
var errors = fn.setAndValidateAST({
|
|
564
564
|
inParams: ['a', 'b'],
|
|
565
|
-
tasks: [
|
|
565
|
+
tasks: [
|
|
566
566
|
{ f: noSuccess, a: ['a', 'b'], out: ['c'], type: 'ret' },
|
|
567
567
|
{ f: noSuccessNull, a: ['a', 'b'], out: ['c'], type: 'ret', after: ['noSuccess'] },
|
|
568
568
|
{ f: addRet, a: ['a', 'b'], out: ['c'], type: 'ret', after: ['noSuccessNull'] }
|
|
@@ -583,7 +583,7 @@ if (typeof(react) === 'undefined') {
|
|
|
583
583
|
t.deepEqual(events[2].task.results, [5], 'results match');
|
|
584
584
|
done();
|
|
585
585
|
});
|
|
586
|
-
});
|
|
586
|
+
});
|
|
587
587
|
|
|
588
588
|
|
|
589
589
|
}());
|