You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2015/08/10 18:15:38 UTC
svn commit: r1695126 [9/22] - in /ofbiz/trunk:
applications/accounting/src/org/ofbiz/accounting/thirdparty/authorizedotnet/
applications/accounting/src/org/ofbiz/accounting/thirdparty/securepay/
applications/content/src/org/ofbiz/content/webapp/ftl/ ap...
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java Mon Aug 10 16:15:37 2015
@@ -1,488 +1,488 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *******************************************************************************/
-package org.ofbiz.base.util.test;
-
-import java.math.BigDecimal;
-import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TimeZone;
-
-import org.ofbiz.base.lang.SourceMonitored;
-import org.ofbiz.base.test.GenericTestCaseBase;
-import org.ofbiz.base.util.GeneralException;
-import org.ofbiz.base.util.ObjectType;
-import org.ofbiz.base.util.TimeDuration;
-import org.ofbiz.base.util.UtilDateTime;
-import org.ofbiz.base.util.UtilMisc;
-import org.ofbiz.base.util.UtilXml;
-import org.w3c.dom.Document;
-
-import com.ibm.icu.util.Calendar;
-
-@SourceMonitored
-public class ObjectTypeTests extends GenericTestCaseBase {
- public static final String module = ObjectTypeTests.class.getName();
- private static final LocaleData localeData = new LocaleData("en_US", "Pacific/Wake", "fr", "GMT");
- private final TimeDuration duration = new TimeDuration(0, 0, 0, 1, 1, 1, 1);
- // These numbers are all based on 1 / 128, which is a binary decimal
- // that can be represented by both float and double
- private final BigDecimal dcml = new BigDecimal("781.25");
- private final Double dbl = Double.valueOf("7.8125E2");
- private final Float flt = Float.valueOf("7.8125E2");
- private final Long lng = Long.valueOf("781");
- private final Integer intg = Integer.valueOf("781");
- private final Timestamp tstmp = new Timestamp(781L);
- private final Timestamp ntstmp;
- private final java.util.Date utlDt = new java.util.Date(781);
- private final java.sql.Date sqlDt;
- private final java.sql.Time sqlTm = new java.sql.Time(2096000);
- private final List<Object> list;
- private final Map<String, Object> map;
- private final Set<Object> set;
-
- public ObjectTypeTests(String name) {
- super(name);
- ntstmp = new Timestamp(781L);
- ntstmp.setNanos(123000000);
- list = new ArrayList<Object>();
- list.add("one");
- list.add("two");
- list.add("three");
- map = new LinkedHashMap<String, Object>();
- map.put("one", "1");
- map.put("two", "2");
- map.put("three", "3");
- set = new LinkedHashSet<Object>(list);
- Calendar cal = UtilDateTime.getCalendarInstance(localeData.goodTimeZone, localeData.goodLocale);
- cal.set(1969, Calendar.DECEMBER, 31, 0, 0, 0);
- cal.set(Calendar.MILLISECOND, 0);
- sqlDt = new java.sql.Date(cal.getTimeInMillis());
- }
-
- public static class LocaleData {
- public final Locale goodLocale;
- public final TimeZone goodTimeZone;
- public final Locale badLocale;
- public final TimeZone badTimeZone;
-
- public LocaleData(String goodLocale, String goodTimeZone, String badLocale, String badTimeZone) {
- this.goodLocale = UtilMisc.parseLocale(goodLocale);
- this.goodTimeZone = TimeZone.getTimeZone(goodTimeZone);
- this.badLocale = UtilMisc.parseLocale(badLocale);
- this.badTimeZone = TimeZone.getTimeZone(badTimeZone);
- }
- }
-
- public static Object simpleTypeConvert(Object obj, String type, String format, TimeZone timeZone, Locale locale, boolean noTypeFail) throws GeneralException {
- return ObjectType.simpleTypeConvert(obj, type, format, timeZone, locale, noTypeFail);
- }
-
- public static void simpleTypeConvertTest(String label, Object toConvert, String type, Object wanted) throws GeneralException {
- basicTest(label, toConvert);
- assertEquals(label + ":null target type", toConvert, simpleTypeConvert(toConvert, null, null, null, null, true));
- assertEquals(label + ":null source object", (Object) null, simpleTypeConvert(null, type, null, null, null, true));
- assertEquals(label, wanted, simpleTypeConvert(toConvert, type, null, null, null, true));
- if (toConvert instanceof String) {
- String str = (String) toConvert;
- Document doc = UtilXml.makeEmptyXmlDocument();
- assertEquals(label + ":text-node proxy", wanted, simpleTypeConvert(doc.createTextNode(str), type, null, null, null, true));
- }
- }
-
- public static void simpleTypeConvertTest(String label, Object toConvert, String type, String format, LocaleData localeData, Object wanted) throws GeneralException {
- basicTest(label, toConvert);
- Locale defaultLocale = Locale.getDefault();
- TimeZone defaultTimeZone = TimeZone.getDefault();
- try {
- Locale.setDefault(localeData.goodLocale);
- TimeZone.setDefault(localeData.goodTimeZone);
- assertEquals(label + ":default-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, null, null, true));
- assertNotEquals(label + ":bad-passed-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, localeData.badTimeZone, localeData.badLocale, true));
- Locale.setDefault(localeData.badLocale);
- TimeZone.setDefault(localeData.badTimeZone);
- assertNotEquals(label + ":bad-default-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, null, null, true));
- assertEquals(label + ":passed-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, localeData.goodTimeZone, localeData.goodLocale, true));
- } finally {
- Locale.setDefault(defaultLocale);
- TimeZone.setDefault(defaultTimeZone);
- }
- }
-
- public static void simpleTypeConvertTestSingleMulti(String label, Object toConvert, String[] types, Object wanted) throws GeneralException {
- for (int j = 0; j < types.length; j++) {
- simpleTypeConvertTest(label + "(:" + j + ")", toConvert, types[j], wanted);
- }
- }
-
- public static void simpleTypeConvertTestMultiMulti(String label, Object[] toConvert, String[] types, Object wanted) throws GeneralException {
- for (int i = 0; i < toConvert.length; i++) {
- for (int j = 0; j < types.length; j++) {
- simpleTypeConvertTest(label + "(" + i + ":" + j + ")", toConvert[i], types[j], wanted);
- }
- }
- }
-
- public static void simpleTypeConvertTestSingleMulti(String label, Object toConvert, String[] types, String format, LocaleData localeData, Object wanted) throws GeneralException {
- for (int j = 0; j < types.length; j++) {
- simpleTypeConvertTest(label + "(:" + j + ")", toConvert, types[j], format, localeData, wanted);
- }
- }
-
- public static void simpleTypeConvertTestMultiMulti(String label, Object[] toConvert, String[] types, String format, LocaleData localeData, Object wanted) throws GeneralException {
- for (int i = 0; i < toConvert.length; i++) {
- for (int j = 0; j < types.length; j++) {
- simpleTypeConvertTest(label + "(" + i + ":" + j + ")", toConvert[i], types[j], format, localeData, wanted);
- }
- }
- }
-
- public static void simpleTypeConvertTestError(String label, Object toConvert, String type) throws GeneralException {
- GeneralException caught = null;
- try {
- simpleTypeConvert(toConvert, type, null, null, null, true);
- } catch (GeneralException e) {
- caught = e;
- } finally {
- assertNotNull(label + ":caught", caught);
- }
- }
-
- public static void simpleTypeConvertTestError(String label, Object toConvert, String[] types) throws GeneralException {
- simpleTypeConvertTestError(label + ":this", toConvert, GeneralException.class.getName());
- for (String type: types) {
- simpleTypeConvertTestError(label + ":" + type, toConvert, type);
- }
- }
-
- public static void simpleTypeConvertTestNoError(String label, Object toConvert, String type) throws GeneralException {
- assertSame(label, toConvert, simpleTypeConvert(toConvert, type, null, null, null, false));
- }
-
- public static void simpleTypeConvertTestNoError(String label, Object toConvert, String[] types) throws GeneralException {
- simpleTypeConvertTestNoError(label + ":this", toConvert, GeneralException.class.getName());
- for (String type: types) {
- simpleTypeConvertTestNoError(label + ":" + type, toConvert, type);
- }
- }
-
- public static void basicTest(String label, Object toConvert) throws GeneralException {
- assertEquals(label + ":PlainString", toConvert.toString(), simpleTypeConvert(toConvert, "PlainString", null, null, null, true));
- assertSame(label + ":same", toConvert, simpleTypeConvert(toConvert, toConvert.getClass().getName(), null, null, null, true));
- assertSame(label + ":to-Object", toConvert, simpleTypeConvert(toConvert, "Object", null, null, null, true));
- assertSame(label + ":to-java.lang.Object", toConvert, simpleTypeConvert(toConvert, "java.lang.Object", null, null, null, true));
- }
-
- public void testLoadClassWithNonExistentClass() {
- Exception exception = null;
- try {
- ObjectType.loadClass("foobarbaz");
- } catch (Exception e) {
- exception = e;
- }
- assertTrue("Exception thrown by loadClass(\"foobarbaz\") is not ClassNotFoundException", exception instanceof ClassNotFoundException);
- }
-
- public void testLoadClassWithPrimitives() {
- try {
- Class<?> theClass;
- theClass = ObjectType.loadClass("boolean");
- assertEquals("Wrong class returned by loadClass(\"boolean\")", (Boolean.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("short");
- assertEquals("Wrong class returned by loadClass(\"short\")", (Short.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("int");
- assertEquals("Wrong class returned by loadClass(\"int\")", (Integer.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("long");
- assertEquals("Wrong class returned by loadClass(\"long\")", (Long.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("float");
- assertEquals("Wrong class returned by loadClass(\"float\")", (Float.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("double");
- assertEquals("Wrong class returned by loadClass(\"double\")", (Double.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("byte");
- assertEquals("Wrong class returned by loadClass(\"byte\")", (Byte.TYPE).getName(), theClass.getName());
- theClass = ObjectType.loadClass("char");
- assertEquals("Wrong class returned by loadClass(\"char\")", (Character.TYPE).getName(), theClass.getName());
- } catch (Exception e) {
- fail("Exception thrown by loadClass: " + e.getMessage());
- }
- }
-
- public void testLoadClassWithAlias() {
- try {
- Class<?> theClass;
- // first try with a class full name
- theClass = ObjectType.loadClass("java.lang.String");
- assertEquals("Wrong class returned by loadClass(\"java.lang.String\")", "java.lang.String", theClass.getName());
- // now try with some aliases
- theClass = ObjectType.loadClass("String");
- assertEquals("Wrong class returned by loadClass(\"String\")", "java.lang.String", theClass.getName());
- theClass = ObjectType.loadClass("Object");
- assertEquals("Wrong class returned by loadClass(\"Object\")", "java.lang.Object", theClass.getName());
- theClass = ObjectType.loadClass("Date");
- assertEquals("Wrong class returned by loadClass(\"Date\")", "java.sql.Date", theClass.getName());
- } catch (Exception e) {
- fail("Exception thrown by loadClass: " + e.getMessage());
- }
- }
-
- public void testClassNotFound() {
- GeneralException caught = null;
- try {
- ObjectType.simpleTypeConvert(this, "foobarbaz", null, null, null, false);
- } catch (GeneralException e) {
- caught = e;
- } finally {
- assertNotNull("class not found", caught);
- }
- }
-
- public void testArray() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Object[]->List", new Object[] {"one", "two", "three"}, new String[] {"List", "java.util.List"}, list);
- simpleTypeConvertTestSingleMulti("int[]->List", new int[] {1, 2, 3}, new String[] {"List", "java.util.List"}, list(1, 2, 3));
- simpleTypeConvertTestError("Object[]->error", new Object[] {"one", "two", "three"}, new String[] {"Map"});
- simpleTypeConvertTestError("int[]->error", new int[] {1, 2, 3}, new String[] {"java.util.ArrayList", "Map"});
- }
-
- public void testString() throws GeneralException, Exception {
- simpleTypeConvertTest("String->String", "one", "String", "one");
- simpleTypeConvertTest("String->String", "one", "java.lang.String", "one");
- simpleTypeConvertTestSingleMulti("empty-String->anything", "", new String[] {"List", "Map"}, null);
- simpleTypeConvertTestError("String->error", "one", new String[] {});
- simpleTypeConvertTestMultiMulti("String->Boolean(true)", new String[] {"true", " true ", " TrUe"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.TRUE);
- simpleTypeConvertTestMultiMulti("String->Boolean(false)", new String[] {"false", " false ", " FaLsE"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.FALSE);
- simpleTypeConvertTestSingleMulti("String->Locale", "en_us", new String[] {"Locale", "java.util.Locale"}, localeData.goodLocale);
- simpleTypeConvertTestError("String->error-Locale", "o", new String[] {"Locale", "java.util.Locale"});
- // TZ can never be null, will default to GMT if it can't be parsed(from the javadocs of java.util.TimeZone)
- simpleTypeConvertTestSingleMulti("String->TimeZone", "Pacific/Wake", new String[] {"TimeZone", "java.util.TimeZone"}, localeData.goodTimeZone);
- simpleTypeConvertTestSingleMulti("String->BigDecimal", "78,125E-2", new String[] {"BigDecimal", "java.math.BigDecimal"}, null, localeData, dcml);
- simpleTypeConvertTestError("String->error-BigDecimal", "o", new String[] {"BigDecimal", "java.math.BigDecimal"});
- simpleTypeConvertTestSingleMulti("String->Double", "78,125E-2", new String[] {"Double", "java.lang.Double"}, null, localeData, dbl);
- simpleTypeConvertTestError("String->error-Double", "o", new String[] {"Double", "java.lang.Double"});
- simpleTypeConvertTestSingleMulti("String->Float", "78,125E-2", new String[] {"Float", "java.lang.Float"}, null, localeData, flt);
- simpleTypeConvertTestError("String->error-Float", "o", new String[] {"Float", "java.lang.Float"});
- simpleTypeConvertTestSingleMulti("String->Long", "78,125E-2", new String[] {"Long", "java.lang.Long"}, null, localeData, lng);
- simpleTypeConvertTestError("String->error-Long", "o", new String[] {"Long", "java.lang.Long"});
- simpleTypeConvertTestSingleMulti("String->Integer", "78,125E-2", new String[] {"Integer", "java.lang.Integer"}, null, localeData, intg);
- simpleTypeConvertTestError("String->error-Integer", "o", new String[] {"Integer", "java.lang.Integer"});
-
- simpleTypeConvertTestSingleMulti("String->java.sql.Date", "1969-12-31", new String[] {"Date", "java.sql.Date"}, null, localeData, sqlDt);
- simpleTypeConvertTestSingleMulti("String->java.sql.Date", "1969-12-31", new String[] {"Date", "java.sql.Date"}, "", localeData, sqlDt);
- simpleTypeConvertTestSingleMulti("String->java.sql.Date", "12-31-1969", new String[] {"Date", "java.sql.Date"}, "MM-dd-yyyy", localeData, sqlDt);
- simpleTypeConvertTestError("String->error-java.sql.Date", "o", new String[] {"Date", "java.sql.Date"});
- simpleTypeConvertTestSingleMulti("String->java.sql.Time", "12:34:56", new String[] {"Time", "java.sql.Time"}, null, localeData, sqlTm);
- simpleTypeConvertTestSingleMulti("String->java.sql.Time", "12:34:56", new String[] {"Time", "java.sql.Time"}, "", localeData, sqlTm);
- simpleTypeConvertTestSingleMulti("String->java.sql.Time", "563412", new String[] {"Time", "java.sql.Time"}, "ssmmHH", localeData, sqlTm);
- simpleTypeConvertTestError("String->error-java.sql.Time", "o", new String[] {"Time", "java.sql.Time"});
- simpleTypeConvertTestSingleMulti("String->Timestamp", "1970-01-01 12:00:00.123", new String[] {"Timestamp", "java.sql.Timestamp"}, null, localeData, ntstmp);
- simpleTypeConvertTestSingleMulti("String->Timestamp", "1970-01-01 12:00:00.123", new String[] {"Timestamp", "java.sql.Timestamp"}, "", localeData, ntstmp);
- simpleTypeConvertTestSingleMulti("String->Timestamp", "01-01-1970 12:00:00/123", new String[] {"Timestamp", "java.sql.Timestamp"}, "dd-MM-yyyy HH:mm:ss/SSS", localeData, ntstmp);
- simpleTypeConvertTestMultiMulti("String->Timestamp", new String[] {"1970-01-01", "1970-01-01 00:00:00", "1970-01-01 00:00:00.0", "1970-01-01 00:00:00.000"}, new String[] {"Timestamp", "java.sql.Timestamp"}, null, localeData, new Timestamp(-43200000));
- simpleTypeConvertTestError("String->error-Timestamp", "o", new String[] {"Timestamp", "java.sql.Timestamp"});
- simpleTypeConvertTestSingleMulti("String->List", "[one, two, three]", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list);
- simpleTypeConvertTestSingleMulti("String->List", "[one, two, three", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list("[one, two, three"));
- simpleTypeConvertTestSingleMulti("String->List", "one, two, three]", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list("one, two, three]"));
- simpleTypeConvertTestSingleMulti("String->Set", "[one, two, three]", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set);
- simpleTypeConvertTestSingleMulti("String->Set", "[one, two, three", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set("[one, two, three"));
- simpleTypeConvertTestSingleMulti("String->Set", "one, two, three]", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set("one, two, three]"));
- simpleTypeConvertTestSingleMulti("String->Map", "{one=1, two=2, three=3}", new String[] {"Map", "Map<String, String>", "java.util.Map"}, map);
- simpleTypeConvertTestError("String->Map(error-1)", "{one=1, two=2, three=3", new String[] {"Map", "java.util.Map"});
- simpleTypeConvertTestError("String->Map(error-2)", "one=1, two=2, three=3}", new String[] {"Map", "java.util.Map"});
- simpleTypeConvertTestSingleMulti("String->TimeDuration(number)", "3,661,001", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, null, localeData, duration);
- simpleTypeConvertTestMultiMulti("String->TimeDuration(string)", new String[] {"1:1:1:1"}, new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("String->error-TimeDuration", "o", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"});
- }
-
- public void testDouble() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Double->String", Double.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
- simpleTypeConvertTestSingleMulti("Double->BigDecimal", dbl, new String[] {"BigDecimal", "java.math.BigDecimal"}, dcml);
- simpleTypeConvertTestSingleMulti("Double->Double", dbl, new String[] {"Double", "java.lang.Double"}, new Double("781.25"));
- simpleTypeConvertTestSingleMulti("Double->Float", dbl, new String[] {"Float", "java.lang.Float"}, flt);
- simpleTypeConvertTestSingleMulti("Double->Long", dbl, new String[] {"Long", "java.lang.Long"}, lng);
- simpleTypeConvertTestSingleMulti("Double->Integer", dbl, new String[] {"Integer", "java.lang.Integer"}, intg);
- simpleTypeConvertTestSingleMulti("Double->List", dbl, new String[] {"List", "List<java.lang.Double>", "java.util.List"}, list(dbl));
- simpleTypeConvertTestSingleMulti("Double->Set", dbl, new String[] {"Set", "Set<java.lang.Double>", "java.util.Set"}, set(dbl));
- simpleTypeConvertTestSingleMulti("Double->TimeDuration", Double.valueOf("3661001.25"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("Double->error", dbl, new String[] {});
- }
-
- public void testFloat() throws GeneralException {
- // does not support to java.lang variants
- simpleTypeConvertTestSingleMulti("Float->String", Float.valueOf("1234567"), new String[] {"String"}, null, localeData, "1,234,567");
- simpleTypeConvertTestSingleMulti("Float->BigDecimal", flt, new String[] {"BigDecimal", "java.math.BigDecimal"}, dcml);
- simpleTypeConvertTestSingleMulti("Float->Double", flt, new String[] {"Double", "java.lang.Double"}, dbl);
- simpleTypeConvertTestSingleMulti("Float->Float", flt, new String[] {"Float", "java.lang.Float"}, new Float("781.25"));
- simpleTypeConvertTestSingleMulti("Float->Long", flt, new String[] {"Long", "java.lang.Long"}, lng);
- simpleTypeConvertTestSingleMulti("Float->Integer", flt, new String[] {"Integer", "java.lang.Integer"}, intg);
- simpleTypeConvertTestSingleMulti("Float->List", flt, new String[] {"List", "List<java.lang.Float>", "java.util.List"}, list(flt));
- simpleTypeConvertTestSingleMulti("Float->Set", flt, new String[] {"Set", "Set<java.lang.Float>", "java.util.Set"}, set(flt));
- simpleTypeConvertTestSingleMulti("Float->TimeDuration", Float.valueOf("3661001.25"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("Float->error", flt, new String[] {});
- }
-
- public void testLong() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Long->String", Long.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
- simpleTypeConvertTestSingleMulti("Long->BigDecimal", lng, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781"));
- simpleTypeConvertTestSingleMulti("Long->Double", lng, new String[] {"Double", "java.lang.Double"}, new Double("781"));
- simpleTypeConvertTestSingleMulti("Long->Float", lng, new String[] {"Float", "java.lang.Float"}, new Float("781"));
- simpleTypeConvertTestSingleMulti("Long->Long", lng, new String[] {"Long", "java.lang.Long"}, new Long("781"));
- simpleTypeConvertTestSingleMulti("Long->Integer", lng, new String[] {"Integer", "java.lang.Integer"}, intg);
- simpleTypeConvertTestSingleMulti("Long->List", lng, new String[] {"List", "List<java.lang.Long>", "java.util.List"}, list(lng));
- simpleTypeConvertTestSingleMulti("Long->Set", lng, new String[] {"Set", "Set<java.lang.Long>", "java.util.Set"}, set(lng));
- simpleTypeConvertTestSingleMulti("Long->java.util.Date", 781L, new String[] {"java.util.Date"}, utlDt);
- simpleTypeConvertTestSingleMulti("Long->Timestamp", lng, new String[] {"Timestamp", "java.sql.Timestamp"}, tstmp);
- simpleTypeConvertTestSingleMulti("Long->TimeDuration", Long.valueOf("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("Long->error", lng, new String[] {});
- }
-
- public void testInteger() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Integer->String", Integer.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
- simpleTypeConvertTestSingleMulti("Integer->BigDecimal", intg, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781"));
- simpleTypeConvertTestSingleMulti("Integer->Double", intg, new String[] {"Double", "java.lang.Double"}, new Double("781"));
- simpleTypeConvertTestSingleMulti("Integer->Float", intg, new String[] {"Float", "java.lang.Float"}, new Float("781"));
- simpleTypeConvertTestSingleMulti("Integer->Long", intg, new String[] {"Long", "java.lang.Long"}, lng);
- simpleTypeConvertTestSingleMulti("Integer->Integer", intg, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("781"));
- simpleTypeConvertTestSingleMulti("Integer->List", intg, new String[] {"List", "List<java.lang.Integer>", "java.util.List"}, list(intg));
- simpleTypeConvertTestSingleMulti("Integer->Set", intg, new String[] {"Set", "Set<java.lang.Integer>", "java.util.Set"}, set(intg));
- simpleTypeConvertTestSingleMulti("Integer->TimeDuration", Integer.valueOf("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("Integer->error", intg, new String[] {});
- }
-
- public void testBigDecimal() throws GeneralException {
- simpleTypeConvertTestSingleMulti("BigDecimal->String", new BigDecimal("12345.67"), new String[] {"String", "java.lang.String"}, null, localeData, "12,345.67");
- simpleTypeConvertTestSingleMulti("BigDecimal->BigDecimal", dcml, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781.25"));
- simpleTypeConvertTestSingleMulti("BigDecimal->Double", dcml, new String[] {"Double", "java.lang.Double"}, dbl);
- simpleTypeConvertTestSingleMulti("BigDecimal->Float", dcml, new String[] {"Float", "java.lang.Float"}, flt);
- simpleTypeConvertTestSingleMulti("BigDecimal->Long", dcml, new String[] {"Long", "java.lang.Long"}, lng);
- simpleTypeConvertTestSingleMulti("BigDecimal->Integer", dcml, new String[] {"Integer", "java.lang.Integer"}, intg);
- simpleTypeConvertTestSingleMulti("BigDecimal->List", dcml, new String[] {"List", "List<java.math.BigDecimal>", "java.util.List"}, list(dcml));
- simpleTypeConvertTestSingleMulti("BigDecimal->Set", dcml, new String[] {"Set", "Set<java.math.BigDecimal>", "java.util.Set"}, set(dcml));
- simpleTypeConvertTestSingleMulti("BigDecimal->TimeDuration", new BigDecimal("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
- simpleTypeConvertTestError("BigDecimal->error", dcml, new String[] {});
- }
-
- public void testSqlDate() throws GeneralException {
- simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, null, localeData, "1969-12-31");
- simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, "", localeData, "1969-12-31");
- simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, "dd-MM-yyyy", localeData, "31-12-1969");
- simpleTypeConvertTestSingleMulti("SqlDate->SqlDate", sqlDt, new String[] {"Date", "java.sql.Date"}, new java.sql.Date(-129600000));
- simpleTypeConvertTestSingleMulti("SqlDate->Timestamp", sqlDt, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(-129600000));
- simpleTypeConvertTestSingleMulti("SqlDate->List", sqlDt, new String[] {"List", "List<java.sql.Date>", "java.util.List"}, list(sqlDt));
- simpleTypeConvertTestSingleMulti("SqlDate->Set", sqlDt, new String[] {"Set", "Set<java.sql.Date>", "java.util.Set"}, set(sqlDt));
- simpleTypeConvertTestSingleMulti("SqlDate->Long", sqlDt, new String[] {"Long", "java.lang.Long"}, Long.valueOf("-129600000"));
- simpleTypeConvertTestError("SqlDate->error", sqlDt, new String[] {"Time", "java.sql.Time"});
- }
-
- public void testSqlTime() throws GeneralException {
- simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, null, localeData, "12:34:56");
- simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, "", localeData, "12:34:56");
- simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, "ss:mm:HH", localeData, "56:34:12");
- simpleTypeConvertTestSingleMulti("SqlTime->SqlTime", sqlTm, new String[] {"Time", "java.sql.Time"}, new java.sql.Time(2096000));
- simpleTypeConvertTestSingleMulti("SqlTime->Timestamp", sqlTm, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(2096000));
- simpleTypeConvertTestSingleMulti("SqlTime->List", sqlTm, new String[] {"List", "List<java.sql.Time>", "java.util.List"}, list(sqlTm));
- simpleTypeConvertTestSingleMulti("SqlTime->Set", sqlTm, new String[] {"Set", "Set<java.sql.Time>", "java.util.Set"}, set(sqlTm));
- simpleTypeConvertTestError("SqlTime->error", sqlTm, new String[] {"Date", "java.sql.Date"});
- }
-
- public void testTimestamp() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, null, localeData, "1970-01-01 12:00:00.781");
- simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, "", localeData, "1970-01-01 12:00:00.781");
- simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, "dd-MM-yyyy HH:mm:ss/SSS", localeData, "01-01-1970 12:00:00/781");
- simpleTypeConvertTestSingleMulti("Timestamp->Date", tstmp, new String[] {"Date", "java.sql.Date"}, new java.sql.Date(781));
- simpleTypeConvertTestSingleMulti("Timestamp->Time", tstmp, new String[] {"Time", "java.sql.Time"}, new java.sql.Time(781));
- simpleTypeConvertTestSingleMulti("Timestamp->Timestamp", tstmp, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(781));
- simpleTypeConvertTestSingleMulti("Timestamp->List", tstmp, new String[] {"List", "List<java.sql.Timestamp>", "java.util.List"}, list(tstmp));
- simpleTypeConvertTestSingleMulti("Timestamp->Set", tstmp, new String[] {"Set", "Set<java.sql.Timestamp>", "java.util.Set"}, set(tstmp));
- simpleTypeConvertTestSingleMulti("Timestamp->Long", tstmp, new String[] {"Long", "java.lang.Long"}, Long.valueOf("781"));
- simpleTypeConvertTestError("Timestamp->error", tstmp, new String[] {});
- }
-
- public void testBoolean() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Boolean->Boolean", true, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.TRUE);
- simpleTypeConvertTestSingleMulti("Boolean->Boolean", false, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.FALSE);
- simpleTypeConvertTestSingleMulti("Boolean->String", true, new String[] {"String", "java.lang.String"}, "true");
- simpleTypeConvertTestSingleMulti("Boolean->String", false, new String[] {"String", "java.lang.String"}, "false");
- simpleTypeConvertTestSingleMulti("Boolean->Integer", true, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("1"));
- simpleTypeConvertTestSingleMulti("Boolean->Integer", false, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("0"));
- simpleTypeConvertTestSingleMulti("Boolean->List", true, new String[] {"List", "List<java.lang.Boolean>", "java.util.List"}, list(true));
- simpleTypeConvertTestSingleMulti("Boolean->Set", true, new String[] {"Set", "Set<java.lang.Boolean>", "java.util.Set"}, set(true));
- simpleTypeConvertTestError("Boolean->error", true, new String[] {});
- }
-
- public void testLocale() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Locale->Locale", localeData.goodLocale, new String[] {"Locale", "java.util.Locale"}, localeData.goodLocale);
- simpleTypeConvertTestSingleMulti("Locale->String", localeData.goodLocale, new String[] {"String", "java.lang.String"}, localeData.goodLocale.toString());
- simpleTypeConvertTestError("Locale->error", localeData.goodLocale, new String[] {});
- }
-
- public void testTimeZone() throws GeneralException {
- simpleTypeConvertTestSingleMulti("TimeZone->TimeZone", localeData.goodTimeZone, new String[] {"TimeZone", "java.util.TimeZone"}, localeData.goodTimeZone);
- simpleTypeConvertTestSingleMulti("TimeZone->String", localeData.goodTimeZone, new String[] {"String", "java.lang.String"}, localeData.goodTimeZone.getID());
- simpleTypeConvertTestError("TimeZone->error", localeData.goodTimeZone, new String[] {});
- }
-
- // GenericValue, org.ofbiz.entity.GenericValue
-
- public void testMap() throws GeneralException {
- simpleTypeConvertTestSingleMulti("Map->Map", map, new String[] {"Map", "java.util.Map"}, map("one", "1", "two", "2", "three", "3"));
- simpleTypeConvertTestSingleMulti("Map->String", map, new String[] {"String", "java.lang.String"}, "{one=1, two=2, three=3}");
- simpleTypeConvertTestSingleMulti("Map->List", map, new String[] {"List", "List<java.util.Map>", "java.util.List"}, list(map));
- simpleTypeConvertTestSingleMulti("Map->Set", map, new String[] {"Set", "Set<java.util.Map>", "java.util.Set"}, set(map));
- simpleTypeConvertTestError("Map->error", map, new String[] {});
- }
-
- public void testList() throws GeneralException {
- simpleTypeConvertTestSingleMulti("List->String", list, new String[] {"String", "java.lang.String"}, "[one, two, three]");
- simpleTypeConvertTestSingleMulti("List->List", list, new String[] {"List", "java.util.List"}, list("one", "two", "three"));
- simpleTypeConvertTestError("List->error", list, new String[] {});
- }
-
- /*
- // java.nio.ByteBuffer
-
- public void testBuffer() throws GeneralException {
- CharBuffer cbuf = CharBuffer.wrap("one, two, three");
- simpleTypeConvertTestSingleMulti("Buffer->ByteBuffer", cbuf, new String[] {"java.nio.ByteBuffer"}, "");
- }
- */
-
- // Node tests are done for all String-> conversions
- // org.w3c.dom.Node
-
- public void testTimeDuration() throws GeneralException {
- simpleTypeConvertTestSingleMulti("TimeDuration->String", duration, new String[] {"String", "java.lang.String"}, "0:0:0:1:1:1:1");
- simpleTypeConvertTestSingleMulti("TimeDuration->BigDecimal", duration, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("3661001"));
- simpleTypeConvertTestSingleMulti("TimeDuration->Double", duration, new String[] {"Double", "java.lang.Double"}, Double.valueOf("3661001"));
- simpleTypeConvertTestSingleMulti("TimeDuration->Float", duration, new String[] {"Float", "java.lang.Float"}, Float.valueOf("3661001"));
- simpleTypeConvertTestSingleMulti("TimeDuration->Long", duration, new String[] {"Long", "java.lang.Long"}, Long.valueOf("3661001"));
- simpleTypeConvertTestSingleMulti("TimeDuration->List", duration, new String[] {"List", "java.util.List"}, list(duration));
- simpleTypeConvertTestSingleMulti("TimeDuration->Set", duration, new String[] {"Set", "java.util.Set"}, set(duration));
- simpleTypeConvertTestError("TimeDuration->error", duration, new String[] {});
- }
-
- public void testOther() throws GeneralException {
- simpleTypeConvertTestSingleMulti("this->String", this, new String[] {"String", "java.lang.String"}, this.toString());
- simpleTypeConvertTestError("this->error", this, new String[] {"List", "Map", "Date"});
- simpleTypeConvertTestNoError("this->no-error", this, new String[] {"List", "Map", "Date"});
- }
-}
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.base.util.test;
+
+import java.math.BigDecimal;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TimeZone;
+
+import org.ofbiz.base.lang.SourceMonitored;
+import org.ofbiz.base.test.GenericTestCaseBase;
+import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.ObjectType;
+import org.ofbiz.base.util.TimeDuration;
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilXml;
+import org.w3c.dom.Document;
+
+import com.ibm.icu.util.Calendar;
+
+@SourceMonitored
+public class ObjectTypeTests extends GenericTestCaseBase {
+ public static final String module = ObjectTypeTests.class.getName();
+ private static final LocaleData localeData = new LocaleData("en_US", "Pacific/Wake", "fr", "GMT");
+ private final TimeDuration duration = new TimeDuration(0, 0, 0, 1, 1, 1, 1);
+ // These numbers are all based on 1 / 128, which is a binary decimal
+ // that can be represented by both float and double
+ private final BigDecimal dcml = new BigDecimal("781.25");
+ private final Double dbl = Double.valueOf("7.8125E2");
+ private final Float flt = Float.valueOf("7.8125E2");
+ private final Long lng = Long.valueOf("781");
+ private final Integer intg = Integer.valueOf("781");
+ private final Timestamp tstmp = new Timestamp(781L);
+ private final Timestamp ntstmp;
+ private final java.util.Date utlDt = new java.util.Date(781);
+ private final java.sql.Date sqlDt;
+ private final java.sql.Time sqlTm = new java.sql.Time(2096000);
+ private final List<Object> list;
+ private final Map<String, Object> map;
+ private final Set<Object> set;
+
+ public ObjectTypeTests(String name) {
+ super(name);
+ ntstmp = new Timestamp(781L);
+ ntstmp.setNanos(123000000);
+ list = new ArrayList<Object>();
+ list.add("one");
+ list.add("two");
+ list.add("three");
+ map = new LinkedHashMap<String, Object>();
+ map.put("one", "1");
+ map.put("two", "2");
+ map.put("three", "3");
+ set = new LinkedHashSet<Object>(list);
+ Calendar cal = UtilDateTime.getCalendarInstance(localeData.goodTimeZone, localeData.goodLocale);
+ cal.set(1969, Calendar.DECEMBER, 31, 0, 0, 0);
+ cal.set(Calendar.MILLISECOND, 0);
+ sqlDt = new java.sql.Date(cal.getTimeInMillis());
+ }
+
+ public static class LocaleData {
+ public final Locale goodLocale;
+ public final TimeZone goodTimeZone;
+ public final Locale badLocale;
+ public final TimeZone badTimeZone;
+
+ public LocaleData(String goodLocale, String goodTimeZone, String badLocale, String badTimeZone) {
+ this.goodLocale = UtilMisc.parseLocale(goodLocale);
+ this.goodTimeZone = TimeZone.getTimeZone(goodTimeZone);
+ this.badLocale = UtilMisc.parseLocale(badLocale);
+ this.badTimeZone = TimeZone.getTimeZone(badTimeZone);
+ }
+ }
+
+ public static Object simpleTypeConvert(Object obj, String type, String format, TimeZone timeZone, Locale locale, boolean noTypeFail) throws GeneralException {
+ return ObjectType.simpleTypeConvert(obj, type, format, timeZone, locale, noTypeFail);
+ }
+
+ public static void simpleTypeConvertTest(String label, Object toConvert, String type, Object wanted) throws GeneralException {
+ basicTest(label, toConvert);
+ assertEquals(label + ":null target type", toConvert, simpleTypeConvert(toConvert, null, null, null, null, true));
+ assertEquals(label + ":null source object", (Object) null, simpleTypeConvert(null, type, null, null, null, true));
+ assertEquals(label, wanted, simpleTypeConvert(toConvert, type, null, null, null, true));
+ if (toConvert instanceof String) {
+ String str = (String) toConvert;
+ Document doc = UtilXml.makeEmptyXmlDocument();
+ assertEquals(label + ":text-node proxy", wanted, simpleTypeConvert(doc.createTextNode(str), type, null, null, null, true));
+ }
+ }
+
+ public static void simpleTypeConvertTest(String label, Object toConvert, String type, String format, LocaleData localeData, Object wanted) throws GeneralException {
+ basicTest(label, toConvert);
+ Locale defaultLocale = Locale.getDefault();
+ TimeZone defaultTimeZone = TimeZone.getDefault();
+ try {
+ Locale.setDefault(localeData.goodLocale);
+ TimeZone.setDefault(localeData.goodTimeZone);
+ assertEquals(label + ":default-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, null, null, true));
+ assertNotEquals(label + ":bad-passed-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, localeData.badTimeZone, localeData.badLocale, true));
+ Locale.setDefault(localeData.badLocale);
+ TimeZone.setDefault(localeData.badTimeZone);
+ assertNotEquals(label + ":bad-default-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, null, null, true));
+ assertEquals(label + ":passed-timezone/locale", wanted, simpleTypeConvert(toConvert, type, format, localeData.goodTimeZone, localeData.goodLocale, true));
+ } finally {
+ Locale.setDefault(defaultLocale);
+ TimeZone.setDefault(defaultTimeZone);
+ }
+ }
+
+ public static void simpleTypeConvertTestSingleMulti(String label, Object toConvert, String[] types, Object wanted) throws GeneralException {
+ for (int j = 0; j < types.length; j++) {
+ simpleTypeConvertTest(label + "(:" + j + ")", toConvert, types[j], wanted);
+ }
+ }
+
+ public static void simpleTypeConvertTestMultiMulti(String label, Object[] toConvert, String[] types, Object wanted) throws GeneralException {
+ for (int i = 0; i < toConvert.length; i++) {
+ for (int j = 0; j < types.length; j++) {
+ simpleTypeConvertTest(label + "(" + i + ":" + j + ")", toConvert[i], types[j], wanted);
+ }
+ }
+ }
+
+ public static void simpleTypeConvertTestSingleMulti(String label, Object toConvert, String[] types, String format, LocaleData localeData, Object wanted) throws GeneralException {
+ for (int j = 0; j < types.length; j++) {
+ simpleTypeConvertTest(label + "(:" + j + ")", toConvert, types[j], format, localeData, wanted);
+ }
+ }
+
+ public static void simpleTypeConvertTestMultiMulti(String label, Object[] toConvert, String[] types, String format, LocaleData localeData, Object wanted) throws GeneralException {
+ for (int i = 0; i < toConvert.length; i++) {
+ for (int j = 0; j < types.length; j++) {
+ simpleTypeConvertTest(label + "(" + i + ":" + j + ")", toConvert[i], types[j], format, localeData, wanted);
+ }
+ }
+ }
+
+ public static void simpleTypeConvertTestError(String label, Object toConvert, String type) throws GeneralException {
+ GeneralException caught = null;
+ try {
+ simpleTypeConvert(toConvert, type, null, null, null, true);
+ } catch (GeneralException e) {
+ caught = e;
+ } finally {
+ assertNotNull(label + ":caught", caught);
+ }
+ }
+
+ public static void simpleTypeConvertTestError(String label, Object toConvert, String[] types) throws GeneralException {
+ simpleTypeConvertTestError(label + ":this", toConvert, GeneralException.class.getName());
+ for (String type: types) {
+ simpleTypeConvertTestError(label + ":" + type, toConvert, type);
+ }
+ }
+
+ public static void simpleTypeConvertTestNoError(String label, Object toConvert, String type) throws GeneralException {
+ assertSame(label, toConvert, simpleTypeConvert(toConvert, type, null, null, null, false));
+ }
+
+ public static void simpleTypeConvertTestNoError(String label, Object toConvert, String[] types) throws GeneralException {
+ simpleTypeConvertTestNoError(label + ":this", toConvert, GeneralException.class.getName());
+ for (String type: types) {
+ simpleTypeConvertTestNoError(label + ":" + type, toConvert, type);
+ }
+ }
+
+ public static void basicTest(String label, Object toConvert) throws GeneralException {
+ assertEquals(label + ":PlainString", toConvert.toString(), simpleTypeConvert(toConvert, "PlainString", null, null, null, true));
+ assertSame(label + ":same", toConvert, simpleTypeConvert(toConvert, toConvert.getClass().getName(), null, null, null, true));
+ assertSame(label + ":to-Object", toConvert, simpleTypeConvert(toConvert, "Object", null, null, null, true));
+ assertSame(label + ":to-java.lang.Object", toConvert, simpleTypeConvert(toConvert, "java.lang.Object", null, null, null, true));
+ }
+
+ public void testLoadClassWithNonExistentClass() {
+ Exception exception = null;
+ try {
+ ObjectType.loadClass("foobarbaz");
+ } catch (Exception e) {
+ exception = e;
+ }
+ assertTrue("Exception thrown by loadClass(\"foobarbaz\") is not ClassNotFoundException", exception instanceof ClassNotFoundException);
+ }
+
+ public void testLoadClassWithPrimitives() {
+ try {
+ Class<?> theClass;
+ theClass = ObjectType.loadClass("boolean");
+ assertEquals("Wrong class returned by loadClass(\"boolean\")", (Boolean.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("short");
+ assertEquals("Wrong class returned by loadClass(\"short\")", (Short.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("int");
+ assertEquals("Wrong class returned by loadClass(\"int\")", (Integer.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("long");
+ assertEquals("Wrong class returned by loadClass(\"long\")", (Long.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("float");
+ assertEquals("Wrong class returned by loadClass(\"float\")", (Float.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("double");
+ assertEquals("Wrong class returned by loadClass(\"double\")", (Double.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("byte");
+ assertEquals("Wrong class returned by loadClass(\"byte\")", (Byte.TYPE).getName(), theClass.getName());
+ theClass = ObjectType.loadClass("char");
+ assertEquals("Wrong class returned by loadClass(\"char\")", (Character.TYPE).getName(), theClass.getName());
+ } catch (Exception e) {
+ fail("Exception thrown by loadClass: " + e.getMessage());
+ }
+ }
+
+ public void testLoadClassWithAlias() {
+ try {
+ Class<?> theClass;
+ // first try with a class full name
+ theClass = ObjectType.loadClass("java.lang.String");
+ assertEquals("Wrong class returned by loadClass(\"java.lang.String\")", "java.lang.String", theClass.getName());
+ // now try with some aliases
+ theClass = ObjectType.loadClass("String");
+ assertEquals("Wrong class returned by loadClass(\"String\")", "java.lang.String", theClass.getName());
+ theClass = ObjectType.loadClass("Object");
+ assertEquals("Wrong class returned by loadClass(\"Object\")", "java.lang.Object", theClass.getName());
+ theClass = ObjectType.loadClass("Date");
+ assertEquals("Wrong class returned by loadClass(\"Date\")", "java.sql.Date", theClass.getName());
+ } catch (Exception e) {
+ fail("Exception thrown by loadClass: " + e.getMessage());
+ }
+ }
+
+ public void testClassNotFound() {
+ GeneralException caught = null;
+ try {
+ ObjectType.simpleTypeConvert(this, "foobarbaz", null, null, null, false);
+ } catch (GeneralException e) {
+ caught = e;
+ } finally {
+ assertNotNull("class not found", caught);
+ }
+ }
+
+ public void testArray() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Object[]->List", new Object[] {"one", "two", "three"}, new String[] {"List", "java.util.List"}, list);
+ simpleTypeConvertTestSingleMulti("int[]->List", new int[] {1, 2, 3}, new String[] {"List", "java.util.List"}, list(1, 2, 3));
+ simpleTypeConvertTestError("Object[]->error", new Object[] {"one", "two", "three"}, new String[] {"Map"});
+ simpleTypeConvertTestError("int[]->error", new int[] {1, 2, 3}, new String[] {"java.util.ArrayList", "Map"});
+ }
+
+ public void testString() throws GeneralException, Exception {
+ simpleTypeConvertTest("String->String", "one", "String", "one");
+ simpleTypeConvertTest("String->String", "one", "java.lang.String", "one");
+ simpleTypeConvertTestSingleMulti("empty-String->anything", "", new String[] {"List", "Map"}, null);
+ simpleTypeConvertTestError("String->error", "one", new String[] {});
+ simpleTypeConvertTestMultiMulti("String->Boolean(true)", new String[] {"true", " true ", " TrUe"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.TRUE);
+ simpleTypeConvertTestMultiMulti("String->Boolean(false)", new String[] {"false", " false ", " FaLsE"}, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.FALSE);
+ simpleTypeConvertTestSingleMulti("String->Locale", "en_us", new String[] {"Locale", "java.util.Locale"}, localeData.goodLocale);
+ simpleTypeConvertTestError("String->error-Locale", "o", new String[] {"Locale", "java.util.Locale"});
+ // TZ can never be null, will default to GMT if it can't be parsed(from the javadocs of java.util.TimeZone)
+ simpleTypeConvertTestSingleMulti("String->TimeZone", "Pacific/Wake", new String[] {"TimeZone", "java.util.TimeZone"}, localeData.goodTimeZone);
+ simpleTypeConvertTestSingleMulti("String->BigDecimal", "78,125E-2", new String[] {"BigDecimal", "java.math.BigDecimal"}, null, localeData, dcml);
+ simpleTypeConvertTestError("String->error-BigDecimal", "o", new String[] {"BigDecimal", "java.math.BigDecimal"});
+ simpleTypeConvertTestSingleMulti("String->Double", "78,125E-2", new String[] {"Double", "java.lang.Double"}, null, localeData, dbl);
+ simpleTypeConvertTestError("String->error-Double", "o", new String[] {"Double", "java.lang.Double"});
+ simpleTypeConvertTestSingleMulti("String->Float", "78,125E-2", new String[] {"Float", "java.lang.Float"}, null, localeData, flt);
+ simpleTypeConvertTestError("String->error-Float", "o", new String[] {"Float", "java.lang.Float"});
+ simpleTypeConvertTestSingleMulti("String->Long", "78,125E-2", new String[] {"Long", "java.lang.Long"}, null, localeData, lng);
+ simpleTypeConvertTestError("String->error-Long", "o", new String[] {"Long", "java.lang.Long"});
+ simpleTypeConvertTestSingleMulti("String->Integer", "78,125E-2", new String[] {"Integer", "java.lang.Integer"}, null, localeData, intg);
+ simpleTypeConvertTestError("String->error-Integer", "o", new String[] {"Integer", "java.lang.Integer"});
+
+ simpleTypeConvertTestSingleMulti("String->java.sql.Date", "1969-12-31", new String[] {"Date", "java.sql.Date"}, null, localeData, sqlDt);
+ simpleTypeConvertTestSingleMulti("String->java.sql.Date", "1969-12-31", new String[] {"Date", "java.sql.Date"}, "", localeData, sqlDt);
+ simpleTypeConvertTestSingleMulti("String->java.sql.Date", "12-31-1969", new String[] {"Date", "java.sql.Date"}, "MM-dd-yyyy", localeData, sqlDt);
+ simpleTypeConvertTestError("String->error-java.sql.Date", "o", new String[] {"Date", "java.sql.Date"});
+ simpleTypeConvertTestSingleMulti("String->java.sql.Time", "12:34:56", new String[] {"Time", "java.sql.Time"}, null, localeData, sqlTm);
+ simpleTypeConvertTestSingleMulti("String->java.sql.Time", "12:34:56", new String[] {"Time", "java.sql.Time"}, "", localeData, sqlTm);
+ simpleTypeConvertTestSingleMulti("String->java.sql.Time", "563412", new String[] {"Time", "java.sql.Time"}, "ssmmHH", localeData, sqlTm);
+ simpleTypeConvertTestError("String->error-java.sql.Time", "o", new String[] {"Time", "java.sql.Time"});
+ simpleTypeConvertTestSingleMulti("String->Timestamp", "1970-01-01 12:00:00.123", new String[] {"Timestamp", "java.sql.Timestamp"}, null, localeData, ntstmp);
+ simpleTypeConvertTestSingleMulti("String->Timestamp", "1970-01-01 12:00:00.123", new String[] {"Timestamp", "java.sql.Timestamp"}, "", localeData, ntstmp);
+ simpleTypeConvertTestSingleMulti("String->Timestamp", "01-01-1970 12:00:00/123", new String[] {"Timestamp", "java.sql.Timestamp"}, "dd-MM-yyyy HH:mm:ss/SSS", localeData, ntstmp);
+ simpleTypeConvertTestMultiMulti("String->Timestamp", new String[] {"1970-01-01", "1970-01-01 00:00:00", "1970-01-01 00:00:00.0", "1970-01-01 00:00:00.000"}, new String[] {"Timestamp", "java.sql.Timestamp"}, null, localeData, new Timestamp(-43200000));
+ simpleTypeConvertTestError("String->error-Timestamp", "o", new String[] {"Timestamp", "java.sql.Timestamp"});
+ simpleTypeConvertTestSingleMulti("String->List", "[one, two, three]", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list);
+ simpleTypeConvertTestSingleMulti("String->List", "[one, two, three", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list("[one, two, three"));
+ simpleTypeConvertTestSingleMulti("String->List", "one, two, three]", new String[] {"List", "List<java.lang.String>", "java.util.List"}, list("one, two, three]"));
+ simpleTypeConvertTestSingleMulti("String->Set", "[one, two, three]", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set);
+ simpleTypeConvertTestSingleMulti("String->Set", "[one, two, three", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set("[one, two, three"));
+ simpleTypeConvertTestSingleMulti("String->Set", "one, two, three]", new String[] {"Set", "Set<java.lang.String>", "java.util.Set"}, set("one, two, three]"));
+ simpleTypeConvertTestSingleMulti("String->Map", "{one=1, two=2, three=3}", new String[] {"Map", "Map<String, String>", "java.util.Map"}, map);
+ simpleTypeConvertTestError("String->Map(error-1)", "{one=1, two=2, three=3", new String[] {"Map", "java.util.Map"});
+ simpleTypeConvertTestError("String->Map(error-2)", "one=1, two=2, three=3}", new String[] {"Map", "java.util.Map"});
+ simpleTypeConvertTestSingleMulti("String->TimeDuration(number)", "3,661,001", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, null, localeData, duration);
+ simpleTypeConvertTestMultiMulti("String->TimeDuration(string)", new String[] {"1:1:1:1"}, new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("String->error-TimeDuration", "o", new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"});
+ }
+
+ public void testDouble() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Double->String", Double.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
+ simpleTypeConvertTestSingleMulti("Double->BigDecimal", dbl, new String[] {"BigDecimal", "java.math.BigDecimal"}, dcml);
+ simpleTypeConvertTestSingleMulti("Double->Double", dbl, new String[] {"Double", "java.lang.Double"}, new Double("781.25"));
+ simpleTypeConvertTestSingleMulti("Double->Float", dbl, new String[] {"Float", "java.lang.Float"}, flt);
+ simpleTypeConvertTestSingleMulti("Double->Long", dbl, new String[] {"Long", "java.lang.Long"}, lng);
+ simpleTypeConvertTestSingleMulti("Double->Integer", dbl, new String[] {"Integer", "java.lang.Integer"}, intg);
+ simpleTypeConvertTestSingleMulti("Double->List", dbl, new String[] {"List", "List<java.lang.Double>", "java.util.List"}, list(dbl));
+ simpleTypeConvertTestSingleMulti("Double->Set", dbl, new String[] {"Set", "Set<java.lang.Double>", "java.util.Set"}, set(dbl));
+ simpleTypeConvertTestSingleMulti("Double->TimeDuration", Double.valueOf("3661001.25"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("Double->error", dbl, new String[] {});
+ }
+
+ public void testFloat() throws GeneralException {
+ // does not support to java.lang variants
+ simpleTypeConvertTestSingleMulti("Float->String", Float.valueOf("1234567"), new String[] {"String"}, null, localeData, "1,234,567");
+ simpleTypeConvertTestSingleMulti("Float->BigDecimal", flt, new String[] {"BigDecimal", "java.math.BigDecimal"}, dcml);
+ simpleTypeConvertTestSingleMulti("Float->Double", flt, new String[] {"Double", "java.lang.Double"}, dbl);
+ simpleTypeConvertTestSingleMulti("Float->Float", flt, new String[] {"Float", "java.lang.Float"}, new Float("781.25"));
+ simpleTypeConvertTestSingleMulti("Float->Long", flt, new String[] {"Long", "java.lang.Long"}, lng);
+ simpleTypeConvertTestSingleMulti("Float->Integer", flt, new String[] {"Integer", "java.lang.Integer"}, intg);
+ simpleTypeConvertTestSingleMulti("Float->List", flt, new String[] {"List", "List<java.lang.Float>", "java.util.List"}, list(flt));
+ simpleTypeConvertTestSingleMulti("Float->Set", flt, new String[] {"Set", "Set<java.lang.Float>", "java.util.Set"}, set(flt));
+ simpleTypeConvertTestSingleMulti("Float->TimeDuration", Float.valueOf("3661001.25"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("Float->error", flt, new String[] {});
+ }
+
+ public void testLong() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Long->String", Long.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
+ simpleTypeConvertTestSingleMulti("Long->BigDecimal", lng, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781"));
+ simpleTypeConvertTestSingleMulti("Long->Double", lng, new String[] {"Double", "java.lang.Double"}, new Double("781"));
+ simpleTypeConvertTestSingleMulti("Long->Float", lng, new String[] {"Float", "java.lang.Float"}, new Float("781"));
+ simpleTypeConvertTestSingleMulti("Long->Long", lng, new String[] {"Long", "java.lang.Long"}, new Long("781"));
+ simpleTypeConvertTestSingleMulti("Long->Integer", lng, new String[] {"Integer", "java.lang.Integer"}, intg);
+ simpleTypeConvertTestSingleMulti("Long->List", lng, new String[] {"List", "List<java.lang.Long>", "java.util.List"}, list(lng));
+ simpleTypeConvertTestSingleMulti("Long->Set", lng, new String[] {"Set", "Set<java.lang.Long>", "java.util.Set"}, set(lng));
+ simpleTypeConvertTestSingleMulti("Long->java.util.Date", 781L, new String[] {"java.util.Date"}, utlDt);
+ simpleTypeConvertTestSingleMulti("Long->Timestamp", lng, new String[] {"Timestamp", "java.sql.Timestamp"}, tstmp);
+ simpleTypeConvertTestSingleMulti("Long->TimeDuration", Long.valueOf("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("Long->error", lng, new String[] {});
+ }
+
+ public void testInteger() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Integer->String", Integer.valueOf("1234567"), new String[] {"String", "java.lang.String"}, null, localeData, "1,234,567");
+ simpleTypeConvertTestSingleMulti("Integer->BigDecimal", intg, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781"));
+ simpleTypeConvertTestSingleMulti("Integer->Double", intg, new String[] {"Double", "java.lang.Double"}, new Double("781"));
+ simpleTypeConvertTestSingleMulti("Integer->Float", intg, new String[] {"Float", "java.lang.Float"}, new Float("781"));
+ simpleTypeConvertTestSingleMulti("Integer->Long", intg, new String[] {"Long", "java.lang.Long"}, lng);
+ simpleTypeConvertTestSingleMulti("Integer->Integer", intg, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("781"));
+ simpleTypeConvertTestSingleMulti("Integer->List", intg, new String[] {"List", "List<java.lang.Integer>", "java.util.List"}, list(intg));
+ simpleTypeConvertTestSingleMulti("Integer->Set", intg, new String[] {"Set", "Set<java.lang.Integer>", "java.util.Set"}, set(intg));
+ simpleTypeConvertTestSingleMulti("Integer->TimeDuration", Integer.valueOf("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("Integer->error", intg, new String[] {});
+ }
+
+ public void testBigDecimal() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("BigDecimal->String", new BigDecimal("12345.67"), new String[] {"String", "java.lang.String"}, null, localeData, "12,345.67");
+ simpleTypeConvertTestSingleMulti("BigDecimal->BigDecimal", dcml, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("781.25"));
+ simpleTypeConvertTestSingleMulti("BigDecimal->Double", dcml, new String[] {"Double", "java.lang.Double"}, dbl);
+ simpleTypeConvertTestSingleMulti("BigDecimal->Float", dcml, new String[] {"Float", "java.lang.Float"}, flt);
+ simpleTypeConvertTestSingleMulti("BigDecimal->Long", dcml, new String[] {"Long", "java.lang.Long"}, lng);
+ simpleTypeConvertTestSingleMulti("BigDecimal->Integer", dcml, new String[] {"Integer", "java.lang.Integer"}, intg);
+ simpleTypeConvertTestSingleMulti("BigDecimal->List", dcml, new String[] {"List", "List<java.math.BigDecimal>", "java.util.List"}, list(dcml));
+ simpleTypeConvertTestSingleMulti("BigDecimal->Set", dcml, new String[] {"Set", "Set<java.math.BigDecimal>", "java.util.Set"}, set(dcml));
+ simpleTypeConvertTestSingleMulti("BigDecimal->TimeDuration", new BigDecimal("3661001"), new String[] {"TimeDuration", "org.ofbiz.base.util.TimeDuration"}, duration);
+ simpleTypeConvertTestError("BigDecimal->error", dcml, new String[] {});
+ }
+
+ public void testSqlDate() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, null, localeData, "1969-12-31");
+ simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, "", localeData, "1969-12-31");
+ simpleTypeConvertTestSingleMulti("SqlDate->String", sqlDt, new String[] {"String", "java.lang.String"}, "dd-MM-yyyy", localeData, "31-12-1969");
+ simpleTypeConvertTestSingleMulti("SqlDate->SqlDate", sqlDt, new String[] {"Date", "java.sql.Date"}, new java.sql.Date(-129600000));
+ simpleTypeConvertTestSingleMulti("SqlDate->Timestamp", sqlDt, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(-129600000));
+ simpleTypeConvertTestSingleMulti("SqlDate->List", sqlDt, new String[] {"List", "List<java.sql.Date>", "java.util.List"}, list(sqlDt));
+ simpleTypeConvertTestSingleMulti("SqlDate->Set", sqlDt, new String[] {"Set", "Set<java.sql.Date>", "java.util.Set"}, set(sqlDt));
+ simpleTypeConvertTestSingleMulti("SqlDate->Long", sqlDt, new String[] {"Long", "java.lang.Long"}, Long.valueOf("-129600000"));
+ simpleTypeConvertTestError("SqlDate->error", sqlDt, new String[] {"Time", "java.sql.Time"});
+ }
+
+ public void testSqlTime() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, null, localeData, "12:34:56");
+ simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, "", localeData, "12:34:56");
+ simpleTypeConvertTestSingleMulti("SqlTime->String", sqlTm, new String[] {"String", "java.lang.String"}, "ss:mm:HH", localeData, "56:34:12");
+ simpleTypeConvertTestSingleMulti("SqlTime->SqlTime", sqlTm, new String[] {"Time", "java.sql.Time"}, new java.sql.Time(2096000));
+ simpleTypeConvertTestSingleMulti("SqlTime->Timestamp", sqlTm, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(2096000));
+ simpleTypeConvertTestSingleMulti("SqlTime->List", sqlTm, new String[] {"List", "List<java.sql.Time>", "java.util.List"}, list(sqlTm));
+ simpleTypeConvertTestSingleMulti("SqlTime->Set", sqlTm, new String[] {"Set", "Set<java.sql.Time>", "java.util.Set"}, set(sqlTm));
+ simpleTypeConvertTestError("SqlTime->error", sqlTm, new String[] {"Date", "java.sql.Date"});
+ }
+
+ public void testTimestamp() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, null, localeData, "1970-01-01 12:00:00.781");
+ simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, "", localeData, "1970-01-01 12:00:00.781");
+ simpleTypeConvertTestSingleMulti("Timestamp->String", tstmp, new String[] {"String", "java.lang.String"}, "dd-MM-yyyy HH:mm:ss/SSS", localeData, "01-01-1970 12:00:00/781");
+ simpleTypeConvertTestSingleMulti("Timestamp->Date", tstmp, new String[] {"Date", "java.sql.Date"}, new java.sql.Date(781));
+ simpleTypeConvertTestSingleMulti("Timestamp->Time", tstmp, new String[] {"Time", "java.sql.Time"}, new java.sql.Time(781));
+ simpleTypeConvertTestSingleMulti("Timestamp->Timestamp", tstmp, new String[] {"Timestamp", "java.sql.Timestamp"}, new Timestamp(781));
+ simpleTypeConvertTestSingleMulti("Timestamp->List", tstmp, new String[] {"List", "List<java.sql.Timestamp>", "java.util.List"}, list(tstmp));
+ simpleTypeConvertTestSingleMulti("Timestamp->Set", tstmp, new String[] {"Set", "Set<java.sql.Timestamp>", "java.util.Set"}, set(tstmp));
+ simpleTypeConvertTestSingleMulti("Timestamp->Long", tstmp, new String[] {"Long", "java.lang.Long"}, Long.valueOf("781"));
+ simpleTypeConvertTestError("Timestamp->error", tstmp, new String[] {});
+ }
+
+ public void testBoolean() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Boolean->Boolean", true, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.TRUE);
+ simpleTypeConvertTestSingleMulti("Boolean->Boolean", false, new String[] {"Boolean", "java.lang.Boolean"}, Boolean.FALSE);
+ simpleTypeConvertTestSingleMulti("Boolean->String", true, new String[] {"String", "java.lang.String"}, "true");
+ simpleTypeConvertTestSingleMulti("Boolean->String", false, new String[] {"String", "java.lang.String"}, "false");
+ simpleTypeConvertTestSingleMulti("Boolean->Integer", true, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("1"));
+ simpleTypeConvertTestSingleMulti("Boolean->Integer", false, new String[] {"Integer", "java.lang.Integer"}, Integer.valueOf("0"));
+ simpleTypeConvertTestSingleMulti("Boolean->List", true, new String[] {"List", "List<java.lang.Boolean>", "java.util.List"}, list(true));
+ simpleTypeConvertTestSingleMulti("Boolean->Set", true, new String[] {"Set", "Set<java.lang.Boolean>", "java.util.Set"}, set(true));
+ simpleTypeConvertTestError("Boolean->error", true, new String[] {});
+ }
+
+ public void testLocale() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Locale->Locale", localeData.goodLocale, new String[] {"Locale", "java.util.Locale"}, localeData.goodLocale);
+ simpleTypeConvertTestSingleMulti("Locale->String", localeData.goodLocale, new String[] {"String", "java.lang.String"}, localeData.goodLocale.toString());
+ simpleTypeConvertTestError("Locale->error", localeData.goodLocale, new String[] {});
+ }
+
+ public void testTimeZone() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("TimeZone->TimeZone", localeData.goodTimeZone, new String[] {"TimeZone", "java.util.TimeZone"}, localeData.goodTimeZone);
+ simpleTypeConvertTestSingleMulti("TimeZone->String", localeData.goodTimeZone, new String[] {"String", "java.lang.String"}, localeData.goodTimeZone.getID());
+ simpleTypeConvertTestError("TimeZone->error", localeData.goodTimeZone, new String[] {});
+ }
+
+ // GenericValue, org.ofbiz.entity.GenericValue
+
+ public void testMap() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("Map->Map", map, new String[] {"Map", "java.util.Map"}, map("one", "1", "two", "2", "three", "3"));
+ simpleTypeConvertTestSingleMulti("Map->String", map, new String[] {"String", "java.lang.String"}, "{one=1, two=2, three=3}");
+ simpleTypeConvertTestSingleMulti("Map->List", map, new String[] {"List", "List<java.util.Map>", "java.util.List"}, list(map));
+ simpleTypeConvertTestSingleMulti("Map->Set", map, new String[] {"Set", "Set<java.util.Map>", "java.util.Set"}, set(map));
+ simpleTypeConvertTestError("Map->error", map, new String[] {});
+ }
+
+ public void testList() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("List->String", list, new String[] {"String", "java.lang.String"}, "[one, two, three]");
+ simpleTypeConvertTestSingleMulti("List->List", list, new String[] {"List", "java.util.List"}, list("one", "two", "three"));
+ simpleTypeConvertTestError("List->error", list, new String[] {});
+ }
+
+ /*
+ // java.nio.ByteBuffer
+
+ public void testBuffer() throws GeneralException {
+ CharBuffer cbuf = CharBuffer.wrap("one, two, three");
+ simpleTypeConvertTestSingleMulti("Buffer->ByteBuffer", cbuf, new String[] {"java.nio.ByteBuffer"}, "");
+ }
+ */
+
+ // Node tests are done for all String-> conversions
+ // org.w3c.dom.Node
+
+ public void testTimeDuration() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("TimeDuration->String", duration, new String[] {"String", "java.lang.String"}, "0:0:0:1:1:1:1");
+ simpleTypeConvertTestSingleMulti("TimeDuration->BigDecimal", duration, new String[] {"BigDecimal", "java.math.BigDecimal"}, new BigDecimal("3661001"));
+ simpleTypeConvertTestSingleMulti("TimeDuration->Double", duration, new String[] {"Double", "java.lang.Double"}, Double.valueOf("3661001"));
+ simpleTypeConvertTestSingleMulti("TimeDuration->Float", duration, new String[] {"Float", "java.lang.Float"}, Float.valueOf("3661001"));
+ simpleTypeConvertTestSingleMulti("TimeDuration->Long", duration, new String[] {"Long", "java.lang.Long"}, Long.valueOf("3661001"));
+ simpleTypeConvertTestSingleMulti("TimeDuration->List", duration, new String[] {"List", "java.util.List"}, list(duration));
+ simpleTypeConvertTestSingleMulti("TimeDuration->Set", duration, new String[] {"Set", "java.util.Set"}, set(duration));
+ simpleTypeConvertTestError("TimeDuration->error", duration, new String[] {});
+ }
+
+ public void testOther() throws GeneralException {
+ simpleTypeConvertTestSingleMulti("this->String", this, new String[] {"String", "java.lang.String"}, this.toString());
+ simpleTypeConvertTestError("this->error", this, new String[] {"List", "Map", "Date"});
+ simpleTypeConvertTestNoError("this->no-error", this, new String[] {"List", "Map", "Date"});
+ }
+}
Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ObjectTypeTests.java
('svn:eol-style' removed)
Modified: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ReferenceCleanerTests.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ReferenceCleanerTests.java?rev=1695126&r1=1695125&r2=1695126&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ReferenceCleanerTests.java (original)
+++ ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ReferenceCleanerTests.java Mon Aug 10 16:15:37 2015
@@ -1,76 +1,76 @@
-/*******************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *******************************************************************************/
-package org.ofbiz.base.util.test;
-
-import java.util.HashSet;
-import java.util.concurrent.SynchronousQueue;
-import java.util.concurrent.TimeUnit;
-
-import org.ofbiz.base.lang.SourceMonitored;
-import org.ofbiz.base.test.GenericTestCaseBase;
-import org.ofbiz.base.util.ReferenceCleaner;
-
-@SourceMonitored
-public class ReferenceCleanerTests extends GenericTestCaseBase {
- public ReferenceCleanerTests(String name) {
- super(name);
- }
-
- public void testReferenceCleaner() throws Exception {
- assertStaticHelperClass(ReferenceCleaner.class);
- final SynchronousQueue<String> queue = new SynchronousQueue<String>();
- Object obj = new Object();
- ReferenceCleaner.Soft<Object> soft = new ReferenceCleaner.Soft<Object>(obj) {
- public void remove() throws Exception {
- queue.put("soft");
- Thread.currentThread().interrupt();
- }
- };
- ReferenceCleaner.Weak<Object> weak = new ReferenceCleaner.Weak<Object>(obj) {
- public void remove() throws Exception {
- queue.put("weak");
- throw new RuntimeException();
- }
- };
- new ReferenceCleaner.Phantom<Object>(obj) {
- public void remove() throws Exception {
- queue.put("phantom");
- }
- };
- HashSet<String> foundEvents = new HashSet<String>();
- useAllMemory();
- assertSame("still-soft", obj, soft.get());
- assertSame("still-weak", obj, weak.get());
- assertNull("no event", queue.poll(100, TimeUnit.MILLISECONDS));
- obj = null;
- useAllMemory();
- foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
- foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
- foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
- useAllMemory();
- foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
- foundEvents.remove(null);
- assertFalse("no null", foundEvents.contains(null));
- assertNull("no-soft", soft.get());
- assertNull("no-weak", weak.get());
- assertTrue("soft event", foundEvents.contains("soft"));
- assertTrue("weak event", foundEvents.contains("weak"));
- assertTrue("phantom event", foundEvents.contains("phantom"));
- }
-}
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.base.util.test;
+
+import java.util.HashSet;
+import java.util.concurrent.SynchronousQueue;
+import java.util.concurrent.TimeUnit;
+
+import org.ofbiz.base.lang.SourceMonitored;
+import org.ofbiz.base.test.GenericTestCaseBase;
+import org.ofbiz.base.util.ReferenceCleaner;
+
+@SourceMonitored
+public class ReferenceCleanerTests extends GenericTestCaseBase {
+ public ReferenceCleanerTests(String name) {
+ super(name);
+ }
+
+ public void testReferenceCleaner() throws Exception {
+ assertStaticHelperClass(ReferenceCleaner.class);
+ final SynchronousQueue<String> queue = new SynchronousQueue<String>();
+ Object obj = new Object();
+ ReferenceCleaner.Soft<Object> soft = new ReferenceCleaner.Soft<Object>(obj) {
+ public void remove() throws Exception {
+ queue.put("soft");
+ Thread.currentThread().interrupt();
+ }
+ };
+ ReferenceCleaner.Weak<Object> weak = new ReferenceCleaner.Weak<Object>(obj) {
+ public void remove() throws Exception {
+ queue.put("weak");
+ throw new RuntimeException();
+ }
+ };
+ new ReferenceCleaner.Phantom<Object>(obj) {
+ public void remove() throws Exception {
+ queue.put("phantom");
+ }
+ };
+ HashSet<String> foundEvents = new HashSet<String>();
+ useAllMemory();
+ assertSame("still-soft", obj, soft.get());
+ assertSame("still-weak", obj, weak.get());
+ assertNull("no event", queue.poll(100, TimeUnit.MILLISECONDS));
+ obj = null;
+ useAllMemory();
+ foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
+ foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
+ foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
+ useAllMemory();
+ foundEvents.add(queue.poll(100, TimeUnit.MILLISECONDS));
+ foundEvents.remove(null);
+ assertFalse("no null", foundEvents.contains(null));
+ assertNull("no-soft", soft.get());
+ assertNull("no-weak", weak.get());
+ assertTrue("soft event", foundEvents.contains("soft"));
+ assertTrue("weak event", foundEvents.contains("weak"));
+ assertTrue("phantom event", foundEvents.contains("phantom"));
+ }
+}
Propchange: ofbiz/trunk/framework/base/src/org/ofbiz/base/util/test/ReferenceCleanerTests.java
('svn:eol-style' removed)