source: Dev/trunk/src/client/dojo/tests/promise/all.js @ 485

Last change on this file since 485 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.8 KB
Line 
1define([
2        "doh/main",
3        "dojo/Deferred",
4        "dojo/promise/all"
5], function(doh, Deferred, all){
6        var tests = {
7                "all() with array argument": function(t){
8                        var obj1 = {}, obj2 = {}, obj3 = {};
9                        var received;
10                        all([this.deferred, new Deferred().resolve(obj2), obj3]).then(function(result){ received = result; });
11                        this.deferred.resolve(obj1);
12                        t.t(received[0] === obj1);
13                        t.t(received[1] === obj2);
14                        t.t(received[2] === obj3);
15                },
16
17                "all() with object argument": function(t){
18                        var obj1 = {}, obj2 = {}, obj3 = {};
19                        var received;
20                        all({ a: this.deferred, b: new Deferred().resolve(obj2), c: obj3 }).then(function(result){ received = result; });
21                        this.deferred.resolve(obj1);
22                        t.t(received.a === obj1);
23                        t.t(received.b === obj2);
24                        t.t(received.c === obj3);
25                },
26
27                "all() without arguments": function(t){
28                        var received;
29                        all().then(function(){ received = arguments; });
30                        t.is(received.length, 1);
31                        t.t(typeof received[0] === "undefined");
32                },
33
34                "all() with single non-object argument": function(t){
35                        var received;
36                        all(null).then(function(){ received = arguments; });
37                        t.is(received.length, 1);
38                        t.t(typeof received[0] === "undefined");
39                },
40
41                "all() with empty array": function(t){
42                        var received;
43                        all([]).then(function(result){ received = result; });
44                        t.is(received, []);
45                },
46
47                "all() with empty object": function(t){
48                        var received;
49                        all({}).then(function(result){ received = result; });
50                        t.is(received, {});
51                },
52
53                "all() with one rejected promise": function(t){
54                        var obj = {};
55                        var received;
56                        all([this.deferred, new Deferred().reject(obj), {}]).then(null, function(result){ received = result; });
57                        t.t(received === obj);
58                },
59
60                "all() with one promise rejected later": function(t){
61                        var obj = {};
62                        var received;
63                        all([this.deferred, new Deferred(), new Deferred()]).then(null, function(result){ received = result; });
64                        this.deferred.reject(obj);
65                        t.t(received === obj);
66                },
67
68                "all() with multiple promises rejected later": function(t){
69                        var obj = {};
70                        var deferred2 = new Deferred();
71                        var received;
72                        all([this.deferred, deferred2, new Deferred()]).then(null, function(result){ received = result; });
73                        this.deferred.reject(obj);
74                        deferred2.reject({});
75                        t.t(received === obj);
76                },
77
78                "all() cancel only affects returned promise, not those we're waiting for": function(t){
79                        var obj = {};
80                        var canceled = false;
81                        var deferred2 = new Deferred(function(){ canceled = true; });
82                        var received;
83                        var promise = all([this.deferred, deferred2, new Deferred()]).then(null, function(result){ received = result; });
84                        promise.cancel(obj);
85                        t.t(received === obj);
86                        t.f(canceled);
87                }
88        };
89
90        var wrapped = [];
91        for(var name in tests){
92                wrapped.push({
93                        name: name,
94                        setUp: setUp,
95                        runTest: tests[name]
96                });
97        }
98
99        function setUp(){
100                this.deferred = new Deferred;
101        }
102
103        doh.register("tests.promise.all", wrapped);
104});
Note: See TracBrowser for help on using the repository browser.