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.base.BasePartial; 022 023 /** 024 * This class is a Junit unit test for YearMonthDay. 025 * 026 * @author Stephen Colebourne 027 */ 028 public class TestBasePartial extends TestCase { 029 030 private static final DateTimeZone PARIS = DateTimeZone.forID("Europe/Paris"); 031 032 private long TEST_TIME_NOW = 033 (31L + 28L + 31L + 30L + 31L + 9L -1L) * DateTimeConstants.MILLIS_PER_DAY; 034 035 private long TEST_TIME1 = 036 (31L + 28L + 31L + 6L -1L) * DateTimeConstants.MILLIS_PER_DAY 037 + 12L * DateTimeConstants.MILLIS_PER_HOUR 038 + 24L * DateTimeConstants.MILLIS_PER_MINUTE; 039 040 private long TEST_TIME2 = 041 (365L + 31L + 28L + 31L + 30L + 7L -1L) * DateTimeConstants.MILLIS_PER_DAY 042 + 14L * DateTimeConstants.MILLIS_PER_HOUR 043 + 28L * DateTimeConstants.MILLIS_PER_MINUTE; 044 045 private DateTimeZone zone = null; 046 047 public static void main(String[] args) { 048 junit.textui.TestRunner.run(suite()); 049 } 050 051 public static TestSuite suite() { 052 return new TestSuite(TestBasePartial.class); 053 } 054 055 public TestBasePartial(String name) { 056 super(name); 057 } 058 059 protected void setUp() throws Exception { 060 DateTimeUtils.setCurrentMillisFixed(TEST_TIME_NOW); 061 zone = DateTimeZone.getDefault(); 062 DateTimeZone.setDefault(DateTimeZone.UTC); 063 } 064 065 protected void tearDown() throws Exception { 066 DateTimeUtils.setCurrentMillisSystem(); 067 DateTimeZone.setDefault(zone); 068 zone = null; 069 } 070 071 //----------------------------------------------------------------------- 072 public void testSetMethods() throws Throwable { 073 MockPartial mock = new MockPartial(); 074 assertEquals(1970, mock.getYear()); 075 assertEquals(1, mock.getMonthOfYear()); 076 077 mock.setYear(2004); 078 assertEquals(2004, mock.getYear()); 079 assertEquals(1, mock.getMonthOfYear()); 080 081 mock.setMonthOfYear(6); 082 assertEquals(2004, mock.getYear()); 083 assertEquals(6, mock.getMonthOfYear()); 084 085 mock.set(2005, 5); 086 assertEquals(2005, mock.getYear()); 087 assertEquals(5, mock.getMonthOfYear()); 088 089 try { 090 mock.setMonthOfYear(0); 091 fail(); 092 } catch (IllegalArgumentException ex) {} 093 assertEquals(2005, mock.getYear()); 094 assertEquals(5, mock.getMonthOfYear()); 095 096 try { 097 mock.setMonthOfYear(13); 098 fail(); 099 } catch (IllegalArgumentException ex) {} 100 assertEquals(2005, mock.getYear()); 101 assertEquals(5, mock.getMonthOfYear()); 102 } 103 104 static class MockPartial extends BasePartial { 105 106 MockPartial() { 107 super(new int[] {1970, 1}, null); 108 } 109 110 protected DateTimeField getField(int index, Chronology chrono) { 111 switch (index) { 112 case 0: 113 return chrono.year(); 114 case 1: 115 return chrono.monthOfYear(); 116 default: 117 throw new IndexOutOfBoundsException(); 118 } 119 } 120 121 public int size() { 122 return 2; 123 } 124 125 public int getYear() { 126 return getValue(0); 127 } 128 129 public void setYear(int year) { 130 setValue(0, year); 131 } 132 133 public int getMonthOfYear() { 134 return getValue(1); 135 } 136 137 public void setMonthOfYear(int month) { 138 setValue(1, month); 139 } 140 141 public void set(int year, int month) { 142 setValues(new int[] {year, month}); 143 } 144 } 145 }