asynctest(
'browser.tinymce.core.util.DelayTest',
[
'ephox.mcagar.api.LegacyUnit',
'ephox.agar.api.Pipeline',
'tinymce.core.util.Delay'
],
function (LegacyUnit, Pipeline, Delay) {
var success = arguments[arguments.length - 2];
var failure = arguments[arguments.length - 1];
var suite = LegacyUnit.createSuite();
var ok = function (value, label) {
return LegacyUnit.equal(value, true, label);
};
suite.asyncTest('requestAnimationFrame', function (_, done) {
Delay.requestAnimationFrame(function () {
ok(true, "requestAnimationFrame was executed.");
done();
});
});
suite.asyncTest('setTimeout', function (_, done) {
Delay.setTimeout(function () {
ok(true, "setTimeout was executed.");
done();
});
});
suite.asyncTest('setInterval', function (_, done) {
var count = 0, id;
id = Delay.setInterval(function () {
if (++count === 2) {
Delay.clearInterval(id);
LegacyUnit.equal(count, 2);
done();
} else if (count > 3) {
throw new Error("Still executing setInterval.");
}
});
});
suite.asyncTest('setEditorTimeout', function (_, done) {
var fakeEditor = {};
Delay.setEditorTimeout(fakeEditor, function () {
ok(true, "setEditorTimeout was executed.");
done();
});
});
suite.test('setEditorTimeout (removed)', function () {
var fakeEditor = { removed: true };
Delay.setEditorTimeout(fakeEditor, function () {
throw new Error("Still executing setEditorTimeout.");
});
ok(true, "setEditorTimeout on removed instance.");
});
suite.asyncTest('setEditorInterval', function (_, done) {
var count = 0, id, fakeEditor = {};
id = Delay.setEditorInterval(fakeEditor, function () {
if (++count === 2) {
Delay.clearInterval(id);
LegacyUnit.equal(count, 2);
done();
} else if (count > 3) {
throw new Error("Still executing setEditorInterval.");
}
});
});
suite.test('setEditorInterval (removed)', function () {
var fakeEditor = { removed: true };
Delay.setEditorInterval(fakeEditor, function () {
throw new Error("Still executing setEditorInterval.");
});
ok(true, "setEditorTimeout on removed instance.");
});
suite.asyncTest('throttle', function (_, done) {
var fn, args = [];
fn = Delay.throttle(function (a) {
args.push(a);
}, 0);
fn(1);
fn(2);
Delay.setTimeout(function () {
LegacyUnit.deepEqual(args, [2]);
done();
}, 10);
});
suite.asyncTest('throttle stop', function (_, done) {
var fn, args = [];
fn = Delay.throttle(function (a) {
args.push(a);
}, 0);
fn(1);
fn.stop();
Delay.setTimeout(function () {
LegacyUnit.deepEqual(args, []);
done();
}, 10);
});
suite.test('clearTimeout', function () {
var id;
id = Delay.setTimeout(function () {
throw new Error("clearTimeout didn't work.");
});
Delay.clearTimeout(id);
ok(true, "clearTimeout works.");
});
suite.test('clearTimeout', function () {
var id;
id = Delay.setInterval(function () {
throw new Error("clearInterval didn't work.");
});
Delay.clearInterval(id);
ok(true, "clearInterval works.");
});
Pipeline.async({}, suite.toSteps({}), function () {
success();
}, failure);
}
);
|