UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

195 lines (152 loc) 6.4 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() { // 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() { // dispose the widgets this.__widget1.dispose(); this.__widget2.dispose(); this.__widget3.dispose(); this.__widget4.dispose(); }, testWidgetOrder() { 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() { 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() { 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() { 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() { 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); this.assertCalledOnce(spy1); this.assertCalledOnce(spy1); this.assertCalledOnce(spy2); this.assertCalledOnce(spy3); this.assertCalledOnce(spy4); 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() { 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); this.assertCalledOnce(spy2); 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"]); } } });