queue.html revision b0cfaf8e62a833866fd861fe7ff60747ba997be0
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen <link type="text/css" rel="stylesheet" href="/assets/dpSyntaxHighlighter.css">
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen <link type="text/css" rel="stylesheet" href="/build/test/assets/test-console.css">
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen <style type="text/css" id="styleblock" class="highlight-ignore">
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen font: normal 125%/1.4 Arial, sans-serif;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .yui-skin-sam .yui-console .yui-console-content {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen font-size: 10px;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .yui-skin-sam .yui-console .yui-console-bd {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen height: 50em;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .yui-skin-sam .yui-console-entry-pass .yui-console-entry-cat {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen background: #070;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .yui-skin-sam .yui-console-entry-fail .yui-console-entry-cat {
8b43440b7ef4b81c69c31de7ff820dc07a780254Lennart Poettering background: #700;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .highlight-example {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen display: inline;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen width: 650px;
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen .highlight-example h2 {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen display: none;
1c4baffc1895809bae9ac36b670af90a4cb9cd7dTom Gundersen .yui-skin-sam .yui-console-entry-time {
0695cb45727f88308e327471089ccca42d2a0fb1Susant Sahani display: none;
0695cb45727f88308e327471089ccca42d2a0fb1Susant Sahani<script type="text/javascript" src="/build/yui/yui.js"></script>
0695cb45727f88308e327471089ccca42d2a0fb1Susant Sahani<script type="text/javascript" src="/build/event-custom/event-custom.js"></script>
0695cb45727f88308e327471089ccca42d2a0fb1Susant Sahani<script type="text/javascript" src="/build/io/io-base-debug.js"></script>
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen<script type="text/javascript" src="/build/queue/queue-base-debug.js"></script>
1c4baffc1895809bae9ac36b670af90a4cb9cd7dTom Gundersen<script type="text/javascript" src="/build/queue/queue-debug.js"></script>
f6a0ea8568c6d2676239da7f8c67ae6b496fffa4Susant Sahani<!--script type="text/javascript" src="/build/queue/queue-io-debug.js"></script-->
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen filter : 'debug',
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen useBrowserConsole : false,
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen logInclude : { TestRunner: true }
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen}).use('test','console','queue','queue-io','io-base',function (Y) {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersenvar suite = new Y.Test.Suite("Tests");
0695cb45727f88308e327471089ccca42d2a0fb1Susant Sahanifunction f() {}
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen console = { log: f };
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen name : "Queue isntantiation",
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen test_instantiation : function () {
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen var basic = new Y.Queue(),
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen withCallbacks = new Y.Queue(f,f,f,f);
c4a5ddc9f29cf910fac9d814cd898b4cc2bd79b1Tom Gundersen Y.Assert.areSame(true, basic instanceof Y.Queue);
Y.Assert.isFunction(withCallbacks._q[0]);
q = new Y.Queue(inc, inc, "string", inc);
while ((callback = q.next())) {
if (Y.Lang.isFunction(callback)) {
Y.Assert.areSame(3, i);
var q = new Y.Queue();
q.defaults = {
var q = new Y.Queue(f);
q = new Y.Queue().add(f);
q.add(f,f).add(f,f,f);
q.add("Only functions and objects are allowed",
q.add({},{}); // empty objects are ok, since config can be defaulted
this.add(x);
q = new Y.Queue(x,f,x,addToQueue,f,x).run();
Y.Assert.areSame(4,count);
q.run();
q = new Y.Queue(
this.remove('me too');
this.remove("fail");
if (q.size() !== 4) {
self.resume(function () {
Y.Assert.fail("Expected 3, got " + q.size() + " - remove(n) should defer until callback completion");
self.resume(function () {
Y.Assert.fail("This callback should have been removed");
if (q.size() !== 2) {
self.resume(function () {
Y.Assert.fail("Size should be 1");
self.resume(function () {
Y.Assert.areSame('REMOVE', results);
q.remove("remove me");
q.run();
Y.Assert.areSame('R',results);
q.remove("not removed");
this.wait();
q = new Y.Queue(
if (this.count++ > 3) {
} else if (!this.count) {
q.promote('o');
self.resume(function () {
Y.Assert.areSame('PROMOTE', results);
Y.Assert.isUndefined(q._q[0].id);
q.promote('p');
Y.Assert.areSame('p', q._q[0].id);
q.run();
Y.Assert.areSame('PROM', results);
q.promote('t');
this.wait();
q = new Y.Queue(
this.pause();
self.resume(function () {
Y.Assert.areSame('PAUS',results);
q.run();
self.wait();
self.resume(function () {
Y.Assert.areSame('PAUSE',results);
q.run();
Y.Assert.areSame('P', results);
q.pause();
self.resume(function () {
q.run();
self.wait();
this.wait();
q = new Y.Queue(
self.resume(function () {
q.run();
q.stop();
Y.Assert.areSame('STOP',results);
self.resume(function () {
Y.Assert.areSame('STOP',results);
q.run();
this.wait();
q = new Y.Queue(
this.pause();
q.defaults = { fn: function () {} };
c = q.getCallback('a');
q.run();
c = q.getCallback('a');
q.run();
q = new Y.Queue(
q.pause();
self.resume(function () {
q.run();
self.resume(function () {
q.run(); // run to completion
this.wait();
q = new Y.Queue(
q.defaults = { fn: function () { results += 'U' } };
q.run();
Y.Assert.areSame("RUN", results);
q.add({ fn : "results += 'X'" },
{ fn : function () { Y.Assert.areSame("RUN", results); } }).run();
q = new Y.Queue({ test : 'callbacks exec from Queue ctx by default' },
this.test = 'Z';
q.getCallback('a').context = a;
q.test = 'X';
q.run();
new Y.Queue(
Y.ArrayAssert.itemsAreSame([1,2,3],arguments);
Y.ArrayAssert.itemsAreSame(['X'],arguments);
new Y.Queue(
self.resume(function () {
Y.Assert.areSame('ABCCCDDD', results);
this.wait();
new Y.Queue(
return !this.data;
return results.length >= 7;
self.resume(function () {
Y.Assert.areSame('ABBBCCC', results);
Y.Assert.areSame('ABBB', results);
this.wait();
q = new Y.Queue(
self.resume(function () {
Y.Assert.areSame(10,results);
Y.Assert.areSame(2, results);
this.wait();
Y.io(url, {
success : function () { results.success++; },
failure : function () { results.failure++; }
Y.io(url, {
success : function () { results.success++; },
failure : function () { results.failure++; }
Y.io(url, {
success : function () { results.success++; },
failure : function () { results.failure++; },
abort : function () { results.failure++; }
if (results.success !== s) {
data = [s,results.success];
} else if (results.failure !== f) {
data = [f,results.failure];
q.stop();
self.resume(function () {
Y.Assert.fail(msg);
q = new Y.Queue(
function () { self.resume(function () {}); }).run();
this.wait();
q = new Y.Queue(
fn: function () { results.push("E"); },
until: function () { return results.length > 25; },
fn: function () { results.push("X"); }
fn: function () { results.push("V"); },
results.push("N");
results.push("T");
q.after("add", function (e) {
var data = e.added;
results.push("(afterAdd)");
if (!data || data.length !== 4) {
self.resume(function () {
Y.Assert.fail("add args not right");
q.after("promote", function () {
results.push("(afterPromote)");
q.run();
q.on("complete", function () {
results.push("(onComplete)");
self.resume(function () {
q.remove('x');
q.run();
q.promote('v');
this.wait();
q = new Y.Queue(inc,inc,
q.on('execute', function (e) {
if (e.callback.foo) {
q.run();
Y.Assert.areSame(10,i);
q = new Y.Queue(inc, inc, inc, inc, inc, inc, inc, inc, inc, inc);
q.on('shift', function (e) {
q.run();
Y.Assert.areSame(30, i);
var yconsole = new Y.Console({
//yconsole.hideCategory('info');
Y.Test.Runner.add(suite);