testdisplaypreempt.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 265 行

JAVA
265
字号
/* *    * * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER *  * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. *  * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). *  * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA *  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */package javax.microedition.lcdui;import com.sun.midp.i3test.*;import javax.microedition.midlet.*;import com.sun.midp.midlet.MIDletStateHandler;import com.sun.midp.util.DummyMIDlet;import com.sun.midp.util.DummyMIDlet2;import com.sun.midp.lcdui.*;/** * This test is designed to verify values returned by Displayable.isShown. * According to the spec isShown should be true only  * Displayable is visible in the foreground and no system screen/menu * is up. */public class TestDisplayPreempt extends TestCase {    MIDletStateHandler msHandler;    DisplayEventHandlerImpl deHandler;    MIDlet midlet[] = new MIDlet[2];    Display display[] = new Display[2];    Display preempt = null;    SystemAlert A[][] = new SystemAlert[2][2];    Form F[][] = new Form[2][2];    Command C[][][] = new Command[2][2][3];            boolean isShown(Display d, Displayable s) {        return d.isShown(s.displayableLF);    }                public static void sleep(int time) {        try {            Thread.sleep(time);        } catch (Exception e) {}    }    public void runTests() {        int i,j;        for (i=0; i<2; i++ ) {            for (j=0; j<2; j++ ) {                String suffix = "_" + i + "_" + j;                //A[i][j] = new Alert("A" + suffix);                F[i][j] = new Form("F" + suffix);                                C[i][j][0] = new Command("SCREEN" + suffix, Command.SCREEN, 1);                C[i][j][1] = new Command("BACK" + suffix, Command.BACK, 1);                C[i][j][2] = new Command("ITEM" + suffix, Command.ITEM, 1);                                F[i][j].addCommand(C[i][j][0]);                F[i][j].addCommand(C[i][j][1]);                F[i][j].addCommand(C[i][j][2]);            }        }        msHandler = MIDletStateHandler.getMidletStateHandler();        deHandler = Display.displayEventHandlerImpl;        // -------------------------------------------------------                test3();        test1();        test2();        // -------------------------------------------------------            }        /**     * starts DummyMIDlet      */    protected void startMIDlet0() {        try {            // Start a new instance of DummyMIDlet            msHandler.startMIDlet("com.sun.midp.util.DummyMIDlet",                                  "DummyMIDlet");                        // Wait for async request to be processed             while (DummyMIDlet.midlet == null) {                try { Thread.sleep(100); } catch (InterruptedException ie) {}            }            midlet[0] = DummyMIDlet.midlet;            display[0] = Display.getDisplay(midlet[0]);            display[0].setCurrent(null);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * starts DummyMIDlet2      */    protected void startMIDlet1() {        try {            // Start a new instance of DummyMIDlet            msHandler.startMIDlet("com.sun.midp.util.DummyMIDlet2",                                  "DummyMIDlet2");                        // Wait for async request to be processed             while (DummyMIDlet2.midlet == null) {                try { Thread.sleep(100); } catch (InterruptedException ie) {}            }            midlet[1] = DummyMIDlet2.midlet;            display[1] = Display.getDisplay(midlet[1]);            display[1].setCurrent(null);        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * Terminates DummyMIDlet     */    protected void endMIDlet0() {        midlet[0].notifyDestroyed();	// Since we are calling MIDlet.notifyDestroyed(), MIDlet.destroyApp()	// will not be called by System. So make it up here.	try {	    ((DummyMIDlet)midlet[0]).destroyApp(true);	} catch (MIDletStateChangeException ignore) {}    }        /**     * Terminates DummyMIDlet2     */    protected void endMIDlet1() {        midlet[1].notifyDestroyed();	// Since we are calling MIDlet.notifyDestroyed(), MIDlet.destroyApp()	// will not be called by System. So make it up here.	try {	    ((DummyMIDlet2)midlet[1]).destroyApp(true);	} catch (MIDletStateChangeException ignore) {}    }    /**     * test checks how SystemAlert preempts headless midlet     */    protected void test1() {        declare("TestDisplayPreempt 1");                // start midlet w/o screens - no modal dialogs started         startMIDlet0();        display[0].setCurrent(null);        midlet[0].resumeRequest();        sleep(500);        // modal dialog not yet exists - empty screen is in background        assertFalse("MIDlet before Alert : Display 0 has foreground", display[0].hasForeground);        sleep(500);        // create modal dialog - midlet w/o screens exists        A[0][1] = new SystemAlert(deHandler, "A_0_1", "Alert with MIDlet", null, AlertType.INFO);        A[0][1].run();        A[0][1].setTimeout(1500);        // preempt = deHandler.preemptingDisplay.getDisplay();        sleep(500);        // modal dialog is active ... - empty screen is hidden         // assertTrue("MIDlet with Alert : Preempt Display has foreground", preempt.hasForeground);        assertFalse("MIDlet with Alert : Display 0 has foreground", display[0].hasForeground);        sleep(1500);        // modal dialog has gone ... - empty screen appears in background again         // assertFalse("MIDlet after Alert : Preempt Display has foreground", preempt.hasForeground);        assertFalse("MIDlet after Alert : Display 0 has foreground", display[0].hasForeground);        // destroy midlet        display[0].setCurrent(null);        sleep(500);        endMIDlet0();    }        /**     * test checks how SystemAlert preempts normal midlet (with screens)     */    protected void test2() {        declare("TestDisplayPreempt 2");                // start midlet with screens - no modal dialogs started        startMIDlet1();        display[1].setCurrent(F[1][0]);        midlet[1].resumeRequest();        sleep(500);        // modal dialog not yet exists - midlet screen is active         assertTrue("MIDlet before Alert : Display 1 has foreground", display[1].hasForeground);        assertTrue("MIDlet before Alert : F 1 0 is shown", isShown(display[1], F[1][0]));        sleep(500);        // create modal dialog - midlet with screens exists        A[1][1] = new SystemAlert(deHandler, "A_1_1", "Alert with MIDlet", null, AlertType.INFO);        A[1][1].run();        A[1][1].setTimeout(1500);        // preempt = deHandler.preemptingDisplay.getDisplay();        sleep(500);        // assertTrue("MIDlet with Alert : Preempt Display has foreground", preempt.hasForeground);        assertFalse("MIDlet with Alert : Display 0 has foreground", display[1].hasForeground);        assertFalse("MIDlet with Alert : F 1 0 is shown", isShown(display[1], F[1][0]));        // while modal dialog is active - change current midlet screen        display[1].setCurrent(F[1][1]);        sleep(500);        // modal dialog is active ... - midlet screen is hidden         // assertTrue("Alert with MIDlet : Preempt Display has foreground", preempt.hasForeground);        assertFalse("Alert with MIDlet : Display 1 has foreground", display[1].hasForeground);        assertFalse("Alert with MIDlet : F 1 0 is shown", isShown(display[1], F[1][0]));        assertFalse("Alert with MIDlet : F 1 1 is shown", isShown(display[1], F[1][1]));        sleep(1500);        // modal dialog has gone ... - midlet screen appears again         // assertFalse("MIDlet after Alert : Preempt Display has foreground", preempt.hasForeground);        assertTrue("MIDlet after Alert : Display 0 has foreground", display[1].hasForeground);        assertFalse("MIDlet after Alert : F 1 0 is shown", isShown(display[1], F[1][0]));        assertTrue("MIDlet after Alert : F 1 1 is shown", isShown(display[1], F[1][1]));        display[0].setCurrent(null);        sleep(500);        endMIDlet1();    }        /**     * test checks how systemAlert w/o midlets works     */    protected void test3() {        declare("TestDisplayPreempt 3");                // create modal dialog (no midlets exist)        A[0][0] = new SystemAlert(deHandler, "A_0_0", "Alert w/o MIDlet", null, AlertType.WARNING);        A[0][0].run();        A[0][0].setTimeout(1000);        // preempt = deHandler.preemptingDisplay.getDisplay();        sleep(500);        // dialog is active         // assertTrue("Alert w/o MIDlet : Preempt Display has foreground", display[1].hasForeground);        sleep(1000);        // dialog has gone !        // assertFalse("Alert w/o MIDlet : Preempt Display has foreground", display[1].hasForeground);                sleep(500);                assertTrue(true);      }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?