Package com.google.ical.compat.javautil

Source Code of com.google.ical.compat.javautil.DateIteratorFactoryTest

// Copyright (C) 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package com.google.ical.compat.javautil;

import com.google.ical.util.TimeUtils;
import com.google.ical.values.DateTimeValueImpl;
import com.google.ical.values.DateValue;
import com.google.ical.values.DateValueImpl;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import junit.framework.TestCase;

/**
* testcases for {@link DateIteratorFactory}.
*
* @author mikesamuel+svn@gmail.com (Mike Samuel)
*/
public class DateIteratorFactoryTest extends TestCase {

  private static final TimeZone PST =
      TimeZone.getTimeZone("America/Los_Angeles");

  public void testDateValueToDate() throws Exception {
    assertEquals(createDateUtc(2006, 10, 13, 0, 0, 0),
                 DateIteratorFactory.dateValueToDate(
                     new DateValueImpl(2006, 10, 13)));
    assertEquals(createDateUtc(2006, 10, 13, 12, 30, 1),
                 DateIteratorFactory.dateValueToDate(
                     new DateTimeValueImpl(2006, 10, 13, 12, 30, 1)));
  }

  public void testDateToDateTimeValue() throws Exception {
    assertEquals(new DateTimeValueImpl(2006, 10, 13, 0, 0, 0),
                 DateIteratorFactory.dateToDateValue(
                     createDateUtc(2006, 10, 13, 0, 0, 0), false));
    assertEquals(new DateValueImpl(2006, 10, 13),
                 DateIteratorFactory.dateToDateValue(
                     createDateUtc(2006, 10, 13, 0, 0, 0), true));
    assertEquals(new DateTimeValueImpl(2006, 10, 13, 12, 30, 1),
                 DateIteratorFactory.dateToDateValue(
                     createDateUtc(2006, 10, 13, 12, 30, 1), false));
    assertEquals(new DateTimeValueImpl(2006, 10, 13, 12, 30, 1),
                 DateIteratorFactory.dateToDateValue(
                     createDateUtc(2006, 10, 13, 12, 30, 1), true));
  }

  public void testConsistency() throws Exception {
    DateValue dv = new DateValueImpl(2006, 10, 13),
             dtv = new DateTimeValueImpl(2006, 10, 13, 12, 30, 1);
    assertEquals(dv, DateIteratorFactory.dateToDateValue(
                          DateIteratorFactory.dateValueToDate(dv), true));
    assertEquals(dtv, DateIteratorFactory.dateToDateValue(
                          DateIteratorFactory.dateValueToDate(dtv), true));
  }

  public void testCreateDateIterableUntimed() throws Exception {
    DateIterable iterable = DateIteratorFactory.createDateIterable(
        "RRULE:FREQ=DAILY;INTERVAL=2;COUNT=8\n"
        + "EXDATE:20060103,20060105,20060107T000000,20060113",
        date(2006, 1, 1), PST, true);

    DateIterator it = iterable.iterator();
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 7), it.next())// does not match midnight
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 9), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 11), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 15), it.next());
    assertTrue(!it.hasNext());

    it = iterable.iterator();
    it.advanceTo(date(2006, 1, 9));
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 9), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 11), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 15), it.next());
    assertTrue(!it.hasNext());
  }

  public void testCreateDateIterableTimed() throws Exception {
    DateIterable iterable = DateIteratorFactory.createDateIterable(
        "RRULE:FREQ=DAILY;INTERVAL=2;COUNT=8\n"
        + "EXDATE:20060103T123001,20060105T123001,20060107,20060113T123001",
        date(2006, 1, 1, 12, 30, 1), PST, true);

    DateIterator it = iterable.iterator();
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 1, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 7, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 9, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 11, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 15, 20, 30, 1), it.next());
    assertTrue(!it.hasNext());

    it = iterable.iterator();
    it.advanceTo(date(2006, 1, 9));
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 9, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 11, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 15, 20, 30, 1), it.next());
    assertTrue(!it.hasNext());


    it = iterable.iterator();
    it.advanceTo(date(2006, 1, 9, 22, 30, 1))// advance past
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 11, 20, 30, 1), it.next());
    assertTrue(it.hasNext());
    assertEquals(date(2006, 1, 15, 20, 30, 1), it.next());
    assertTrue(!it.hasNext());
  }

  private Date createDateUtc(int ye, int mo, int da, int ho, int mi, int se) {
    Calendar c = new GregorianCalendar(TimeUtils.utcTimezone());
    c.clear();
    c.set(ye, mo - 1, da, ho, mi, se);
    return c.getTime();
  }

  private static Date date(int y, int m, int d) {
    return DateIteratorFactory.dateValueToDate(new DateValueImpl(y, m, d));
  }

  private static Date date(int y, int m, int d, int h, int n, int s) {
    return DateIteratorFactory.dateValueToDate(
        new DateTimeValueImpl(y, m, d, h, n, s));
  }
}
TOP

Related Classes of com.google.ical.compat.javautil.DateIteratorFactoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.