Author: mthl
Date: Sat May 25 21:15:04 2019 New Revision: 1860016 URL: http://svn.apache.org/viewvc?rev=1860016&view=rev Log: Improved: Turn ‘TimeDurationTests’ into a unit test class (OFBIZ-11067) Added: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java (with props) Removed: ofbiz/ofbiz-framework/trunk/framework/base/src/main/java/org/apache/ofbiz/base/util/test/TimeDurationTests.java Modified: ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml Added: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java?rev=1860016&view=auto ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java (added) +++ ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java Sat May 25 21:15:04 2019 @@ -0,0 +1,180 @@ +/* + * 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.apache.ofbiz.base.util; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotSame; + +import org.apache.ofbiz.base.util.TimeDuration; +import org.junit.Test; + +import com.ibm.icu.util.Calendar; +import com.ibm.icu.util.TimeZone; + +public class TimeDurationTests { + private static final Calendar zero = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + + static { + zero.clear(); + zero.setTimeInMillis(0); + } + + private static <T extends Comparable<T>> int doCompare(T comparable, T other) { + return comparable.compareTo(other); + } + + private static void assertDurationFields(String label, int years, int months, int days, int hours, int minutes, + int seconds, int milliseconds, String string, TimeDuration duration, boolean isNegative, boolean isZero) { + assertEquals(label + ".years()", years, duration.years()); + assertEquals(label + ".months()", months, duration.months()); + assertEquals(label + ".days()", days, duration.days()); + assertEquals(label + ".hours()", hours, duration.hours()); + assertEquals(label + ".minutes()", minutes, duration.minutes()); + assertEquals(label + ".seconds()", seconds, duration.seconds()); + assertEquals(label + ".milliseconds()", milliseconds, duration.milliseconds()); + assertEquals(label + ".isNegative()", isNegative, duration.isNegative()); + assertEquals(label + ".toString()", string, duration.toString()); + assertEquals(label + ".equals(from/to long)", duration, TimeDuration.fromLong(TimeDuration.toLong(duration))); + assertEquals(label + ".equals(from/to number)", duration, + TimeDuration.fromNumber(TimeDuration.toLong(duration))); + assertEquals(label + ".isZero", isZero, duration.isZero()); + if (isZero) { + assertEquals(label + ".compareTo(zero) == 0", 0, doCompare(TimeDuration.ZeroTimeDuration, duration)); + assertEquals(label + ".compareTo(zero) == 0", 0, doCompare(duration, TimeDuration.ZeroTimeDuration)); + } else { + assertNotSame(label + ".compareTo(zero) != 0", 0, doCompare(TimeDuration.ZeroTimeDuration, duration)); + assertNotSame(label + ".compareTo(zero) != 0", 0, doCompare(duration, TimeDuration.ZeroTimeDuration)); + } + } + + private static TimeDuration assertDurationLoop(String label, Calendar right, int years, int months, int days, + int hours, int minutes, int seconds, int milliseconds, TimeDuration lastString, boolean isNegative) { + StringBuilder sb = new StringBuilder(); + sb.append(years != 0 ? years : ""); + sb.append(':').append(months != 0 ? months : ""); + sb.append(':').append(days != 0 ? days : ""); + sb.append(':').append(hours != 0 ? hours : ""); + sb.append(':').append(minutes != 0 ? minutes : ""); + sb.append(':').append(seconds != 0 ? seconds : ""); + sb.append(':').append(milliseconds != 0 ? milliseconds : ""); + String durationString = + years + ":" + months + ":" + days + ":" + hours + ":" + minutes + ":" + seconds + ":" + milliseconds; + TimeDuration stringDuration = TimeDuration.parseDuration(sb.toString()); + right.setTimeInMillis(0); + if (years != 0) { + right.set(Calendar.YEAR, 1970 + Math.abs(years)); + } + if (months != 0) { + right.set(Calendar.MONTH, Math.abs(months)); + } + right.set(Calendar.DAY_OF_MONTH, Math.abs(days) + 1); + if (hours != 0) { + right.set(Calendar.HOUR, Math.abs(hours)); + } + if (minutes != 0) { + right.set(Calendar.MINUTE, Math.abs(minutes)); + } + if (seconds != 0) { + right.set(Calendar.SECOND, Math.abs(seconds)); + } + if (milliseconds != 0) { + right.set(Calendar.MILLISECOND, Math.abs(milliseconds)); + } + TimeDuration calDuration = isNegative ? new TimeDuration(right, zero) : new TimeDuration(zero, right); + assertDurationFields(label + "(parseString[0])", years, months, days, hours, minutes, seconds, milliseconds, + durationString, TimeDuration.parseDuration(durationString), isNegative, false); + assertDurationFields(label + "(parseString)", years, months, days, hours, minutes, seconds, milliseconds, + durationString, stringDuration, isNegative, false); + assertDurationFields(label + "(cal)", years, months, days, hours, minutes, seconds, milliseconds, + durationString, calDuration, isNegative, false); + Calendar added = calDuration.addToCalendar((Calendar) zero.clone()); + TimeDuration addDuration = new TimeDuration(zero, added); + assertDurationFields(label + "(cal[add])", years, months, days, hours, minutes, seconds, milliseconds, + durationString, addDuration, isNegative, false); + assertEquals(label + ".compareTo(string, cal)", 0, doCompare(stringDuration, calDuration)); + assertEquals(label + ".compareTo(string, string)", 0, doCompare(stringDuration, stringDuration)); + assertEquals(label + ".compareTo(cal, cal)", 0, doCompare(calDuration, calDuration)); + assertEquals(label + ".compareTo(cal, string)", 0, doCompare(calDuration, stringDuration)); + assertEquals(label + ".equals(cal, cal)", calDuration, calDuration); + assertEquals(label + ".equals(cal, string)", calDuration, stringDuration); + assertEquals(label + ".equals(string, cal)", stringDuration, calDuration); + assertEquals(label + ".equals(string, string)", stringDuration, stringDuration); + if (lastString != null) { + assertFalse(label + ".not-equals(string, lastString)", stringDuration.equals(lastString)); + } + return stringDuration; + } + + public static void assertDuration(String label, int years, int months, int days, int hours, int minutes, + int seconds, int milliseconds) { + TimeDuration lastString = null; + Calendar right = (Calendar) zero.clone(); + for (int i = 1; i < 12; i++) { + lastString = assertDurationLoop(i + " " + label, right, i * years, i * months, i * days, i * hours, + i * minutes, i * seconds, i * milliseconds, lastString, false); + } + lastString = null; + for (int i = -2; i > -12; i--) { + lastString = assertDurationLoop(i + " " + label, right, i * years, i * months, i * days, i * hours, + i * minutes, i * seconds, i * milliseconds, lastString, true); + } + } + + @Test + public void testDuration() throws Exception { + Calendar now = Calendar.getInstance(); + TimeDuration zeroDuration = TimeDuration.ZeroTimeDuration; + assertFalse("zero equals null", zeroDuration.equals(null)); + Calendar newTime = (Calendar) now.clone(); + zeroDuration.addToCalendar(newTime); + assertEquals("zero same calendar", now, newTime); + assertDurationFields("zero(same zero calendar)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + new TimeDuration(zero, zero), false, true); + assertDurationFields("zero(same now calendar)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + new TimeDuration(now, now), false, true); + assertDurationFields("zero(empty parse)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + TimeDuration.parseDuration(""), false, true); + assertDurationFields("zero(zero parse)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + TimeDuration.parseDuration("0:0:0:0:0:0:0"), false, true); + assertDurationFields("zero(from null number)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + TimeDuration.fromNumber(null), false, true); + assertDurationFields("zero(from null number)", 0, 0, 0, 0, 0, 0, 0, "0:0:0:0:0:0:0", + TimeDuration.fromNumber(null), false, true); + assertDuration("millisecond", 0, 0, 0, 0, 0, 0, 1); + assertDuration("second", 0, 0 ,0 ,0, 0, 1, 0); + assertDuration("minute", 0, 0, 0, 0, 1, 0, 0); + assertDuration("hour", 0, 0, 0, 1, 0, 0, 0); + assertDuration("day", 0, 0, 1, 0, 0, 0, 0); + assertDuration("month", 0, 1, 0, 0, 0, 0, 0); + assertDuration("year", 1, 0, 0, 0, 0, 0, 0); + Calendar start = new com.ibm.icu.util.GregorianCalendar(1967, 1, 1, 0, 0, 0); + start.set(Calendar.MILLISECOND, 0); + Calendar end = (Calendar) start.clone(); + end.add(Calendar.MILLISECOND, 1); + end.add(Calendar.SECOND, 1); + end.add(Calendar.MINUTE, 1); + end.add(Calendar.HOUR_OF_DAY, 1); + end.add(Calendar.DAY_OF_MONTH, 1); + end.add(Calendar.MONTH, 1); + end.add(Calendar.YEAR, 1); + assertDurationFields("pre-epoch elapsed time", 1, 1, 1, 1, 1, 1, 1, "1:1:1:1:1:1:1", + new TimeDuration(start, end), false, false); + } +} Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java ------------------------------------------------------------------------------ svn:keywords = Date Rev Author URL Id Propchange: ofbiz/ofbiz-framework/trunk/framework/base/src/test/java/org/apache/ofbiz/base/util/TimeDurationTests.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml?rev=1860016&r1=1860015&r2=1860016&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml (original) +++ ofbiz/ofbiz-framework/trunk/framework/base/testdef/basetests.xml Sat May 25 21:15:04 2019 @@ -28,7 +28,6 @@ <junit-test-suite class-name="org.apache.ofbiz.base.util.test.UtilHttpTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.string.test.FlexibleStringExpanderTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.collections.test.FlexibleMapAccessorTests"/> - <junit-test-suite class-name="org.apache.ofbiz.base.util.test.TimeDurationTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.util.cache.test.UtilCacheTests"/> <junit-test-suite class-name="org.apache.ofbiz.base.conversion.test.TestBooleanConverters"/> <junit-test-suite class-name="org.apache.ofbiz.base.conversion.test.TestJSONConverters"/> |
Free forum by Nabble | Edit this page |