root/trunk/test/java/org/jcoderz/commons/types/YearMonthTest.java

Revision 1011, 3.9 kB (checked in by amandel, 4 years ago)

Aligned svn keyword settings.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
Line 
1/*
2 * $Id$
3 *
4 * Copyright 2006, The jCoderZ.org Project. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 *    * Redistributions of source code must retain the above copyright
11 *      notice, this list of conditions and the following disclaimer.
12 *    * Redistributions in binary form must reproduce the above
13 *      copyright notice, this list of conditions and the following
14 *      disclaimer in the documentation and/or other materials
15 *      provided with the distribution.
16 *    * Neither the name of the jCoderZ.org Project nor the names of
17 *      its contributors may be used to endorse or promote products
18 *      derived from this software without specific prior written
19 *      permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS" AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
28 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 */
33package org.jcoderz.commons.types;
34
35import junit.framework.TestCase;
36import org.jcoderz.commons.ArgumentMalformedException;
37
38/**
39 * Tests the YearMonth class.
40 * @author Andreas Mandel
41 */
42public class YearMonthTest
43      extends TestCase
44{
45
46   /** Tests the fromString method (positive).  */
47   public final void testFromStringPositive ()
48   {
49      testGood("2005-02Z", "2005-02Z");
50      testGood("2005-03UTC", "2005-03Z");
51      testGood("2005-04GMT", "2005-04Z");
52      testGood("-2005-02", "-2005-02Z");
53      testGood("2005-12", "2005-12Z");
54      testGood("12005-01", "12005-01Z");
55      testGood("0005-12", "0005-12Z");
56      testGood("-0005-12", "-0005-12Z"); //
57   }
58
59   /** Tests the fromString method (negative).  */
60   public final void testFromStringNegative ()
61   {
62      testBad(null);
63      testBad("");
64      testBad("2005");
65      testBad("5-02");
66      testBad("2005-2");
67      testBad("2005-2Z");
68      testBad("2005--2");
69      testBad("2005-02PST");
70      testBad("2005--02");
71      testBad("2005-+2");
72      testBad("0000-01");
73   }
74
75   /**
76    * Test the to period method.
77    * @throws Exception in case of a testcase error.
78    */
79   public final void testToPeriod ()
80         throws Exception
81   {
82      final YearMonth ym = YearMonth.fromString("1999-04");
83      final Period p = ym.toPeriod();
84      assertEquals("Start date of period unexpected",
85            Date.fromString("1999-04-01T00:00:00Z"), p.getStartTime());
86      assertEquals("End date of period unexpected",
87            Date.fromString("1999-04-30T23:59:59.999Z"), p.getEndTime());
88
89      final YearMonth ym2 = YearMonth.fromString("2000-02");
90      final Period p2 = ym2.toPeriod();
91      assertEquals("Start date of period unexpected (leep year)",
92            Date.fromString("2000-02-01T00:00:00Z"), p2.getStartTime());
93      assertEquals("End date of period unexpected (leep year)",
94            Date.fromString("2000-02-29T23:59:59.999Z"), p2.getEndTime());
95   }
96
97   private void testGood (String str, String ref)
98   {
99      assertEquals("String representation unexpected.",
100            ref, YearMonth.fromString(str).toString());
101   }
102
103   private void testBad (String str)
104   {
105      try
106      {
107         YearMonth.fromString(str);
108         fail("YearMonth shold not be valid: '" + str + "'.");
109      }
110      catch (ArgumentMalformedException ex)
111      {
112         // OK
113      }
114   }
115
116}
Note: See TracBrowser for help on using the browser.