1 package org.apache.commons.net.ntp; 2 3 /* ==================================================================== 4 * 5 * The Apache Software License, Version 1.1 6 * 7 * Copyright (c) 2003 The Apache Software Foundation. All rights 8 * reserved. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 14 * 1. Redistributions of source code must retain the above copyright 15 * notice, this list of conditions and the following disclaimer. 16 * 17 * 2. Redistributions in binary form must reproduce the above copyright 18 * notice, this list of conditions and the following disclaimer in 19 * the documentation and/or other materials provided with the 20 * distribution. 21 * 22 * 3. The end-user documentation included with the redistribution, if 23 * any, must include the following acknowlegement: 24 * "This product includes software developed by the 25 * Apache Software Foundation (http://www.apache.org/)." 26 * Alternately, this acknowlegement may appear in the software itself, 27 * if and wherever such third-party acknowlegements normally appear. 28 * 29 * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software 30 * Foundation" must not be used to endorse or promote products derived 31 * from this software without prior written permission. For written 32 * permission, please contact apache@apache.org. 33 * 34 * 5. Products derived from this software may not be called "Apache" 35 * nor may "Apache" appear in their names without prior written 36 * permission of the Apache Group. 37 * 38 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 39 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 40 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 41 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 42 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 43 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 44 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 45 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 46 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 47 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 48 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 49 * SUCH DAMAGE. 50 * ==================================================================== 51 * 52 * This software consists of voluntary contributions made by many 53 * individuals on behalf of the Apache Software Foundation. For more 54 * information on the Apache Software Foundation, please see 55 * <http://www.apache.org/>. 56 */ 57 58 import java.util.Date; 59 import java.util.Calendar; 60 import junit.framework.TestCase; 61 import org.apache.commons.net.ntp.TimeStamp; 62 63 /** 64 * Test class that validates assertions for the basic TimeStamp operations and comparisons. 65 * 66 * @author Jason Mathews, MITRE Corp 67 */ 68 public class TimeStampTest extends TestCase { 69 70 private static final String TIME1 = "c1a9ae1c.cf6ac48d"; // Tue, Dec 17 2002 14:07:24.810 UTC 71 private static final String TIME2 = "c1a9ae1c.cf6ac48f"; // Tue, Dec 17 2002 14:07:24.810 UTC 72 private static final String TIME3 = "c1a9ae1d.cf6ac48e"; // Tue, Dec 17 2002 14:07:25.810 UTC 73 74 /*** 75 * main for running the test. 76 ***/ 77 public static void main(String args[]) 78 { 79 junit.textui.TestRunner.run(TimeStampTest.class); 80 } 81 82 public void testCompare() { 83 84 TimeStamp ts1 = new TimeStamp(TIME1); // Tue, Dec 17 2002 14:07:24.810 UTC 85 TimeStamp ts2 = new TimeStamp(TIME1); 86 TimeStamp ts3 = new TimeStamp(TIME2); // Tue, Dec 17 2002 14:07:24.810 UTC 87 TimeStamp ts4 = new TimeStamp(TIME3); // Tue, Dec 17 2002 14:07:25.810 UTC 88 89 // do assertion tests on TimeStamp class 90 assertEquals("equals(1,2)", ts1, ts2); 91 assertTrue("compareTo(1,2)", ts1.compareTo(ts2) == 0); 92 assertEquals("ntpValue(1,2)", ts1.ntpValue(), ts2.ntpValue()); 93 assertEquals("hashCode(1,2)", ts1.hashCode(), ts2.hashCode()); 94 assertEquals("ts1==ts1", ts1, ts1); 95 96 // timestamps in ts1 (TIME1) and ts3 (TIME2) are only off by the smallest 97 // fraction of a second (~200 picoseconds) so the times are not equal but 98 // when converted to Java dates (in milliseconds) they will be equal. 99 assertTrue("ts1 != ts3", !ts1.equals(ts3)); 100 assertTrue("compareTo(1,3)", ts1.compareTo(ts3) == -1); 101 assertEquals("seconds", ts1.getSeconds(), ts3.getSeconds()); 102 assertTrue("fraction", ts1.getFraction() != ts3.getFraction()); 103 assertTrue("ntpValue(1,3)", ts1.ntpValue() != ts3.ntpValue()); 104 assertTrue("hashCode(1,3)", ts1.hashCode() != ts3.hashCode()); 105 long time1 = ts1.getTime(); 106 long time3 = ts3.getTime(); 107 assertEquals("equals(time1,3)", time1, time3); // ntpTime1 != ntpTime3 but JavaTime(t1) == JavaTime(t3)... 108 109 assertTrue("ts3 != ts4", !ts3.equals(ts4)); 110 assertTrue("time3 != ts4.time", time3 != ts4.getTime()); 111 } 112 113 public void testUTCString() { 114 TimeStamp ts1 = new TimeStamp(TIME1); // Tue, Dec 17 2002 14:07:24.810 UTC 115 String actual = ts1.toUTCString(); 116 assertEquals("Tue, Dec 17 2002 14:07:24.810 UTC", actual); 117 } 118 119 public void testDateConversion() { 120 // convert current date to NtpTimeStamp then compare Java date 121 // computed from NTP timestamp with original Java date. 122 Calendar refCal = Calendar.getInstance(java.util.TimeZone.getTimeZone("UTC")); 123 Date refDate = refCal.getTime(); 124 TimeStamp ts = new TimeStamp(refDate); 125 assertEquals("refDate.getTime()", refDate.getTime(), ts.getTime()); 126 Date tsDate = ts.getDate(); 127 assertEquals(refDate, tsDate); 128 } 129 130 }