/* * * * Copyright 1990-2009 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 com.sun.j2me.content; import com.sun.midp.i3test.TestCase; import javax.microedition.content.ActionNameMap; /** * Tests for creation of ActionNameMaps. */ public class TestActionNameMap extends ExtendedTestCase { /** Valid locale. */ static final String locale = "en_US"; /** Empty string arrays. */ static final String[] zeroStrings = new String[0]; /** Length 1 string array. */ static final String[] oneString = { "1" }; /** Length 1 name string array. */ static final String[] oneNameString = { "N1" }; /** Length 5 string array. */ static final String[] fiveStrings = { "1", "2", "3", "4", "5" }; /** Length 5 names string array. */ static final String[] fiveNameStrings = { "N1", "N2", "N3", "N4", "N5" }; /** String array containing a null. */ static final String[] nullString = { "n1", "n2", "n3", "n4", null }; /** String array containing an empty string. */ static final String[] emptyString = { "e1", "e2", "e3", "e4", ""}; /** String array containing a duplicate string. */ static final String[] dupString = { "dup", "d2", "d3", "dup", "d5"}; /** * Run the tests of the Listener. */ public void runTests() { test001(); test002(); test003(); } /** * Test that the listener is notified when a new Invocation * is queued. */ private void test001() { declare("Create Valid maps"); assertLegal("one action/name pair", oneString, oneNameString, locale); assertLegal("five action/name pairs", fiveStrings, fiveNameStrings, locale); } /** * Test for all the IllegalArgument combinations. */ private void test002() { declare("Create Illegal cases"); assertIllegal("empty arrays", zeroStrings, zeroStrings, locale, new IllegalArgumentException()); assertIllegal("null actions", null, oneNameString, locale, new NullPointerException()); assertIllegal("null actionname", oneString, null, locale, new NullPointerException()); assertIllegal("unequal action/name pairs", oneString, fiveNameStrings, locale, new IllegalArgumentException()); assertIllegal("null locale", oneString, oneNameString, null, new NullPointerException()); assertIllegal("empty locale", oneString, oneNameString, "", new IllegalArgumentException()); assertIllegal("null action string", nullString, fiveNameStrings, locale, new NullPointerException()); assertIllegal("empty action string", emptyString, fiveNameStrings, locale, new IllegalArgumentException()); assertIllegal("null action name string", fiveStrings, nullString, locale, new NullPointerException()); assertIllegal("empty action name string", fiveStrings, emptyString, locale, new IllegalArgumentException()); assertIllegal("duplicate action string", dupString, fiveNameStrings, locale, new IllegalArgumentException()); } /** * Test NullPointerException cases. */ void test003() { ActionNameMap map; map = new ActionNameMap(oneString, oneNameString, locale); try { String a = map.getActionName(null); fail("getActionName(null) must throw npe"); } catch (NullPointerException npe) { assertNotNull("verify exception occurred", npe); } try { String a = map.getAction(null); fail("getActionName(null) must throw npe"); } catch (NullPointerException npe) { assertNotNull("verify exception occurred", npe); } } /** * Create an actionNameMap from the args and verify it was created * correctly. Each of the method of the resulting map is * checked with the test case asserts. Exceptions are not handled. * @param message the message for the errors * @param actions the array of actions * @param actionnames the array of actionnames * @param locale the locale */ void assertLegal(String message, String[] actions, String[]actionnames, String locale) { ActionNameMap map; map = new ActionNameMap(actions, actionnames, locale); int size = map.size(); assertEquals(message, actions.length, size); assertEquals(message, actionnames.length, size); assertEquals(message, locale, map.getLocale()); for (int i = 0; i < size; i++) { assertEquals(message, actions[i], map.getAction(i)); } for (int i = 0; i < size; i++) { assertEquals(message, actionnames[i], map.getActionName(i)); } for (int i = 0; i < size; i++) { assertEquals(message, actionnames[i], map.getActionName(actions[i])); } for (int i = 0; i < size; i++) { assertEquals(message, actions[i], map.getAction(actionnames[i])); } } /** * Create an actionNameMap from the args and verify that * ane xception is thrown. * @param message the message for the errors * @param actions the array of actions * @param actionnames the array of actionnames * @param locale the locale * @param expected the expected exception */ void assertIllegal(String message, String[] actions, String[]actionnames, String locale, Exception expected) { ActionNameMap map; try { map = new ActionNameMap(actions, actionnames, locale); // Always report an error assertEquals("MUST throw an exception", null, map); } catch (IllegalArgumentException ill) { assertEquals(message, expected.getClass().getName(), ill.getClass().getName()); } catch (NullPointerException npe) { assertEquals(message, expected.getClass().getName(), npe.getClass().getName()); } } }