/*
This file is part of RouteConverter.
RouteConverter is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
RouteConverter is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with RouteConverter; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Copyright (C) 2007 Christian Pesch. All Rights Reserved.
*/
package slash.common;
import slash.common.type.CompactCalendar;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
import static slash.common.type.CompactCalendar.UTC;
public abstract class TestCase extends junit.framework.TestCase {
private static final DateFormat LONG_DATE_TIME_FORMAT = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, Locale.ENGLISH);
public static void assertNotEquals(Object expected, Object was) {
assertNotEquals("expected:<" + expected + "> but was:<" + was + ">", expected, was);
}
public static void assertNotEquals(String message, Object expected, Object was) {
assertTrue(message, !expected.equals(was));
}
public static void assertDoubleEquals(double expected, double was) {
assertEquals(expected, was);
}
public static void assertDoubleArrayEquals(double[] expected, double[] was) {
assertNotNull(was);
assertEquals(expected.length, was.length);
for (int i = 0; i < expected.length; i++) {
double e = expected[i];
double w = was[i];
assertEquals(e, w);
}
}
public static void assertIntArrayEquals(int[] expected, int[] was) {
assertEquals(expected.length, was.length);
for (int i = 0; i < expected.length; i++) {
int e = expected[i];
int w = was[i];
assertEquals(e, w);
}
}
public static void assertEquals(long expected, Long was) {
assertEquals(new Long(expected), was);
}
public static void assertNearBy(double expected, double actual) {
assertNearBy(expected, actual, 0.000005);
}
public static void assertNearBy(double expected, double actual, double offset) {
if (expected != actual) {
double expectedPlusOffset = expected * (1.0 + offset);
if (expectedPlusOffset == 0.0)
expectedPlusOffset = offset;
assertTrue(actual + " is not within +" + offset + " of " + expected + " to " + expectedPlusOffset,
actual > 0.0 ? actual < expectedPlusOffset : actual > expectedPlusOffset);
double expectedMinusOffset = expected * (1.0 - offset);
if (expectedMinusOffset == 0.0)
expectedMinusOffset = -offset;
assertTrue(actual + " is not within -" + offset + " of " + expected + " to " + expectedMinusOffset,
actual > 0.0 ? actual > expectedMinusOffset : actual < expectedMinusOffset);
}
}
public static void assertCalendarEquals(Calendar expected, Calendar actual) {
String expectedString = LONG_DATE_TIME_FORMAT.format(expected.getTime());
String actualString = LONG_DATE_TIME_FORMAT.format(actual.getTime());
assertEquals(expectedString, actualString);
}
public static void assertCalendarEquals(CompactCalendar expected, CompactCalendar actual) {
assertCalendarEquals(expected.getCalendar(), actual.getCalendar());
}
public static CompactCalendar calendar(int year, int month, int day, int hour, int minute, int second, int millisecond, String timeZone) {
return calendar(year, month, day, hour, minute, second, millisecond, TimeZone.getTimeZone(timeZone));
}
@SuppressWarnings("MagicConstant")
public static CompactCalendar calendar(int year, int month, int day, int hour, int minute, int second, int millisecond, TimeZone timeZone) {
Calendar result = Calendar.getInstance(timeZone);
result.set(year, month - 1, day, hour, minute, second);
result.set(Calendar.MILLISECOND, millisecond);
return CompactCalendar.fromCalendar(result);
}
public static CompactCalendar calendar(int year, int month, int day, int hour, int minute, int second, int millisecond) {
return calendar(year, month, day, hour, minute, second, millisecond, UTC);
}
public static CompactCalendar calendar(int year, int month, int day, int hour, int minute, int second) {
return calendar(year, month, day, hour, minute, second, 0);
}
public static CompactCalendar localCalendar(long millisecond) {
return calendar(millisecond, TimeZone.getDefault());
}
public static CompactCalendar utcCalendar(long millisecond) {
return calendar(millisecond, UTC);
}
private static CompactCalendar calendar(long millisecond, TimeZone timeZone) {
Calendar result = Calendar.getInstance(timeZone);
result.setTimeInMillis(millisecond);
result.setLenient(false);
return CompactCalendar.fromCalendar(result);
}
}