1 /* 2 * Copyright 2008-2012 smartics, Kronseder & Reiner GmbH 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package de.smartics.util.test.util; 17 18 import java.util.Calendar; 19 import java.util.Date; 20 21 /** 22 * Calendar utilities for test cases. 23 * 24 * @author <a href="mailto:robert.reiner@smartics.de">Robert Reiner</a> 25 * @version $Revision:$ 26 */ 27 public final class CalendarTestUtils 28 { 29 // ******************************** Fields ******************************** 30 31 // --- constants ---------------------------------------------------------- 32 33 /** 34 * Some day in March. 35 */ 36 private static final int SOME_DAY_IN_MARCH = 23; 37 38 /** 39 * Last day in November. 40 */ 41 private static final int LAST_DAY_OF_NOVEMBER = 31; 42 43 /** 44 * Year between {@link #LATER_YEAR} and {@link #YEAR}. 45 */ 46 private static final int MIDDLE_YEAR = 2007; 47 48 /** 49 * Latest year for the tests. 50 */ 51 private static final int LATER_YEAR = 2008; 52 53 /** 54 * Earliest year for the tests. 55 */ 56 private static final int YEAR = 1960; 57 58 /** 59 * A constant date that points to 1960, 13rd of April. 60 */ 61 public static final Date CONSTANT_DATE_1960_04_23; 62 63 /** 64 * A constant date that points to 2008, 2nd of June. 65 */ 66 public static final Date CONSTANT_DATE_2008_06_02; 67 68 // --- members ------------------------------------------------------------ 69 70 // ***************************** Initializer ****************************** 71 72 static 73 { 74 final Calendar calendar = Calendar.getInstance(); 75 calendar.clear(); 76 calendar.set(YEAR, 3, SOME_DAY_IN_MARCH); 77 CONSTANT_DATE_1960_04_23 = calendar.getTime(); 78 calendar.clear(); 79 calendar.set(LATER_YEAR, 5, 2); 80 CONSTANT_DATE_2008_06_02 = calendar.getTime(); 81 } 82 83 // ***************************** Constructors ****************************** 84 85 /** 86 * Utility class. 87 */ 88 private CalendarTestUtils() 89 { 90 } 91 92 // ***************************** Inner Classes **************************** 93 94 // ********************************* Methods ******************************* 95 96 // --- init --------------------------------------------------------------- 97 98 // --- get&set ------------------------------------------------------------ 99 100 // --- business ----------------------------------------------------------- 101 102 /** 103 * Creates a test date. 104 * 105 * @param index adds this number of days to the first day of December, 2007. 106 * @return the date to use in tests. 107 */ 108 public static Date createDate(final int index) 109 { 110 final Calendar calendar = Calendar.getInstance(); 111 calendar.clear(); 112 calendar.set(MIDDLE_YEAR, 11, LAST_DAY_OF_NOVEMBER); 113 calendar.add(Calendar.DATE, index); 114 final Date date = calendar.getTime(); 115 return date; 116 } 117 118 /** 119 * Creates a test date. 120 * 121 * @param day the say of month, starting with <code>1</code>. 122 * @param month the month of the year, starting with <code>1</code>. 123 * @param year the year of the test date. 124 * @return the date to use in tests. 125 */ 126 public static Date createDate(final int day, final int month, final int year) 127 { 128 final Calendar calendar = Calendar.getInstance(); 129 calendar.clear(); 130 calendar.set(year, month - 1, day); 131 final Date date = calendar.getTime(); 132 return date; 133 } 134 135 /** 136 * Creates a date in the future of the given date. 137 * 138 * @param date the base date to create a date in the future. 139 * @return a date after the given date. 140 * @impl The date is the given day (leap years will expect the previous valid 141 * day) next year. 142 */ 143 public static Date createDateInFuture(final Date date) 144 { 145 final Calendar calendar = Calendar.getInstance(); 146 calendar.clear(); 147 calendar.setTime(date); 148 calendar.add(Calendar.YEAR, 1); 149 final Date futureDate = calendar.getTime(); 150 return futureDate; 151 } 152 153 /** 154 * Creates a date in the future of today. 155 * 156 * @return a date after today. 157 * @impl The date is the current day (leap years will expect the previous 158 * valid day) next year. 159 */ 160 public static Date createDateInFuture() 161 { 162 return createDateInFuture(new Date()); 163 } 164 165 // --- object basics ------------------------------------------------------ 166 167 }