// DaylightSavingsTimeTest.java
// Copyright 2007 by Ray Kiddy, Sunnyvale, CA, USA.
// All rights reserved. Want something? Just ask.

package org.owo.foundation;

import java.util.TimeZone;

import junit.framework.TestCase;

import com.webobjects.foundation.NSTimestamp;
import com.webobjects.foundation.NSTimestampFormatter;
import com.webobjects.foundation.NSTimeZone;

public class DaylightSavingsTimeTest extends TestCase {

    public DaylightSavingsTimeTest(String testName) {
        super(testName);
    }

    public void test2006SpringForward() {
        NSTimestampFormatter formatter = new NSTimestampFormatter("%Y/%m/%d %H:%M:%S %Z");

        String target1 = "2006/04/02 01:59:00 America/Los_Angeles";
        String target2 = "2006/04/02 03:00:00 America/Los_Angeles";

        // start at 1 minute before 2:00 AM on April 2, 2006 in the Pacific time zone
        NSTimestamp ts1 = new NSTimestamp(2006, 4, 2, 9, 59, 0, TimeZone.getTimeZone("America/Los Angeles"));

        assertEquals("creating time", target1, formatter.format(ts1));

        // add 1 minute to bring us to 12:59, a minute before midnight
        NSTimestamp ts2 = ts1.timestampByAddingGregorianUnits(0, 0, 0, 0, 1, 0);

        assertEquals("flipped over DST or not? ("+target2+") != ("+formatter.format(ts2)+")", target2, formatter.format(ts2));
    }

    public void test2007SpringForward() {
        NSTimestampFormatter formatter = new NSTimestampFormatter("%Y/%m/%d %H:%M:%S %Z");

        String target1 = "2007/03/11 01:59:00 America/Los_Angeles";
        String target2 = "2007/03/11 03:00:00 America/Los_Angeles";

        // start at 1 minute before 2:00 AM on March 11, 2007 in the Pacific time zone
        NSTimestamp ts1 = new NSTimestamp(2007, 3, 11, 9, 59, 0, TimeZone.getTimeZone("America/Los Angeles"));

        assertEquals("creating time", target1, formatter.format(ts1));

        // add 1 minute to bring us to 12:59, a minute before midnight
        NSTimestamp ts2 = ts1.timestampByAddingGregorianUnits(0, 0, 0, 0, 1, 0);

        assertEquals("flipped over DST or not? ("+target2+") != ("+formatter.format(ts2)+")", target2, formatter.format(ts2));
    }
}
