/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.openlcdui.mt.alert;
import junit.framework.*;
import javax.microedition.lcdui.*;
import java.io.IOException;
import com.nokia.openlcdui.mt.SWTTestCase;
/**
* TEST CASE SPECIFICATION <br>
* <br>
* Short description of the module test:
* <li>Collection of tests to test Alert's API functionality. <br>
* <br>
*/
public class AlertTest extends SWTTestCase {
private static String shortString = "Lorem ipsum";
private static String longString = "Lorem ipsum dolor sit amet, "
+ "consectetuer adipiscing elit. Cras turpis ligula, "
+ "condimentum nec, rhoncus quis, molestie in, arcu. "
+ "Curabitur id lacus. Quisque dictum nulla id odio. "
+ "Nullam nec urna. Cras ac lacus nec lacus iaculis aliquet."
+ " Integer ut eros. Proin laoreet justo et augue. "
+ "Praesent dui. Proin vel leo a eros auctor convallis. "
+ "Aenean urna nunc, sagittis vel, pellentesque a, "
+ "luctus a, metus. Phasellus posuere lacus nec augue."
+ "Nullam nec urna. Cras ac lacus nec lacus iaculis aliquet."
+ " Integer ut eros. Proin laoreet justo et augue. "
+ "Praesent dui. Proin vel leo a eros auctor convallis. "
+ "Aenean urna nunc, sagittis vel, pellentesque a, "
+ "luctus a, metus. Phasellus posuere lacus nec augue."
+ "Nullam nec urna. Cras ac lacus nec lacus iaculis aliquet."
+ " Integer ut eros. Proin laoreet justo et augue. "
+ "Praesent dui. Proin vel leo a eros auctor convallis. "
+ "Aenean urna nunc, sagittis vel, pellentesque a, "
+ "luctus a, metus. Phasellus posuere lacus nec augue.";
private static final int INVALID_ALERT_TIMEOUT = -3000;
private static final int VALID_ALERT_TIMEOUT = 2000;
/**
* Constructor.
*/
public AlertTest() {
}
/**
* Constructor.
*
* @param sTestName Test name.
* @param rTestMethod Test method.
*/
public AlertTest(String sTestName) {
super(sTestName);
}
/**
* To create the test suite. You need to add a new aSuite.addTest entry for
* any new test methods.
*
* @return New testsuite.
*/
public static Test suite() {
TestSuite suite = new TestSuite();
java.util.Vector methodNames;
java.util.Enumeration e;
// Add widget tests
methodNames = AlertTest.methodNames();
e = methodNames.elements();
while (e.hasMoreElements()) {
suite.addTest(new AlertTest((String)e.nextElement()));
}
return suite;
}
public static java.util.Vector methodNames() {
java.util.Vector methodNames = new java.util.Vector();
methodNames.addElement("testConstructors");
methodNames.addElement("testSetGetTimeout");
methodNames.addElement("testSetGetType");
methodNames.addElement("testSetGetImage");
methodNames.addElement("testSetGetTexts");
methodNames.addElement("testSetGetIndicators");
methodNames.addElement("testCommands");
return methodNames;
}
protected void runTest() throws Throwable {
if (getName().equals("testConstructors")) testConstructors();
else if (getName().equals("testSetGetTimeout")) testSetGetTimeout();
else if (getName().equals("testSetGetType")) testSetGetType();
else if (getName().equals("testSetGetImage")) testSetGetImage();
else if (getName().equals("testSetGetTexts")) testSetGetTexts();
else if (getName().equals("testSetGetIndicators")) testSetGetIndicators();
else if (getName().equals("testCommands")) testCommands();
else super.runTest();
}
/**
* Tests the constructors.
*/
public void testConstructors() {
try {
new Alert(null);
}
catch (Exception e) {
fail("Exception - Constructor with null title - " + e.getMessage());
}
try {
new Alert(shortString);
}
catch (Exception e) {
fail("Exception - Constructor with short text - " + e.getMessage());
}
try {
new Alert(shortString, longString, null, null);
}
catch (Exception e) {
fail("Exception - Constructor with long text - " + e.getMessage());
}
}
/**
* Tests setter and getter t.
*/
public void testSetGetTimeout() {
Alert alert = new Alert(shortString);
alert.setTimeout(VALID_ALERT_TIMEOUT);
assertEquals("Timeouts don't match.", VALID_ALERT_TIMEOUT, alert
.getTimeout());
alert.setTimeout(Alert.FOREVER);
assertEquals("Timeouts don't match.", Alert.FOREVER, alert.getTimeout());
try {
alert.setTimeout(INVALID_ALERT_TIMEOUT);
fail("IllegalArgumentException should be thrown");
}
catch (IllegalArgumentException iae) {
// OK
}
}
/**
* Tests set and get type.
*/
public void testSetGetType() {
Alert alert = new Alert(shortString);
alert.setType(AlertType.ALARM);
assertEquals("Types don't match.", AlertType.ALARM, alert.getType());
alert.setType(AlertType.CONFIRMATION);
assertEquals("Types don't match.", AlertType.CONFIRMATION, alert
.getType());
alert.setType(AlertType.ERROR);
assertEquals("Types don't match.", AlertType.ERROR, alert.getType());
alert.setType(AlertType.INFO);
assertEquals("Types don't match.", AlertType.INFO, alert.getType());
alert.setType(AlertType.WARNING);
assertEquals("Types don't match.", AlertType.WARNING, alert.getType());
}
/**
* Tests set and get image.
*/
public void testSetGetImage() {
try {
Alert alert = new Alert(shortString);
alert.setImage(null);
assertEquals("Images don't match.", null, alert.getImage());
Image param = Image.createImage("100x100.png");
alert.setImage(param);
assertEquals("Images don't match.", param, alert.getImage());
}
catch (IOException e) {
fail("Cannot load image 100x100.png");
}
}
/**
* Tests set and get texts.
*/
public void testSetGetTexts() {
Alert alert = new Alert(shortString);
alert.setString(null);
assertEquals("String don't match.", null, alert.getString());
alert.setString(shortString);
assertEquals("Strings dont match.", shortString, alert.getString());
assertTrue("Alert with short text is modal",
alert.getTimeout() != Alert.FOREVER);
alert.setString(longString);
assertEquals("Strings dont match", longString, alert.getString());
assertTrue("Alert with long text is not modal",
alert.getTimeout() == Alert.FOREVER);
}
/**
* Tests set and get indicator methods and Gauge-Alert interaction related
* Item methods.
*/
public void testSetGetIndicators() {
Alert alert = new Alert(shortString);
Gauge param1 = new Gauge(null, false, 10, 0);
alert.setIndicator(param1);
assertEquals("Indicators don't match.", param1, alert.getIndicator());
try {
Gauge param2 = new Gauge("Label", true, 10, 0);
alert.setIndicator(param2);
fail("1. IllegalArgumentException expected");
}
catch (IllegalArgumentException iae) {
}
try {
param1.addCommand(new Command("Comm1", Command.ITEM, 0));
fail("2. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
try {
param1.setDefaultCommand(new Command("Comm1", Command.ITEM, 0));
fail("3. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
try {
ItemCommandListener icl = new ItemCommandListener() {
public void commandAction(Command command, Item item) {
}
};
param1.setItemCommandListener(icl);
fail("4. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
try {
param1.setLabel("Label");
fail("5. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
try {
param1.setLayout(Item.LAYOUT_BOTTOM);
fail("6. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
try {
param1.setPreferredSize(10, 10);
fail("7. IllegalStateException expected");
}
catch (IllegalStateException ise) {
}
alert.setIndicator(null);
}
/**
* Tests commands on Alert.
*/
public void testCommands() {
try {
Alert alert = new Alert(shortString);
CommandListener param = new CommandListener() {
public void commandAction(Command c, Displayable d) {
}
};
alert.setCommandListener(param);
alert.setCommandListener(null);
}
catch (Exception e) {
fail("Exception - Setting and removing CommandListener - "
+ e.getMessage());
}
try {
Alert alert = new Alert(shortString);
// adding null command
alert.addCommand(null);
fail("NullPointerException expected - NULL command added to Alert");
}
catch (NullPointerException npe) {
// Ok
}
catch (Exception e) {
fail("Wrong exception is thrown instead of NullPointerException - "
+ "NULL command added to Alert" + e.getMessage());
}
try {
Alert alert = new Alert(shortString);
// test default command
alert.addCommand(Alert.DISMISS_COMMAND);
assertTrue("Default Alert shouldn't be modal",
alert.getTimeout() != Alert.FOREVER);
alert.removeCommand(Alert.DISMISS_COMMAND);
Command c1 = new Command("Comm1", Command.ITEM, 0);
Command c2 = new Command("Comm2", Command.ITEM, 0);
Command c3 = new Command("Comm3", Command.ITEM, 0);
Command c4 = new Command("Comm4", Command.ITEM, 0);
Command c5 = new Command("Comm5", Command.ITEM, 0);
// add commands
alert.addCommand(c1);
assertTrue("Default Alert with 1 command shouldn't be modal", alert
.getTimeout() != Alert.FOREVER);
alert.addCommand(c2);
assertTrue("Default Alert with 2 commands should be modal", alert
.getTimeout() == Alert.FOREVER);
alert.addCommand(c3);
alert.addCommand(c4);
alert.addCommand(c5);
assertTrue("Default Alert with 5 commands should be modal", alert
.getTimeout() == Alert.FOREVER);
// remove commands
alert.removeCommand(c5);
alert.removeCommand(c4);
alert.removeCommand(c3);
assertTrue("Default Alert with 2 commands should be modal", alert
.getTimeout() == Alert.FOREVER);
alert.removeCommand(c2);
assertTrue("Default Alert with 1 command shouldn't be modal", alert
.getTimeout() != Alert.FOREVER);
alert.removeCommand(c1);
assertTrue("Default Alert shouldn't be modal",
alert.getTimeout() != Alert.FOREVER);
}
catch (Exception e) {
fail("Exception - Adding 5 commands - " + e.getMessage());
}
}
}