624e439d1730c95a53059acf29dab0b576175f48
[yaffs-website] / node_modules / kew / test / closure_test.js
1 /**
2  * @fileoverview A sample file to test type-checking
3  */
4
5 var kew = require('../kew')
6 var Promise = kew.Promise
7 var all = kew.all
8 var allSettled = kew.allSettled
9 var fcall = kew.fcall
10 var nfcall = kew.nfcall
11 var bindPromise = kew.bindPromise
12
13 /**
14 @param {Array} result
15 */
16 var callback = function (result) {};
17
18 /**
19 @param {Array} result
20 @param {Array} context
21 */
22 var callbackWithContext = function (result, context) {};
23
24 /**
25  * @param {number} n
26  * @param {*} result
27  */
28 var callbackNeedsBind = function (n, result) {};
29
30 /**
31 @param {Error} error
32 */
33 var errorCallback = function (error) {};
34
35 /**
36 @param {Error} error
37 @param {Array} context
38 */
39 var errorCallbackWithContext = function (error, context) {};
40
41 /** @return {kew.Promise.<string>} */
42 var stringPromise = function () {
43   return kew.resolve('string')
44 }
45
46 var exampleThen = function () {
47   var examplePromise = new Promise();
48   examplePromise.then(callback);
49   examplePromise.setContext([]);
50   examplePromise.then(callbackWithContext);
51
52   examplePromise.then(null, errorCallback);
53   examplePromise.then(null, errorCallbackWithContext);
54 };
55
56
57 var thenBound = function () {
58   stringPromise().thenBound(callbackNeedsBind, null, 3).failBound(callbackNeedsBind, null, 3);
59 };
60
61 var examplePromise = function () {
62   var promise = new Promise(callback);
63   promise = new Promise(callbackWithContext);
64   promise = new Promise(null, errorCallback);
65   promise = new Promise(null, errorCallbackWithContext);
66 };
67
68 var exampleFail = function () {
69   var promise = new Promise();
70   promise.fail(errorCallback);
71   promise.fail(errorCallbackWithContext);
72 };
73
74 var exampleResolver = function () {
75   var promise = new Promise();
76   var resolver = promise.makeNodeResolver();
77   // success
78   resolver(null, {});
79   // failure
80   resolver(new Error(), null);
81 };
82
83 var exampleAll = function () {
84   // should not compile, but does
85   all([5]);
86   all([{}]);
87   all([null]);
88   all([new Promise(), {}]);
89   all([new Promise(), null]);
90
91   // good
92   var promise = all([]);
93   all([new Promise(), new Promise()]);
94 };
95
96 var exampleAllSettled = function () {
97   allSettled([]);
98   allSettled([5, {}, null, 'string']);
99   var promise = allSettled([new Promise()]);
100   promise.then(function(results){});
101 };
102
103 var exampleTimeout = function () {
104   var promise = new Promise();
105   var timeoutPromise = promise.timeout(50);
106   timeoutPromise.then(function(result){});
107 };
108
109 var noArgsFunction = function () {};
110
111 var exampleFcall = function () {
112   fcall(noArgsFunction);
113   fcall(callback, []);
114   fcall(callbackWithContext, [], 5);
115 };
116
117 /** @param {function(Error, *)} nodeCallback */
118 var noArgsWithNodeCallback = function (nodeCallback) {};
119
120 /**
121 @param {!Array} argument
122 @param {function(Error, *)} nodeCallback
123 */
124 var oneArgWithNodeCallback = function (argument, nodeCallback) {};
125
126 var exampleNfcall = function () {
127   var promise = nfcall(noArgsWithNodeCallback);
128   promise = nfcall(oneArgWithNodeCallback, []);
129 };
130
131 var exampleBindPromise = function () {
132   callback = bindPromise(noArgsWithNodeCallback, null);
133   callback = bindPromise(noArgsWithNodeCallback, {});
134   callback = bindPromise(oneArgWithNodeCallback, null, []);
135 };