/*
* $Id$
*
* Copyright 2008 Sun Microsystems, Inc., 4150 Network Circle,
* Santa Clara, California 95054, U.S.A. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
package org.jdesktop.swingx.renderer;
import java.io.File;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import junit.framework.TestCase;
import org.jdesktop.swingx.JXTable;
import org.jdesktop.swingx.renderer.StringValues.StringValueUIResource;
import org.jdesktop.swingx.search.PatternModel;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
/**
*
* @author Karl George Schaefer
*/
@RunWith(JUnit4.class)
public class StringValuesTest extends TestCase {
@Test
public void testLocaleSVPrefixNotContained() {
Map<Object, String> lookup = new HashMap<Object, String>();
String value = "not contained";
lookup.put(value, "unreasonableDummyKey");
// StringValue sv = new LocalizableStringValue(lookup, "prefix.", Locale.GERMANY);
StringValue sv = new LocalizableStringValue(lookup, "prefix.");
assertEquals(value, sv.getString(value));
}
@Test
public void testLocaleSVPrefixContained() {
Map<Object, String> lookup = new HashMap<Object, String>();
lookup.put(PatternModel.MATCH_RULE_ENDSWITH, PatternModel.MATCH_RULE_ENDSWITH);
StringValue sv = new LocalizableStringValue(lookup, PatternModel.SEARCH_PREFIX, Locale.GERMAN);
assertEquals("endet mit", sv.getString(PatternModel.MATCH_RULE_ENDSWITH));
}
@Test
public void testLocaleSVDirectContained() {
Map<Object, String> lookup = new HashMap<Object, String>();
lookup.put(PatternModel.MATCH_RULE_ENDSWITH, PatternModel.SEARCH_PREFIX + PatternModel.MATCH_RULE_ENDSWITH);
StringValue sv = new LocalizableStringValue(lookup, Locale.GERMAN);
assertEquals("endet mit", sv.getString(PatternModel.MATCH_RULE_ENDSWITH));
}
@Test
public void testLocaleSVNotContained() {
Map<Object, String> lookup = new HashMap<Object, String>();
String value = "not contained";
lookup.put(value, "unreasonableDummyKey");
StringValue sv = new LocalizableStringValue(lookup);
assertEquals(value, sv.getString(value));
}
@Test
public void testLocaleSVDefaultLocale() {
Locale old = Locale.getDefault();
try {
LocalizableStringValue sv = new LocalizableStringValue(new HashMap<Object, String>());
assertEquals(old, sv.getLocale());
Locale other = Locale.CHINESE;
if (old.equals(other)) {
other = Locale.ENGLISH;
}
Locale.setDefault(other);
assertEquals(other, sv.getLocale());
} finally {
Locale.setDefault(old);
}
}
@Test (expected = NullPointerException.class)
public void testLocaleStringValueConstructor() {
new LocalizableStringValue(null);
}
@Test
public void testUIResource() {
final String constant = "dummy";
StringValue sv = new StringValue() {
@Override
public String getString(Object value) {
return constant;
}
};
StringValue wrapper = new StringValueUIResource(sv);
assertEquals(constant, wrapper.getString("whatever"));
}
@Test (expected = NullPointerException.class)
public void testUIResourceConstructor() {
new StringValueUIResource(null);
}
/**
* Issue #1273-swingx: Locale-dependent StringValues constants
* not updated on changing default.
*
*/
@Test
public void testLocaleDateToString() {
Locale locale = Locale.getDefault();
try {
Calendar number = Calendar.getInstance();
number.set(Calendar.MONTH, Calendar.DECEMBER);
Locale.setDefault(Locale.GERMAN);
String german = StringValues.DATE_TO_STRING.getString(number.getTime());
assertTrue("formatted German " + german, german.indexOf(".") >= 0);
Locale.setDefault(Locale.US);
String us = StringValues.DATE_TO_STRING.getString(number.getTime());
assertTrue("formatted us " + us, us.indexOf("Dec") >= 0);
} finally {
Locale.setDefault(locale);
}
}
/**
* Issue #1273-swingx: Locale-dependent StringValues constants
* not updated on changing default.
*/
@Test
public void testLocaleNumberToString() {
Locale locale = Locale.getDefault();
try {
float number = 10.5f;
Locale.setDefault(Locale.US);
String us = StringValues.NUMBER_TO_STRING.getString(number);
assertTrue("formatted us " + us, us.indexOf(".") > 0);
Locale.setDefault(Locale.GERMAN);
String german = StringValues.NUMBER_TO_STRING.getString(number);
assertTrue("formatted German " + german, german.indexOf(",") > 0);
} finally {
Locale.setDefault(locale);
}
}
@Test
public void testFileNameWithNonFile() {
Object o = new Object();
assertEquals(StringValues.TO_STRING.getString(o),
StringValues.FILE_NAME.getString(o));
}
//not asserting the output of file name just that it isn't empty
// PENDING JW: don't quite understand what we are testing here - need to update to
// TO_STRING as of fixing #972?
@Test
public void testFileNameWithFile() throws Exception {
File f = File.createTempFile("svt", "tmp");
f.deleteOnExit();
assertNotSame(StringValues.EMPTY.getString(f),
StringValues.FILE_NAME.getString(f));
}
@Test
public void testFileTypeWithNonFile() {
Object o = new Object();
assertEquals(StringValues.TO_STRING.getString(o),
StringValues.FILE_TYPE.getString(o));
}
//not asserting the output of file type just that it isn't empty
@Test
public void testFileTypeWithFile() throws Exception {
File f = File.createTempFile("svt", "tmp");
f.deleteOnExit();
assertNotSame(StringValues.EMPTY.getString(f),
StringValues.FILE_TYPE.getString(f));
}
@BeforeClass
public static void beforeClass() {
// force loading of resource files
new JXTable();
}
}