UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

206 lines (156 loc) 6.5 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2011 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Martin Wittemann (martinwittemann) ************************************************************************ */ qx.Class.define("qx.test.ui.core.Queues", { extend : qx.dev.unit.TestCase, include : qx.dev.unit.MMock, members : { __widget1 : null, __widget2 : null, __widget3 : null, __widget4 : null, setUp : function() { // ensure an empty dispose queue before starting the test qx.ui.core.queue.Manager.flush(); this.__widget1 = new qx.ui.core.Widget(); this.__widget1.$$hash = 10e5; this.__widget2 = new qx.ui.core.Widget(); this.__widget2.$$hash = 10e5 + 1; this.__widget3 = new qx.ui.core.Widget(); this.__widget3.$$hash = 10e5 + 2; this.__widget4 = new qx.ui.core.Widget(); this.__widget4.$$hash = 10e5 + 3; }, tearDown : function() { // dispose the widgets this.__widget1.dispose(); this.__widget2.dispose(); this.__widget3.dispose(); this.__widget4.dispose(); }, testWidgetOrder : function() { qx.ui.core.queue.Widget.add(this.__widget4); qx.ui.core.queue.Widget.add(this.__widget3); qx.ui.core.queue.Widget.add(this.__widget2); qx.ui.core.queue.Widget.add(this.__widget1); var spy1 = this.spy(this.__widget1, "syncWidget"); var spy2 = this.spy(this.__widget2, "syncWidget"); var spy3 = this.spy(this.__widget3, "syncWidget"); var spy4 = this.spy(this.__widget4, "syncWidget"); qx.ui.core.queue.Widget.flush(); this.assertCalledOnce(spy1); this.assertCalledOnce(spy2); this.assertCalledOnce(spy3); this.assertCalledOnce(spy4); this.assertCallOrder(spy4, spy3, spy2, spy1); }, testAppearanceOrder : function() { qx.ui.core.queue.Appearance.add(this.__widget4); qx.ui.core.queue.Appearance.add(this.__widget3); qx.ui.core.queue.Appearance.add(this.__widget2); qx.ui.core.queue.Appearance.add(this.__widget1); var spy1 = this.spy(this.__widget1, "syncAppearance"); var spy2 = this.spy(this.__widget2, "syncAppearance"); var spy3 = this.spy(this.__widget3, "syncAppearance"); var spy4 = this.spy(this.__widget4, "syncAppearance"); var stub = this.stub(qx.ui.core.queue.Visibility, "isVisible").returns(true); qx.ui.core.queue.Appearance.flush(); stub.restore(); this.assertCalledOnce(spy1); this.assertCalledOnce(spy2); this.assertCalledOnce(spy3); this.assertCalledOnce(spy4); this.assertCallOrder(spy4, spy3, spy2, spy1); }, testDisposeOrder : function() { qx.ui.core.queue.Dispose.add(this.__widget4); qx.ui.core.queue.Dispose.add(this.__widget3); qx.ui.core.queue.Dispose.add(this.__widget2); qx.ui.core.queue.Dispose.add(this.__widget1); var spy1 = this.spy(this.__widget1, "dispose"); var spy2 = this.spy(this.__widget2, "dispose"); var spy3 = this.spy(this.__widget3, "dispose"); var spy4 = this.spy(this.__widget4, "dispose"); qx.ui.core.queue.Dispose.flush(); this.assertCalledOnce(spy1); this.assertCalledOnce(spy2); this.assertCalledOnce(spy3); this.assertCalledOnce(spy4); this.assertCallOrder(spy4, spy3, spy2, spy1); }, testVisibilityOrder : function() { qx.ui.core.queue.Visibility.add(this.__widget4); qx.ui.core.queue.Visibility.add(this.__widget3); qx.ui.core.queue.Visibility.add(this.__widget2); qx.ui.core.queue.Visibility.add(this.__widget1); var spy1 = this.spy(this.__widget1, "isRootWidget"); var spy2 = this.spy(this.__widget2, "isRootWidget"); var spy3 = this.spy(this.__widget3, "isRootWidget"); var spy4 = this.spy(this.__widget4, "isRootWidget"); qx.ui.core.queue.Visibility.flush(); this.assertCalledOnce(spy1); this.assertCalledOnce(spy2); this.assertCalledOnce(spy3); this.assertCalledOnce(spy4); this.assertCallOrder(spy4, spy3, spy2, spy1); }, testWidgetAddJobs : function() { qx.ui.core.queue.Widget.add(this.__widget4, "job4"); qx.ui.core.queue.Widget.add(this.__widget3, "job3"); qx.ui.core.queue.Widget.add(this.__widget2); qx.ui.core.queue.Widget.add(this.__widget1, "job1"); qx.ui.core.queue.Widget.add(this.__widget1, "job1"); qx.ui.core.queue.Widget.add(this.__widget1, "job3"); qx.ui.core.queue.Widget.add(this.__widget1, "job2"); var spy1 = this.spy(this.__widget1, "syncWidget"); var spy2 = this.spy(this.__widget2, "syncWidget"); var spy3 = this.spy(this.__widget3, "syncWidget"); var spy4 = this.spy(this.__widget4, "syncWidget"); qx.ui.core.queue.Widget.flush(); this.assertCalledOnce(spy1, "widgte1"); this.assertCalledOnce(spy2, "widget2"); this.assertCalledOnce(spy3, "widget3"); this.assertCalledOnce(spy4, "widget4"); this.assertCallOrder(spy4, spy3, spy2, spy1); this.assertTrue(spy1.args[0][0].job1); this.assertTrue(spy1.args[0][0].job2); this.assertTrue(spy1.args[0][0].job3); this.assertTrue(spy2.args[0][0]["$$default"]); this.assertTrue(spy3.args[0][0].job3); this.assertTrue(spy4.args[0][0].job4); }, testWidgetRemoveJobs : function() { qx.ui.core.queue.Widget.add(this.__widget2); qx.ui.core.queue.Widget.add(this.__widget1, "job1"); qx.ui.core.queue.Widget.add(this.__widget1, "job1"); qx.ui.core.queue.Widget.add(this.__widget1, "job3"); qx.ui.core.queue.Widget.add(this.__widget1, "job2"); qx.ui.core.queue.Widget.remove(this.__widget1, "job1"); var spy1 = this.spy(this.__widget1, "syncWidget"); var spy2 = this.spy(this.__widget2, "syncWidget"); qx.ui.core.queue.Widget.flush(); this.assertCalledOnce(spy1, "widgte1"); this.assertCalledOnce(spy2, "widget2"); this.assertTrue(spy1.args[0][0].job2); this.assertTrue(spy1.args[0][0].job3); this.assertUndefined(spy1.args[0][0].job1); this.assertTrue(spy2.args[0][0]["$$default"]); } } });