/* * The contents of this file are subject to the Mozilla Public License * Version 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations under * the License. * * The Original Code is OpenELIS code. * * Copyright (C) The Minnesota Department of Health. All Rights Reserved. * * Contributor(s): CIRG, University of Washington, Seattle WA. */ package us.mn.state.health.lims.common.util; import static java.util.Calendar.DAY_OF_YEAR; import static java.util.Calendar.DECEMBER; import static java.util.Calendar.FEBRUARY; import static java.util.Calendar.HOUR_OF_DAY; import static java.util.Calendar.JANUARY; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import java.util.Calendar; import java.util.GregorianCalendar; import org.junit.Before; import org.junit.Test; /** * @author pahill (pahill@uw.edu) * @since May 17, 2011 */ public class DateUtilTest { private Calendar end = new GregorianCalendar(); private Calendar start = new GregorianCalendar(); @Before public void setup() { end.set(HOUR_OF_DAY, 0); start.set(HOUR_OF_DAY, 0); } @Test public void testAgeInWeeksBasic() throws Exception { start.set(2011, JANUARY, 1); end.set(2011, JANUARY, 1); assertEquals(0, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set(2011, JANUARY, 1); end.set(2011, JANUARY, 7); assertEquals(0, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set(2011, JANUARY, 1); end.set(2011, JANUARY, 8); assertEquals(1, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set(2011, JANUARY, 1); end.add(DAY_OF_YEAR, 5); assertEquals(1, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set(2011, JANUARY, 1); end.add(DAY_OF_YEAR, 3); assertEquals(2, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); assertEquals(-2, DateUtil.getAgeInWeeks(end.getTime(), start.getTime())); } @Test public void testAgeInWeeksDifferentYears() { start.set( 2010, JANUARY, 1); end.set( 2011, JANUARY, 1); assertEquals(52, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 26); end.set( 2011, JANUARY, 1); assertEquals(0, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 25); end.set( 2011, JANUARY, 1); assertEquals(1, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 24); end.set( 2011, JANUARY, 1); assertEquals(1, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 17); end.set( 2011, JANUARY, 1); assertEquals(2, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); end.set( 2010, DECEMBER, 17); start.set( 2011, JANUARY, 1); assertEquals(-2, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); start.set( 2009, DECEMBER, 17); end.set( 2011, JANUARY, 1); assertEquals(54, DateUtil.getAgeInWeeks(start.getTime(), end.getTime())); } @Test public void testAgeInMonths() { start.set( 2010, DECEMBER, 17); end.set( 2011, JANUARY, 1); assertEquals(0, DateUtil.getAgeInMonths(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 17); end.set( 2011, JANUARY, 17); assertEquals(1, DateUtil.getAgeInMonths(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 17); end.set( 2011, JANUARY, 27); assertEquals(1, DateUtil.getAgeInMonths(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 17); end.set( 2011, FEBRUARY, 30); assertEquals(2, DateUtil.getAgeInMonths(start.getTime(), end.getTime())); start.set( 2010, DECEMBER, 17); end.set( 2011, DECEMBER, 30); assertEquals(12, DateUtil.getAgeInMonths(start.getTime(), end.getTime())); } @Test public void testAgeInYears() { start.set( 2011, JANUARY, 1); end.set( 2011, JANUARY, 17); assertEquals(0, DateUtil.getAgeInYears(start.getTime(), end.getTime())); start.set( 2011, JANUARY, 17); end.set( 2011, DECEMBER, 1); assertEquals(0, DateUtil.getAgeInYears(start.getTime(), end.getTime())); start.set( 2011, JANUARY, 17); end.set( 2012, JANUARY, 16); assertEquals(0, DateUtil.getAgeInYears(start.getTime(), end.getTime())); start.set( 2011, JANUARY, 17); end.set( 2012, JANUARY, 17); assertEquals(1, DateUtil.getAgeInYears(start.getTime(), end.getTime())); start.set( 2011, JANUARY, 17); end.set( 2012, JANUARY, 18); assertEquals(1, DateUtil.getAgeInYears(start.getTime(), end.getTime())); start.set( 2011, JANUARY, 17); end.set( 2021, JANUARY, 18); assertEquals(10, DateUtil.getAgeInYears(start.getTime(), end.getTime())); } @Test public void stringSubstitution(){ assertEquals("/bc", StringUtil.replaceCharAtIndex("abc",'/', 0)); assertEquals("a/c", StringUtil.replaceCharAtIndex("abc",'/', 1)); assertEquals("ab/", StringUtil.replaceCharAtIndex("abc",'/', 2)); assertEquals("abc", StringUtil.replaceCharAtIndex("abc",'/', 3)); assertEquals("abc", StringUtil.replaceCharAtIndex("abc",'/', -1)); assertEquals("", StringUtil.replaceCharAtIndex("",'/', 3)); assertEquals(null, StringUtil.replaceCharAtIndex(null,'/', 3)); } @Test public void timeStampConversion(){ assertEquals("01/01/2010", DateUtil.normalizeAmbiguousDate("xx/xx/2010")); assertEquals("01/20/2010", DateUtil.normalizeAmbiguousDate("xx/20/2010")); assertEquals("01/01/2010", DateUtil.normalizeAmbiguousDate("xX/xx/2010")); assertEquals("01/01/2010", DateUtil.normalizeAmbiguousDate("xX/xxX2010")); assertEquals("01/01/2008", DateUtil.normalizeAmbiguousDate("01/01x2008")); assertEquals("01/01/2008", DateUtil.normalizeAmbiguousDate("1/1/2008")); assertEquals("01/01/2008", DateUtil.normalizeAmbiguousDate("1x/1x/2008")); assertEquals("01/01/2008", DateUtil.normalizeAmbiguousDate("1x/1xx/2008")); assertNull(DateUtil.normalizeAmbiguousDate("1/1//2008")); assertNull(DateUtil.normalizeAmbiguousDate("01/11/xx08")); assertNull(DateUtil.normalizeAmbiguousDate("01/11/08")); } }