javauis/eswt_qt/eswtuitestutils/javasrc/com/nokia/mj/impl/uitestutils/UITestUtils.java
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 11 Jun 2010 13:33:44 +0300
changeset 35 85266cc22c7f
permissions -rw-r--r--
Revision: v2.2.1 Kit: 2010123

// UITestUtils.java // // //

package com.nokia.mj.impl.uitestutils;

import java.lang.String;
import org.eclipse.swt.internal.qt.OS;

public class UITestUtils {

    private static final int RES_CHANGE_DEFAULT_DELAY = 5000;

    public UITestUtils() {
        // Always disable screensaver when running tests.
        S60Utils.S60DisableScreensaver(); 	
    }

    /** Init test and s. shot directory, make sure you use slashes to start and
    end it dir name */
    public void startTest(String screenShotDir) {
    }

    /** Ends the test, prints a summary, etc */
    public void endTest(boolean passed, String msg) {
    }

    /** Log a message */
    public void log(String msg) {
    }

    /** Logs one of the two messages and either PASSED or FAILED according to
    value of    passed parameter */
    public void log(boolean passed, String msgPassed, String msgFailed) {
    }

    /** Sends a key event to the midlet using the specified key and scan code */
    public void triggerKeyPressEvent(Key key) {
        int keycode = key.scanCode;
        int modifiers = key.modifiers;
        if(S60Utils.S60SendKeyToFocusWindow(keycode, modifiers, S60Utils.PRESS) != 0)
            throw new RuntimeException("Emulating key press failed");
        if(S60Utils.S60SendKeyToFocusWindow(keycode, modifiers, S60Utils.RELEASE) != 0)
            throw new RuntimeException("Emulating key release failed");
    }

    /** Sends a key down event to the application using the specified key */
    public void triggerKeyDownEvent(Key key) {
        int keycode = key.scanCode;
        int modifiers = key.modifiers;
        if(S60Utils.S60SendKeyToFocusWindow(keycode, modifiers, S60Utils.PRESS) != 0)
            throw new RuntimeException("Emulating key press failed");
    }

    /** Sends a key up event to the application using the specified key */
    public void triggerKeyUpEvent(Key key) {
        int keycode = key.scanCode;
        int modifiers = key.modifiers;
        if(S60Utils.S60SendKeyToFocusWindow(keycode, modifiers, S60Utils.RELEASE) != 0)
            throw new RuntimeException("Emulating key release failed");
    }


    /** Triggers key repeat events using the specified key and scan code.
        Calling this method will trigger the following events to Canvas/CustomItem:
            1. keyPressed event
            2. keyRepeated events, the number of events is indicated by count parameter
            3. keyReleased events

        NOTE 1: This method returns right after triggering the keyPressed event. There should be enough delay
        after calling this so that all repeat events can be handled before the test result is checked.
        The delay before triggering first repeat event is 0.6 seconds and between sequential repeat
        events 0.2 seconds.

        NOTE 2: For triggering media key repeat events triggerMediaKeyRepeatEvents()
        must be used.
    */
    public int triggerKeyRepeatEvents(Key key, int count) {
        return 0;
    }

    /** This method must be used when triggering repeat events for media keys.
        pressedTimeInMillis defines how long a key is kept pressed down.

        NOTE 1: This method returns right after triggering the keyDown event. There should be enough delay
         (> pressedTimeInMillis) after calling this so that all repeat events and key up can be handled before
         the test result is checked.
    */
    public int triggerMediaKeyRepeatEvents(Key key, int pressedTimeInMillis) {
        return 0;
    }

    /** Sends pointer down event to the midlet */
    public void triggerPointerDownEvent(int x, int y) {
        // Setting double click interval to 0 disables double clicks, making it possible
        // to click around in the test cases quickly without causing unwanted double click
        // events 
        OS.QApplication_setDoubleClickInterval(0); 	
        if(S60Utils.S60SendPointerEvent(x, y, S60Utils.BUTTON1, S60Utils.PRESS) != 0)
            throw new RuntimeException("Emulating pointer down failed");
    }

    /** Sends pointer up event to the midlet */
    public void triggerPointerUpEvent(int x, int y) {
        if(S60Utils.S60SendPointerEvent(x, y, S60Utils.BUTTON1, S60Utils.RELEASE) != 0)
            throw new RuntimeException("Emulating pointer up failed");
    }

    /** Sends pointer drag event to the midlet */
    public void triggerPointerDragEvent(int x, int y) {
        if(S60Utils.S60SendPointerMoveEvent(x, y, S60Utils.BUTTON1) != 0 ) {
            throw new RuntimeException("Emulating pointer move failed");
        }
    }

    /**
     * Sends a pointer event to open up a context menu. E.g. long-press, right-click
     * or such depending on the platform.
     */
    public void triggerContextPointerEvent(int x, int y) {
        if(S60Utils.S60SendPointerEvent(x, y, S60Utils.BUTTON3, S60Utils.PRESS) != 0)
            throw new RuntimeException("Emulating pointer down failed");
        if(S60Utils.S60SendPointerEvent(x, y, S60Utils.BUTTON3, S60Utils.RELEASE) != 0)
            throw new RuntimeException("Emulating pointer up failed");
    }

    /** Takes a screen shot and saves it into a .png file. Returns true if
    reference screen shot exists and is identical to the new screen shot*/
    public boolean getScreenShot(String screenShotName) {
        return true;
    }

    /** Takes a screen shot and saves it into a .png file. Returns true if
    reference screen shot exists and compared area is identical in the reference and new screen shot.
    areaToCompare and displayableType define the area that is compared. See also SpedeRunner.java.*/
    public boolean getScreenShot(String screenShotName, int areaToCompare, int displayableType) {
        return true;
    }

    /** Takes a screen shot and saves it into a .png file. Returns true if
    reference screen shot exists and compared area is identical in the reference and new screen shot.
    Four integer parameters define the rectangle area for screen shot comparison. */
    public boolean getScreenShot(String screenShotName, int topLeftX, int topLeftY,
                                                        int bottomRightX, int bottomRightY) {
        return true;
    }

    public void dispose() {
    }

    /** Enable or disable QWERTY input */
    public void changeQwertyInput(boolean aOn) {
    }

    public int switchResolution() {
        return switchResolution(1);
    }

    /** Change the screen resolution - works only on the emulator */
    public int switchResolution(int numTimes) {
        return 0;
    }

    /** Change the screen resolution - works only on the emulator */
    public int switchResolutionWithDelay(int delayMillis) {
        return 0;
    }

    /**
     * Get the top left and bottom right coordinates of main pane, form rect, etc.
     *
     * @param coordinates   The coordinates are returned in this array
     * @param type          Defines for which area the coordinates are fetched
     */
    public void getBoundsOf(int type, int[] coordinates) {
    }

    /**
     * Disable screen saver
     */
    public void disableScreenSaver() {
    }

    /**
     * Enable screen saver
     */
    public void enableScreenSaver() {
    }
}