/* * $Id$ * * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, * California 95054, U.S.A. All rights reserved. */ package org.jdesktop.swingx.plaf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Insets; import java.util.Locale; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.UIManager; import javax.swing.plaf.UIResource; import org.junit.Before; import org.junit.Test; /** * Tests the functionality of {@code UIManagerExt}. * * @author Karl George Schaefer */ public class UIManagerExtTest { private static final Logger LOG = Logger.getLogger(UIManagerExtTest.class .getName()); /** * {@inheritDoc} */ @Before public void setUp() { UIManagerExt.addResourceBundle("org.jdesktop.swingx.plaf.UIManagerExtTest"); } /** * Ensure that the {@code getSafeXXX} methods always return * {@code UIResource}. */ @Test public void testGetSafeMethodsReturnUIResource() { assertTrue(UIManagerExt.getSafeBorder("", BorderFactory .createEmptyBorder()) instanceof UIResource); assertTrue(UIManagerExt.getSafeColor("", Color.RED) instanceof UIResource); assertTrue(UIManagerExt.getSafeDimension("", new Dimension()) instanceof UIResource); assertTrue(UIManagerExt.getSafeFont("", new Font("Dialog", Font.BOLD, 12)) instanceof UIResource); assertTrue(UIManagerExt.getSafeIcon("", new ImageIcon()) instanceof UIResource); assertTrue(UIManagerExt.getSafeInsets("", new Insets(0, 0, 0, 0)) instanceof UIResource); } /** * test that we get a boolean from the localized resource. */ @Test public void testGetBooleanFromResource() { String key = "goodBoolean"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } Object value = UIManagerExt.getBoolean(key, locale); assertNotNull(value); assertEquals(Boolean.valueOf(columnString), value); } /** * test that a value in the UIManager is not overwritten. */ @Test public void testGetBooleanUIManagerFirst() { String key = "goodBoolean"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } try { Boolean temp = true; UIManager.put(key, temp); Object value = UIManagerExt.getBoolean(key, locale); assertNotNull(value); assertEquals(temp, value); } finally { // restore uimanager UIManager.put(key, null); } } /** * test that the getBoolean doesn't choke on non-Booleans */ @Test public void testGetBooleanLenientWithUnparseable() { String key = "badBoolean"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } UIManagerExt.getBoolean(key, locale); } /** * test that we get a boolean from the localized resource. */ @Test public void testGetColorFromResource() { String key = "goodColor"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } Object value = UIManagerExt.getColor(key, locale); assertNotNull(value); assertEquals(Color.decode(columnString), value); } /** * test that a value in the UIManager is not overwritten. */ @Test public void testGetColorUIManagerFirst() { String key = "goodColor"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } try { Color temp = Color.RED; UIManager.put(key, temp); Object value = UIManagerExt.getColor(key, locale); assertNotNull(value); assertEquals(temp, value); } finally { // restore uimanager UIManager.put(key, null); } } /** * test that the getBoolean doesn't choke on non-Booleans */ @Test public void testGetColorLenientWithUnparseable() { String key = "badColor"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } try { Color.decode(columnString); LOG.info("cant run test - valid integer: " + columnString); } catch (Exception ex) { // must not bark UIManagerExt.getColor(key, locale); } } //TODO remove or reenable after getFont is finalized // /** // * test that we get a font from the localized resource. // */ // public void testGetFontFromResource() { // String key = "goodFont"; // Locale locale = JComponent.getDefaultLocale(); // String columnString = UIManagerExt.getString(key, locale); // if (columnString == null) { // LOG.info("cant run test - no resource found for key: " + key); // return; // } // Object value = UIManagerExt.getFont(key, locale); // assertNotNull(value); // assertEquals(Font.decode(columnString), value); // } // // /** // * test that a value in the UIManager is not overwritten. // */ // public void testGetFontUIManagerFirst() { // String key = "goodFont"; // Locale locale = JComponent.getDefaultLocale(); // String columnString = UIManagerExt.getString(key, locale); // if (columnString == null) { // LOG.info("cant run test - no resource found for key: " + key); // return; // } // // try { // Font temp = new Font("Dialog", Font.ITALIC, 11); // UIManager.put(key, temp); // Object value = UIManagerExt.getFont(key, locale); // assertNotNull(value); // assertEquals(temp, value); // } finally { // // restore uimanager // UIManager.put(key, null); // } // } // // /** // * test that the getFont doesn't choke on non-Fonts // */ // public void testGetFontLenientWithUnparseable() { // String key = "badFont"; // Locale locale = JComponent.getDefaultLocale(); // String columnString = UIManagerExt.getString(key, locale); // if (columnString == null) { // LOG.info("cant run test - no resource found for key: " + key); // return; // } // // try { // System.err.println(Font.decode(columnString)); // Font.decode(columnString); // LOG.info("cant run test - valid integer: " + columnString); // } catch (Exception ex) { // // must not bark // UIManagerExt.getFont(key, locale); // } // } /** * test that we get an int from the localized resource. */ @Test public void testGetIntFromResource() { String key = "goodInt"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } Object value = UIManagerExt.getInt(key, locale); assertNotNull(value); assertEquals(Integer.decode(columnString), value); } /** * test that a value in the UIManager is not overwritten. */ @Test public void testGetIntUIManagerFirst() { String key = "goodInt"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } try { Integer temp = 150; UIManager.put(key, temp); Object value = UIManagerExt.getInt(key, locale); assertNotNull(value); assertEquals(temp, value); } finally { // restore uimanager UIManager.put(key, null); } } /** * test that the getInt doesn't choke on non-numbers */ @Test public void testGetIntLenientWithUnparseable() { String key = "badInt"; Locale locale = JComponent.getDefaultLocale(); String columnString = UIManagerExt.getString(key, locale); if (columnString == null) { LOG.info("cant run test - no resource found for key: " + key); return; } try { Integer.decode(columnString); LOG.info("cant run test - valid integer: " + columnString); } catch (Exception ex) { // must not bark UIManagerExt.getInt(key, locale); } } }