/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.test.framework.resources; import java.util.ListResourceBundle; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.eclipse.persistence.tools.workbench.framework.resources.DefaultStringRepository; import org.eclipse.persistence.tools.workbench.framework.resources.MissingStringException; import org.eclipse.persistence.tools.workbench.framework.resources.ResourceBundleStringRepository; import org.eclipse.persistence.tools.workbench.framework.resources.StringRepository; import org.eclipse.persistence.tools.workbench.test.utility.TestTools; public class StringRepositoryTests extends TestCase { private StringRepository simpleRepos; private StringRepository defaultRepos; public static Test suite() { return new TestSuite(StringRepositoryTests.class); } public StringRepositoryTests(String name) { super(name); } protected void setUp() throws Exception { super.setUp(); this.simpleRepos = new ResourceBundleStringRepository(TestResourceBundle.class); this.defaultRepos = new DefaultStringRepository(TestResourceBundle.class); } protected void tearDown() throws Exception { TestTools.clear(this); super.tearDown(); } public void testHasString() { assertFalse(this.simpleRepos.hasString("BOGUS_KEY")); assertTrue(this.simpleRepos.hasString("OK")); } public void testGetString() { assertEquals("O&K", this.simpleRepos.getString("OK")); assertEquals("OK", this.defaultRepos.getString("OK")); assertEquals("&Cancel & Die", this.simpleRepos.getString("CANCEL")); assertEquals("Cancel & Die", this.defaultRepos.getString("CANCEL")); } public void testGetStringArgument() { assertEquals("Single-argument message: {0, number}.", this.simpleRepos.getString("FORMATTED_MSG_1", new Integer(42))); assertEquals("Single-argument message: 42.", this.defaultRepos.getString("FORMATTED_MSG_1", new Integer(42))); } public void testGetStringArgumentArgument() { assertEquals("Two-argument message: {0, number} + {1, number}.", this.simpleRepos.getString("FORMATTED_MSG_2", new Integer(42), new Integer(17))); assertEquals("Two-argument message: 42 + 17.", this.defaultRepos.getString("FORMATTED_MSG_2", new Integer(42), new Integer(17))); } public void testGetStringArgumentArgumentArgument() { assertEquals("Three-argument message: {0, number} + {1, number} = {2, number}.", this.simpleRepos.getString("FORMATTED_MSG_3", new Integer(42), new Integer(17), new Integer(59))); assertEquals("Three-argument message: 42 + 17 = 59.", this.defaultRepos.getString("FORMATTED_MSG_3", new Integer(42), new Integer(17), new Integer(59))); } public void testGetStringArguments() { assertEquals("{3}-argument message: {0, number} + {1, number} = {2, number}.", this.simpleRepos.getString("FORMATTED_MSG_4", new Object[] {new Integer(42), new Integer(17), new Integer(59), "Four"})); assertEquals("Four-argument message: 42 + 17 = 59.", this.defaultRepos.getString("FORMATTED_MSG_4", new Object[] {new Integer(42), new Integer(17), new Integer(59), "Four"})); } public void testMissingString() { String string = null; boolean exCaught = false; try { string = this.simpleRepos.getString("BOGUS_KEY"); } catch (MissingStringException ex) { if (ex.getKey().equals("BOGUS_KEY")) { exCaught = true; } } assertTrue("string found for BOGUS_KEY: " + string, exCaught); exCaught = false; try { string = this.defaultRepos.getString("BOGUS_KEY"); } catch (MissingStringException ex) { if (ex.getKey().equals("BOGUS_KEY")) { exCaught = true; } } assertTrue("string found for BOGUS_KEY: " + string, exCaught); } public void testDuplicateKey() { boolean exCaught = false; try { StringRepository duplicateStringRepository = new ResourceBundleStringRepository(DuplicateKeyResourceBundle.class); duplicateStringRepository.getString(DuplicateKeyResourceBundle.DUPLICATE_KEY); } catch (IllegalStateException ex) { if (ex.getMessage().indexOf(DuplicateKeyResourceBundle.DUPLICATE_KEY) != -1) { exCaught = true; } } assertTrue("duplicate resource key not detected: " + DuplicateKeyResourceBundle.DUPLICATE_KEY, exCaught); } public static class DuplicateKeyResourceBundle extends ListResourceBundle { static final String DUPLICATE_KEY = "CANCEL"; public Object[][] getContents() { return contents; } private static final Object[][] contents = { {"OK", "O&K"}, {DUPLICATE_KEY, "&Cancel & Die"}, {"FORMATTED_MSG_1", "Single-argument message: {0, number}."}, {"FORMATTED_MSG_2", "Two-argument message: {0, number} + {1, number}."}, {"FORMATTED_MSG_3", "Three-argument message: {0, number} + {1, number} = {2, number}."}, {"FORMATTED_MSG_4", "{3}-argument message: {0, number} + {1, number} = {2, number}."}, {DUPLICATE_KEY, "&Cancel & Die - duplicate"}, }; } }