001: package org.apache.commons.net.ntp;
002:
003: /* ====================================================================
004: *
005: * The Apache Software License, Version 1.1
006: *
007: * Copyright (c) 2003 The Apache Software Foundation. All rights
008: * reserved.
009: *
010: * Redistribution and use in source and binary forms, with or without
011: * modification, are permitted provided that the following conditions
012: * are met:
013: *
014: * 1. Redistributions of source code must retain the above copyright
015: * notice, this list of conditions and the following disclaimer.
016: *
017: * 2. Redistributions in binary form must reproduce the above copyright
018: * notice, this list of conditions and the following disclaimer in
019: * the documentation and/or other materials provided with the
020: * distribution.
021: *
022: * 3. The end-user documentation included with the redistribution, if
023: * any, must include the following acknowlegement:
024: * "This product includes software developed by the
025: * Apache Software Foundation (http://www.apache.org/)."
026: * Alternately, this acknowlegement may appear in the software itself,
027: * if and wherever such third-party acknowlegements normally appear.
028: *
029: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
030: * Foundation" must not be used to endorse or promote products derived
031: * from this software without prior written permission. For written
032: * permission, please contact apache@apache.org.
033: *
034: * 5. Products derived from this software may not be called "Apache"
035: * nor may "Apache" appear in their names without prior written
036: * permission of the Apache Group.
037: *
038: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
039: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
040: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
041: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
042: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
043: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
044: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
045: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
046: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
047: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
048: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
049: * SUCH DAMAGE.
050: * ====================================================================
051: *
052: * This software consists of voluntary contributions made by many
053: * individuals on behalf of the Apache Software Foundation. For more
054: * information on the Apache Software Foundation, please see
055: * <http://www.apache.org/>.
056: */
057:
058: import java.util.Date;
059: import java.util.Calendar;
060: import junit.framework.TestCase;
061: import org.apache.commons.net.ntp.TimeStamp;
062:
063: /**
064: * Test class that validates assertions for the basic TimeStamp operations and comparisons.
065: *
066: * @author Jason Mathews, MITRE Corp
067: */
068: public class TimeStampTest extends TestCase {
069:
070: private static final String TIME1 = "c1a9ae1c.cf6ac48d"; // Tue, Dec 17 2002 14:07:24.810 UTC
071: private static final String TIME2 = "c1a9ae1c.cf6ac48f"; // Tue, Dec 17 2002 14:07:24.810 UTC
072: private static final String TIME3 = "c1a9ae1d.cf6ac48e"; // Tue, Dec 17 2002 14:07:25.810 UTC
073:
074: /***
075: * main for running the test.
076: ***/
077: public static void main(String args[]) {
078: junit.textui.TestRunner.run(TimeStampTest.class);
079: }
080:
081: public void testCompare() {
082:
083: TimeStamp ts1 = new TimeStamp(TIME1); // Tue, Dec 17 2002 14:07:24.810 UTC
084: TimeStamp ts2 = new TimeStamp(TIME1);
085: TimeStamp ts3 = new TimeStamp(TIME2); // Tue, Dec 17 2002 14:07:24.810 UTC
086: TimeStamp ts4 = new TimeStamp(TIME3); // Tue, Dec 17 2002 14:07:25.810 UTC
087:
088: // do assertion tests on TimeStamp class
089: assertEquals("equals(1,2)", ts1, ts2);
090: assertTrue("compareTo(1,2)", ts1.compareTo(ts2) == 0);
091: assertEquals("ntpValue(1,2)", ts1.ntpValue(), ts2.ntpValue());
092: assertEquals("hashCode(1,2)", ts1.hashCode(), ts2.hashCode());
093: assertEquals("ts1==ts1", ts1, ts1);
094:
095: // timestamps in ts1 (TIME1) and ts3 (TIME2) are only off by the smallest
096: // fraction of a second (~200 picoseconds) so the times are not equal but
097: // when converted to Java dates (in milliseconds) they will be equal.
098: assertTrue("ts1 != ts3", !ts1.equals(ts3));
099: assertTrue("compareTo(1,3)", ts1.compareTo(ts3) == -1);
100: assertEquals("seconds", ts1.getSeconds(), ts3.getSeconds());
101: assertTrue("fraction", ts1.getFraction() != ts3.getFraction());
102: assertTrue("ntpValue(1,3)", ts1.ntpValue() != ts3.ntpValue());
103: assertTrue("hashCode(1,3)", ts1.hashCode() != ts3.hashCode());
104: long time1 = ts1.getTime();
105: long time3 = ts3.getTime();
106: assertEquals("equals(time1,3)", time1, time3); // ntpTime1 != ntpTime3 but JavaTime(t1) == JavaTime(t3)...
107:
108: assertTrue("ts3 != ts4", !ts3.equals(ts4));
109: assertTrue("time3 != ts4.time", time3 != ts4.getTime());
110: }
111:
112: public void testUTCString() {
113: TimeStamp ts1 = new TimeStamp(TIME1); // Tue, Dec 17 2002 14:07:24.810 UTC
114: String actual = ts1.toUTCString();
115: assertEquals("Tue, Dec 17 2002 14:07:24.810 UTC", actual);
116: }
117:
118: public void testDateConversion() {
119: // convert current date to NtpTimeStamp then compare Java date
120: // computed from NTP timestamp with original Java date.
121: Calendar refCal = Calendar.getInstance(java.util.TimeZone
122: .getTimeZone("UTC"));
123: Date refDate = refCal.getTime();
124: TimeStamp ts = new TimeStamp(refDate);
125: assertEquals("refDate.getTime()", refDate.getTime(), ts
126: .getTime());
127: Date tsDate = ts.getDate();
128: assertEquals(refDate, tsDate);
129: }
130:
131: }
|