1 | var assert = require('assert');
|
2 | var defer = require('../lib/sync_defer').defer;
|
3 |
|
4 | suite("Sync promise", function() {
|
5 |
|
6 | test('ResolveThen', function() {
|
7 | var resolved = false;
|
8 | var d = defer();
|
9 | d.resolve('frob');
|
10 | d.promise.then(function(f) { if (f === 'frob') resolved = true; });
|
11 | assert(resolved);
|
12 | });
|
13 |
|
14 | test('ThenResolve', function() {
|
15 | var resolved = false;
|
16 | var d = defer();
|
17 | d.promise.then(function(f) { if (f === 'frob') resolved = true; });
|
18 | d.resolve('frob');
|
19 | assert(resolved);
|
20 | });
|
21 |
|
22 | test('ThenThenResolve', function() {
|
23 | var d = defer(), called = false;
|
24 | d.promise
|
25 | .then(function(f) { if (f === 'foo') return 'bar'; })
|
26 | .then(function(b) { if (b === 'bar') called = true; });
|
27 | d.resolve('foo');
|
28 | assert(called);
|
29 | });
|
30 |
|
31 | test('ResolveThenThen', function() {
|
32 | var d = defer(), called = false;
|
33 | d.resolve('foo');
|
34 | d.promise
|
35 | .then(function(f) { if (f === 'foo') return 'bar'; })
|
36 | .then(function(b) { if (b === 'bar') called = true; });
|
37 | assert(called);
|
38 | });
|
39 |
|
40 | test('RejectThen', function() {
|
41 | var called = false;
|
42 | var d = defer();
|
43 | d.reject('frob');
|
44 | d.promise.then(assert.fail,
|
45 | function(f) {
|
46 | if (f === 'frob') called = true; });
|
47 | assert(called);
|
48 | });
|
49 |
|
50 | test('ThenReject', function() {
|
51 | var called = false;
|
52 | var d = defer();
|
53 | d.promise.then(assert.fail,
|
54 | function(f) {
|
55 | if (f === 'frob') called = true; });
|
56 | d.reject('frob');
|
57 | assert(called);
|
58 | });
|
59 |
|
60 | test('ThenThrowThen', function() {
|
61 | var called = false;
|
62 | var d = defer();
|
63 | d.promise
|
64 | .then(function() { throw 'foo'; })
|
65 | .then(assert.fail, function(f) { if (f === 'foo') called = true; });
|
66 | d.resolve();
|
67 | assert(called);
|
68 | });
|
69 |
|
70 |
|
71 |
|
72 | test('ThenThrowThenThen', function() {
|
73 | var called = false;
|
74 | var d = defer();
|
75 | d.promise
|
76 | .then(function() { throw 'foo'; })
|
77 | .then(function() { return 'bar'; })
|
78 | .then(assert.fail, function(f) { if ( f=== 'foo') called = true; });
|
79 | d.resolve();
|
80 | assert(called);
|
81 | });
|
82 |
|
83 | test('RejectThenThen', function() {
|
84 | var called = false;
|
85 | var d = defer();
|
86 | d.reject('foo');
|
87 | d.promise
|
88 | .then(assert.fail)
|
89 | .then(assert.fail, function(e) {
|
90 | if (e === 'foo') called = true;
|
91 | });
|
92 | assert(called);
|
93 | });
|
94 |
|
95 | test('ResolveThenThen', function() {
|
96 | var called = false;
|
97 | var d = defer();
|
98 | d.resolve('foo');
|
99 | d.promise
|
100 | .then(null, assert.fail)
|
101 | .then(function(f) {
|
102 | if (f === 'foo') called = true;
|
103 | }, assert.fail);
|
104 | assert(called);
|
105 | });
|
106 |
|
107 | });
|