// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2006 by R. Pito Salas
//
// This program 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.
//
// This program 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 this program;
// if not, write to the Free Software Foundation, Inc., 59 Temple Place,
// Suite 330, Boston, MA 02111-1307 USA
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: TestDateUtils.java,v 1.5 2007/07/18 15:24:45 spyromus Exp $
//
package com.salas.bb.utils;
import junit.framework.TestCase;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* @see DateUtils
*/
public class TestDateUtils extends TestCase
{
/**
* @see DateUtils#millisToString
*/
public void testMillisToString()
{
assertEquals("0 ms", DateUtils.millisToString(createTimeSpan(0, 0, 0, 0, 0)));
assertEquals("1 ms", DateUtils.millisToString(createTimeSpan(0, 0, 0, 0, 1)));
assertEquals("1 sec, 1 ms", DateUtils.millisToString(createTimeSpan(0, 0, 0, 1, 1)));
assertEquals("1 min, 1 sec, 1 ms", DateUtils.millisToString(createTimeSpan(0, 0, 1, 1, 1)));
assertEquals("1 hr, 1 min, 1 sec, 1 ms",
DateUtils.millisToString(createTimeSpan(0, 1, 1, 1, 1)));
assertEquals("1 day, 1 hr, 1 min, 1 sec, 1 ms",
DateUtils.millisToString(createTimeSpan(1, 1, 1, 1, 1)));
assertEquals("1 day", DateUtils.millisToString(createTimeSpan(1, 0, 0, 0, 0)));
assertEquals("2 days", DateUtils.millisToString(createTimeSpan(2, 0, 0, 0, 0)));
assertEquals("1 hr", DateUtils.millisToString(createTimeSpan(0, 1, 0, 0, 0)));
assertEquals("2 hrs", DateUtils.millisToString(createTimeSpan(0, 2, 0, 0, 0)));
assertEquals("1 min", DateUtils.millisToString(createTimeSpan(0, 0, 1, 0, 0)));
assertEquals("2 mins", DateUtils.millisToString(createTimeSpan(0, 0, 2, 0, 0)));
assertEquals("1 sec", DateUtils.millisToString(createTimeSpan(0, 0, 0, 1, 0)));
assertEquals("2 secs", DateUtils.millisToString(createTimeSpan(0, 0, 0, 2, 0)));
assertEquals("1 ms", DateUtils.millisToString(createTimeSpan(0, 0, 0, 0, 1)));
assertEquals("2 ms", DateUtils.millisToString(createTimeSpan(0, 0, 0, 0, 2)));
assertEquals("1 hr, 2 secs", DateUtils.millisToString(createTimeSpan(0, 1, 0, 2, 0)));
assertEquals("1 day, 2 mins, 3 ms", DateUtils.millisToString(createTimeSpan(1, 0, 2, 0, 3)));
}
/**
* @see DateUtils#trimTime
*/
public void testTrimTime()
{
long time = DateUtils.trimTime(createTime(2005, 0, 3, 2, 3, 4));
assertEquals(new Date(time).toString(), createTime(2005, 0, 3, 0, 0, 0), time);
}
/**
* @see DateUtils#dayDiff
*/
public void testDayDiff()
{
long t_010105_2359 = createTime(2005, 0, 1, 23, 59, 0);
long t_010205_0000 = createTime(2005, 0, 2, 0, 0, 0);
long t_010205_2359 = createTime(2005, 0, 2, 23, 59, 0);
long t_010305_0000 = createTime(2005, 0, 3, 0, 0, 0);
assertEquals(1, DateUtils.dayDiff(t_010105_2359, t_010205_0000));
assertEquals(1, DateUtils.dayDiff(t_010205_0000, t_010105_2359));
assertEquals(1, DateUtils.dayDiff(t_010105_2359, t_010205_2359));
assertEquals(1, DateUtils.dayDiff(t_010205_2359, t_010105_2359));
assertEquals(0, DateUtils.dayDiff(t_010205_0000, t_010205_2359));
assertEquals(0, DateUtils.dayDiff(t_010205_2359, t_010205_0000));
assertEquals(2, DateUtils.dayDiff(t_010105_2359, t_010305_0000));
assertEquals(2, DateUtils.dayDiff(t_010305_0000, t_010105_2359));
assertEquals(1, DateUtils.dayDiff(t_010205_0000, t_010305_0000));
assertEquals(1, DateUtils.dayDiff(t_010305_0000, t_010205_0000));
}
/**
* @see DateUtils#dayDiffFromToday
*/
public void testDayDiffFromToday()
{
// Required contract
assertEquals(DateUtils.dayDiff(0, System.currentTimeMillis()),
DateUtils.dayDiffFromToday(null));
Calendar cal = new GregorianCalendar();
cal.roll(Calendar.DAY_OF_YEAR, 1);
Date tomorrow = cal.getTime();
assertEquals(1, DateUtils.dayDiffFromToday(tomorrow));
cal = new GregorianCalendar();
cal.roll(Calendar.DAY_OF_YEAR, -2);
Date beforeYesterday = cal.getTime();
assertEquals(2, DateUtils.dayDiffFromToday(beforeYesterday));
}
/**
* Tests converting local time to UTC / GMT.
*/
public void testLocalToUTC()
{
long local = System.currentTimeMillis();
long utc = DateUtils.localToUTC(local);
assertFalse(local == utc);
}
// Returns time/date built from components.
private long createTime(int year, int month, int day, int hours, int min, int sec)
{
return new GregorianCalendar(year, month, day, hours, min, sec).getTimeInMillis();
}
// Returns time span built from components.
private long createTimeSpan(int days, int hours, int minutes, int seconds, int millis)
{
long time = days * Constants.MILLIS_IN_DAY;
time += hours * Constants.MILLIS_IN_HOUR;
time += minutes * Constants.MILLIS_IN_MINUTE;
time += seconds * Constants.MILLIS_IN_SECOND;
time += millis;
return time;
}
}