001 /* 002 * Copyright 2001-2009 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.field; 017 018 import java.io.ByteArrayInputStream; 019 import java.io.ByteArrayOutputStream; 020 import java.io.ObjectInputStream; 021 import java.io.ObjectOutputStream; 022 023 import junit.framework.TestCase; 024 import junit.framework.TestSuite; 025 026 import org.joda.time.DurationField; 027 import org.joda.time.DurationFieldType; 028 import org.joda.time.chrono.ISOChronology; 029 030 /** 031 * This class is a Junit unit test for PeriodFormatterBuilder. 032 * 033 * @author Stephen Colebourne 034 */ 035 public class TestMillisDurationField extends TestCase { 036 037 public static void main(String[] args) { 038 junit.textui.TestRunner.run(suite()); 039 } 040 041 public static TestSuite suite() { 042 return new TestSuite(TestMillisDurationField.class); 043 } 044 045 public TestMillisDurationField(String name) { 046 super(name); 047 } 048 049 protected void setUp() throws Exception { 050 } 051 052 protected void tearDown() throws Exception { 053 } 054 055 //----------------------------------------------------------------------- 056 public void test_getType() { 057 assertEquals(DurationFieldType.millis(), MillisDurationField.INSTANCE.getType()); 058 } 059 060 public void test_getName() { 061 assertEquals("millis", MillisDurationField.INSTANCE.getName()); 062 } 063 064 public void test_isSupported() { 065 assertEquals(true, MillisDurationField.INSTANCE.isSupported()); 066 } 067 068 public void test_isPrecise() { 069 assertEquals(true, MillisDurationField.INSTANCE.isPrecise()); 070 } 071 072 public void test_getUnitMillis() { 073 assertEquals(1, MillisDurationField.INSTANCE.getUnitMillis()); 074 } 075 076 public void test_toString() { 077 assertEquals("DurationField[millis]", MillisDurationField.INSTANCE.toString()); 078 } 079 080 //----------------------------------------------------------------------- 081 public void test_getValue_long() { 082 assertEquals(0, MillisDurationField.INSTANCE.getValue(0L)); 083 assertEquals(1234, MillisDurationField.INSTANCE.getValue(1234L)); 084 assertEquals(-1234, MillisDurationField.INSTANCE.getValue(-1234L)); 085 try { 086 MillisDurationField.INSTANCE.getValue(((long) (Integer.MAX_VALUE)) + 1L); 087 fail(); 088 } catch (ArithmeticException ex) {} 089 } 090 091 public void test_getValueAsLong_long() { 092 assertEquals(0L, MillisDurationField.INSTANCE.getValueAsLong(0L)); 093 assertEquals(1234L, MillisDurationField.INSTANCE.getValueAsLong(1234L)); 094 assertEquals(-1234L, MillisDurationField.INSTANCE.getValueAsLong(-1234L)); 095 assertEquals(((long) (Integer.MAX_VALUE)) + 1L, MillisDurationField.INSTANCE.getValueAsLong(((long) (Integer.MAX_VALUE)) + 1L)); 096 } 097 098 public void test_getValue_long_long() { 099 assertEquals(0, MillisDurationField.INSTANCE.getValue(0L, 567L)); 100 assertEquals(1234, MillisDurationField.INSTANCE.getValue(1234L, 567L)); 101 assertEquals(-1234, MillisDurationField.INSTANCE.getValue(-1234L, 567L)); 102 try { 103 MillisDurationField.INSTANCE.getValue(((long) (Integer.MAX_VALUE)) + 1L, 567L); 104 fail(); 105 } catch (ArithmeticException ex) {} 106 } 107 108 public void test_getValueAsLong_long_long() { 109 assertEquals(0L, MillisDurationField.INSTANCE.getValueAsLong(0L, 567L)); 110 assertEquals(1234L, MillisDurationField.INSTANCE.getValueAsLong(1234L, 567L)); 111 assertEquals(-1234L, MillisDurationField.INSTANCE.getValueAsLong(-1234L, 567L)); 112 assertEquals(((long) (Integer.MAX_VALUE)) + 1L, MillisDurationField.INSTANCE.getValueAsLong(((long) (Integer.MAX_VALUE)) + 1L, 567L)); 113 } 114 115 //----------------------------------------------------------------------- 116 public void test_getMillis_int() { 117 assertEquals(0, MillisDurationField.INSTANCE.getMillis(0)); 118 assertEquals(1234, MillisDurationField.INSTANCE.getMillis(1234)); 119 assertEquals(-1234, MillisDurationField.INSTANCE.getMillis(-1234)); 120 } 121 122 public void test_getMillis_long() { 123 assertEquals(0L, MillisDurationField.INSTANCE.getMillis(0L)); 124 assertEquals(1234L, MillisDurationField.INSTANCE.getMillis(1234L)); 125 assertEquals(-1234L, MillisDurationField.INSTANCE.getMillis(-1234L)); 126 } 127 128 public void test_getMillis_int_long() { 129 assertEquals(0, MillisDurationField.INSTANCE.getMillis(0, 567L)); 130 assertEquals(1234, MillisDurationField.INSTANCE.getMillis(1234, 567L)); 131 assertEquals(-1234, MillisDurationField.INSTANCE.getMillis(-1234, 567L)); 132 } 133 134 public void test_getMillis_long_long() { 135 assertEquals(0L, MillisDurationField.INSTANCE.getMillis(0L, 567L)); 136 assertEquals(1234L, MillisDurationField.INSTANCE.getMillis(1234L, 567L)); 137 assertEquals(-1234L, MillisDurationField.INSTANCE.getMillis(-1234L, 567L)); 138 } 139 140 //----------------------------------------------------------------------- 141 public void test_add_long_int() { 142 assertEquals(567L, MillisDurationField.INSTANCE.add(567L, 0)); 143 assertEquals(567L + 1234L, MillisDurationField.INSTANCE.add(567L, 1234)); 144 assertEquals(567L - 1234L, MillisDurationField.INSTANCE.add(567L, -1234)); 145 try { 146 MillisDurationField.INSTANCE.add(Long.MAX_VALUE, 1); 147 fail(); 148 } catch (ArithmeticException ex) {} 149 } 150 151 public void test_add_long_long() { 152 assertEquals(567L, MillisDurationField.INSTANCE.add(567L, 0L)); 153 assertEquals(567L + 1234L, MillisDurationField.INSTANCE.add(567L, 1234L)); 154 assertEquals(567L - 1234L, MillisDurationField.INSTANCE.add(567L, -1234L)); 155 try { 156 MillisDurationField.INSTANCE.add(Long.MAX_VALUE, 1L); 157 fail(); 158 } catch (ArithmeticException ex) {} 159 } 160 161 //----------------------------------------------------------------------- 162 public void test_getDifference_long_int() { 163 assertEquals(567, MillisDurationField.INSTANCE.getDifference(567L, 0L)); 164 assertEquals(567 - 1234, MillisDurationField.INSTANCE.getDifference(567L, 1234L)); 165 assertEquals(567 + 1234, MillisDurationField.INSTANCE.getDifference(567L, -1234L)); 166 try { 167 MillisDurationField.INSTANCE.getDifference(Long.MAX_VALUE, 1L); 168 fail(); 169 } catch (ArithmeticException ex) {} 170 } 171 172 public void test_getDifferenceAsLong_long_long() { 173 assertEquals(567L, MillisDurationField.INSTANCE.getDifferenceAsLong(567L, 0L)); 174 assertEquals(567L - 1234L, MillisDurationField.INSTANCE.getDifferenceAsLong(567L, 1234L)); 175 assertEquals(567L + 1234L, MillisDurationField.INSTANCE.getDifferenceAsLong(567L, -1234L)); 176 try { 177 MillisDurationField.INSTANCE.getDifferenceAsLong(Long.MAX_VALUE, -1L); 178 fail(); 179 } catch (ArithmeticException ex) {} 180 } 181 182 //----------------------------------------------------------------------- 183 public void test_compareTo() { 184 assertEquals(0, MillisDurationField.INSTANCE.compareTo(MillisDurationField.INSTANCE)); 185 assertEquals(-1, MillisDurationField.INSTANCE.compareTo(ISOChronology.getInstance().seconds())); 186 DurationField dummy = new PreciseDurationField(DurationFieldType.seconds(), 0); 187 assertEquals(1, MillisDurationField.INSTANCE.compareTo(dummy)); 188 // try { 189 // MillisDurationField.INSTANCE.compareTo(""); 190 // fail(); 191 // } catch (ClassCastException ex) {} 192 try { 193 MillisDurationField.INSTANCE.compareTo(null); 194 fail(); 195 } catch (NullPointerException ex) {} 196 } 197 198 //----------------------------------------------------------------------- 199 public void testSerialization() throws Exception { 200 DurationField test = MillisDurationField.INSTANCE; 201 202 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 203 ObjectOutputStream oos = new ObjectOutputStream(baos); 204 oos.writeObject(test); 205 byte[] bytes = baos.toByteArray(); 206 oos.close(); 207 208 ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 209 ObjectInputStream ois = new ObjectInputStream(bais); 210 DurationField result = (DurationField) ois.readObject(); 211 ois.close(); 212 213 assertSame(test, result); 214 } 215 216 }