001 /* 002 * Copyright 2001-2005 Stephen Colebourne 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.joda.time; 017 018 import junit.framework.TestCase; 019 import junit.framework.TestSuite; 020 021 import org.joda.time.chrono.BuddhistChronology; 022 import org.joda.time.chrono.CopticChronology; 023 import org.joda.time.chrono.ISOChronology; 024 025 /** 026 * This class is a Junit unit test for Partial. 027 * 028 * @author Stephen Colebourne 029 */ 030 public class TestPartial_Match extends TestCase { 031 032 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 033 private static final DateTimeZone LONDON = DateTimeZone.forID("Europe/London"); 034 private static final DateTimeZone TOKYO = DateTimeZone.forID("Asia/Tokyo"); 035 private static final int OFFSET = 1; 036 private static final Chronology COPTIC_PARIS = CopticChronology.getInstance(PARIS); 037 private static final Chronology COPTIC_LONDON = CopticChronology.getInstance(LONDON); 038 private static final Chronology COPTIC_TOKYO = CopticChronology.getInstance(TOKYO); 039 private static final Chronology COPTIC_UTC = CopticChronology.getInstanceUTC(); 040 private static final Chronology ISO_PARIS = ISOChronology.getInstance(PARIS); 041 private static final Chronology ISO_LONDON = ISOChronology.getInstance(LONDON); 042 private static final Chronology ISO_TOKYO = ISOChronology.getInstance(TOKYO); 043 private static final Chronology ISO_UTC = ISOChronology.getInstanceUTC(); 044 private static final Chronology BUDDHIST_PARIS = BuddhistChronology.getInstance(PARIS); 045 private static final Chronology BUDDHIST_LONDON = BuddhistChronology.getInstance(LONDON); 046 private static final Chronology BUDDHIST_TOKYO = BuddhistChronology.getInstance(TOKYO); 047 private static final Chronology BUDDHIST_UTC = BuddhistChronology.getInstanceUTC(); 048 049 private long TEST_TIME_NOW = 050 10L * DateTimeConstants.MILLIS_PER_HOUR 051 + 20L * DateTimeConstants.MILLIS_PER_MINUTE 052 + 30L * DateTimeConstants.MILLIS_PER_SECOND 053 + 40L; 054 055 private long TEST_TIME1 = 056 1L * DateTimeConstants.MILLIS_PER_HOUR 057 + 2L * DateTimeConstants.MILLIS_PER_MINUTE 058 + 3L * DateTimeConstants.MILLIS_PER_SECOND 059 + 4L; 060 061 private long TEST_TIME2 = 062 1L * DateTimeConstants.MILLIS_PER_DAY 063 + 5L * DateTimeConstants.MILLIS_PER_HOUR 064 + 6L * DateTimeConstants.MILLIS_PER_MINUTE 065 + 7L * DateTimeConstants.MILLIS_PER_SECOND 066 + 8L; 067 068 private DateTimeZone zone = null; 069 070 public static void main(String[] args) { 071 junit.textui.TestRunner.run(suite()); 072 } 073 074 public static TestSuite suite() { 075 return new TestSuite(TestPartial_Match.class); 076 } 077 078 public TestPartial_Match(String name) { 079 super(name); 080 } 081 082 protected void setUp() throws Exception { 083 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 084 zone = DateTimeZone.getDefault(); 085 DateTimeZone.setDefault(LONDON); 086 } 087 088 protected void tearDown() throws Exception { 089 DateTimeUtils.setCurrentMillisSystem(); 090 DateTimeZone.setDefault(zone); 091 zone = null; 092 } 093 094 //----------------------------------------------------------------------- 095 public void testIsMatch_Instant() { 096 // Year=2005, Month=7 (July), DayOfWeek=2 (Tuesday) 097 Partial test = createYMDwPartial(ISO_UTC, 2005, 7, 2); 098 DateTime instant = new DateTime(2005, 7, 5, 0, 0, 0, 0); 099 assertEquals(true, test.isMatch(instant)); 100 101 instant = new DateTime(2005, 7, 4, 0, 0, 0, 0); 102 assertEquals(false, test.isMatch(instant)); 103 104 instant = new DateTime(2005, 7, 6, 0, 0, 0, 0); 105 assertEquals(false, test.isMatch(instant)); 106 107 instant = new DateTime(2005, 7, 12, 0, 0, 0, 0); 108 assertEquals(true, test.isMatch(instant)); 109 110 instant = new DateTime(2005, 7, 19, 0, 0, 0, 0); 111 assertEquals(true, test.isMatch(instant)); 112 113 instant = new DateTime(2005, 7, 26, 0, 0, 0, 0); 114 assertEquals(true, test.isMatch(instant)); 115 116 instant = new DateTime(2005, 8, 2, 0, 0, 0, 0); 117 assertEquals(false, test.isMatch(instant)); 118 119 instant = new DateTime(2006, 7, 5, 0, 0, 0, 0); 120 assertEquals(false, test.isMatch(instant)); 121 122 instant = new DateTime(2005, 6, 5, 0, 0, 0, 0); 123 assertEquals(false, test.isMatch(instant)); 124 } 125 126 //----------------------------------------------------------------------- 127 public void testIsMatch_Partial() { 128 // Year=2005, Month=7 (July), DayOfWeek=2 (Tuesday) 129 Partial test = createYMDwPartial(ISO_UTC, 2005, 7, 2); 130 LocalDate partial = new LocalDate(2005, 7, 5); 131 assertEquals(true, test.isMatch(partial)); 132 133 partial = new LocalDate(2005, 7, 4); 134 assertEquals(false, test.isMatch(partial)); 135 136 partial = new LocalDate(2005, 7, 6); 137 assertEquals(false, test.isMatch(partial)); 138 139 partial = new LocalDate(2005, 7, 12); 140 assertEquals(true, test.isMatch(partial)); 141 142 partial = new LocalDate(2005, 7, 19); 143 assertEquals(true, test.isMatch(partial)); 144 145 partial = new LocalDate(2005, 7, 26); 146 assertEquals(true, test.isMatch(partial)); 147 148 partial = new LocalDate(2005, 8, 2); 149 assertEquals(false, test.isMatch(partial)); 150 151 partial = new LocalDate(2006, 7, 5); 152 assertEquals(false, test.isMatch(partial)); 153 154 partial = new LocalDate(2005, 6, 5); 155 assertEquals(false, test.isMatch(partial)); 156 157 try { 158 test.isMatch((ReadablePartial) null); 159 fail(); 160 } catch (IllegalArgumentException ex) {} 161 } 162 163 //----------------------------------------------------------------------- 164 private Partial createYMDwPartial(Chronology chrono, int year, int month, int dow) { 165 return new Partial( 166 new DateTimeFieldType[] { 167 DateTimeFieldType.year(), 168 DateTimeFieldType.monthOfYear(), 169 DateTimeFieldType.dayOfWeek()}, 170 new int[] {year, month, dow}, 171 chrono); 172 } 173 174 }