parallel-tests.js revision 3c189207a3e635a8157893e56da217e0492b3894
3c189207a3e635a8157893e56da217e0492b3894Dav GlassYUI.add('parallel-tests', function(Y) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var Assert = Y.Assert;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var testCase = new Y.Test.Case({
3c189207a3e635a8157893e56da217e0492b3894Dav Glass name: "Parallel Tests",
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_load: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var test = this;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Y.use('parallel', function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test.resume(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.isFunction(Y.Parallel, 'Y.Parallel did not load');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass });
3c189207a3e635a8157893e56da217e0492b3894Dav Glass });
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test.wait();
3c189207a3e635a8157893e56da217e0492b3894Dav Glass },
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_stack: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var stack = new Y.Parallel(),
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter = 0;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass for (var i = 1; i <= 15; i++) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass setTimeout(stack.add(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter++;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }), 100);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass stack.done(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, counter, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass });
3c189207a3e635a8157893e56da217e0492b3894Dav Glass },
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_reults: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var stack = new Y.Parallel(),
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter = 0;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass for (var i = 1; i <= 15; i++) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass setTimeout(stack.add(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter++;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass return false;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }), 100);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass stack.done(function(results) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, counter, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, results.length, 'Results array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass });
3c189207a3e635a8157893e56da217e0492b3894Dav Glass },
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_returns_data: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var stack = new Y.Parallel(),
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter = 0;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass for (var i = 1; i <= 15; i++) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass setTimeout(stack.add(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter++;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass return false;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }), 100);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass stack.done(function(results, data) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, counter, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, results.length, 'Results array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(0, data.length, 'Data array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }, []);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass },
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_nocontext: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var stack = new Y.Parallel(),
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter = 0;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass for (var i = 1; i <= 15; i++) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass setTimeout(stack.add(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter++;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.isFunction(this.use, 'Execution context is wrong in stack item');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass return false;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }), 100);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass stack.done(function(results, data) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, counter, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, results.length, 'Results array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(0, data.length, 'Data array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.isFunction(this.use, 'Execution context is wrong in done handler');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }, []);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass },
3c189207a3e635a8157893e56da217e0492b3894Dav Glass test_context: function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass var stack = new Y.Parallel({
3c189207a3e635a8157893e56da217e0492b3894Dav Glass context: { foo: true }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }),
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter = 0;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass for (var i = 1; i <= 15; i++) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass setTimeout(stack.add(function() {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass counter++;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.isTrue(this.foo, 'Execution context is wrong in stack item');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass return false;
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }), 100);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass stack.done(function(results, data) {
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, stack.finished, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, counter, 'Stack did not complete properly');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(15, results.length, 'Results array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.areEqual(0, data.length, 'Data array is not right');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Assert.isTrue(this.foo, 'Execution context is wrong in done handler');
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }, []);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass }
3c189207a3e635a8157893e56da217e0492b3894Dav Glass });
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass Y.Test.Runner.add(testCase);
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass
3c189207a3e635a8157893e56da217e0492b3894Dav Glass});