예제 #1
0
 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);
   assertFalse(
       label + ".not-equals(string, this)", stringDuration.equals(TimeDurationTests.class));
   if (lastString != null) {
     assertFalse(label + ".not-equals(string, lastString)", stringDuration.equals(lastString));
   }
   return stringDuration;
 }
예제 #2
0
 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);
 }