parallel-tests.js revision c7490faa3e66f7eb871b63274ce9b824fa7d0bdb
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86TrippYUI.add('parallel-tests', function(Y) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var Assert = Y.Assert;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var testCase = new Y.Test.Case({
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp name: "Parallel Tests",
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_load: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var test = this;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Y.use('parallel', function() {
d676c69348c891c2a261a6dbd4f450ddb2e312f3Tripp test.resume(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.isFunction(Y.Parallel, 'Y.Parallel did not load');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp });
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp });
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test.wait();
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_stack: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel(),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter = 0;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp for (var i = 1; i <= 15; i++) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp setTimeout(stack.add(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter++;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }), 100);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp stack.done(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, counter, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp });
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_reults: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel(),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter = 0;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp for (var i = 1; i <= 15; i++) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp setTimeout(stack.add(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter++;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp return false;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }), 100);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp stack.done(function(results) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, counter, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, results.length, 'Results array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp });
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_returns_data: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel(),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter = 0;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp for (var i = 1; i <= 15; i++) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp setTimeout(stack.add(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter++;
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp return false;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }), 100);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp stack.done(function(results, data) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, counter, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, results.length, 'Results array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(0, data.length, 'Data array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }, []);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_nocontext: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel(),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter = 0;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp for (var i = 1; i <= 15; i++) {
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp setTimeout(stack.add(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter++;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.isFunction(this.use, 'Execution context is wrong in stack item');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp return false;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }), 100);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp stack.done(function(results, data) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, counter, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, results.length, 'Results array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(0, data.length, 'Data array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.isFunction(this.use, 'Execution context is wrong in done handler');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }, []);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_context: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel({
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp context: { foo: true }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter = 0;
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp for (var i = 1; i <= 15; i++) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp setTimeout(stack.add(function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp counter++;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.isTrue(this.foo, 'Execution context is wrong in stack item');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp return false;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }), 100);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
d1a404610f53bdff63cde29a00ea9cf48739d91eTripp stack.done(function(results, data) {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, counter, 'Stack did not complete properly');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(15, results.length, 'Results array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.areEqual(0, data.length, 'Data array is not right');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp Assert.isTrue(this.foo, 'Execution context is wrong in done handler');
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp }, []);
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp },
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp test_add_nofn: function() {
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp var stack = new Y.Parallel(),
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp callback;
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp // Calls `add()` with no args, then calls the returned callback fn.
5e878519d1a8afcc3b0c5d9aa68d4751ed294c86Tripp callback = stack.add();
callback();
stack.done(function(results, data) {
Assert.areEqual(1, stack.finished, 'Stack did not complete properly');
Assert.areEqual(1, results.length, 'Results array is not right');
Assert.areEqual(0, data.length, 'Data array is not right');
Assert.isFunction(this.use, 'Execution context is wrong in done handler');
}, []);
}
});
Y.Test.Runner.add(testCase);
});