Project

General

Profile

Download (6.62 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.strategy.parser;
11

    
12
import static org.junit.Assert.assertFalse;
13
import static org.junit.Assert.assertNotNull;
14
import static org.junit.Assert.assertNull;
15
import static org.junit.Assert.assertTrue;
16

    
17
import org.apache.log4j.Logger;
18
import org.joda.time.DateTimeFieldType;
19
import org.joda.time.Partial;
20
import org.junit.After;
21
import org.junit.AfterClass;
22
import org.junit.Assert;
23
import org.junit.Before;
24
import org.junit.BeforeClass;
25
import org.junit.Test;
26

    
27
import eu.etaxonomy.cdm.common.UTF8;
28
import eu.etaxonomy.cdm.model.common.TimePeriod;
29

    
30
/**
31
 * @author a.mueller
32
 *
33
 */
34
public class TimePeriodParserTest {
35
	private static final Logger logger = Logger.getLogger(TimePeriodParserTest.class);
36

    
37
	private TimePeriod onlyStartYear;
38
	private TimePeriod onlyEndYear;
39
	private TimePeriod startAndEndYear;
40
	private TimePeriod noStartAndEndYear;
41

    
42

    
43
	/**
44
	 * @throws java.lang.Exception
45
	 */
46
	@BeforeClass
47
	public static void setUpBeforeClass() throws Exception {
48
	}
49

    
50
	/**
51
	 * @throws java.lang.Exception
52
	 */
53
	@AfterClass
54
	public static void tearDownAfterClass() throws Exception {
55
	}
56

    
57
	/**
58
	 * @throws java.lang.Exception
59
	 */
60
	@Before
61
	public void setUp() throws Exception {
62
		onlyStartYear = TimePeriod.NewInstance(1922);
63
		onlyEndYear = TimePeriod.NewInstance(null, 1857);
64
		startAndEndYear = TimePeriod.NewInstance(1931, 1957);
65
		Integer start = null;
66
		Integer end = null;
67
		noStartAndEndYear = TimePeriod.NewInstance(start, end);
68
	}
69

    
70
	/**
71
	 * @throws java.lang.Exception
72
	 */
73
	@After
74
	public void tearDown() throws Exception {
75
	}
76

    
77

    
78
//************************ TESTS ******************************************
79

    
80

    
81
	@Test
82
	public void testParseSingleDateString() {
83
		String strDate = "1756";
84
		Partial date = TimePeriodParser.parseSingleDate(strDate);
85
		assertNotNull(date);
86
		Assert.assertEquals(Integer.parseInt(strDate), date.get(DateTimeFieldType.year()));
87
		try {
88
			date.get(DateTimeFieldType.monthOfYear());
89
			assertFalse(true); //should not be reached
90
		} catch (Exception e) {
91
			assertTrue(e instanceof IllegalArgumentException);
92
		}
93
		try {
94
			date.get(DateTimeFieldType.dayOfMonth());
95
			assertFalse(true); //should not be reached
96
		} catch (Exception e) {
97
			assertTrue(e instanceof IllegalArgumentException);
98
		}
99
		//to be continued
100
	}
101

    
102

    
103
	/**
104
	 * Test method for {@link eu.etaxonomy.cdm.model.common.TimePeriod#parseString(java.lang.String)}.
105
	 */
106
	@Test
107
	public void testParseStringString() {
108
		String strTimePeriod = "1756";
109
		TimePeriod tp1 = TimePeriodParser.parseString(strTimePeriod);
110
		assertNotNull(tp1);
111
		Assert.assertEquals(strTimePeriod, tp1.getYear());
112
		Assert.assertEquals(strTimePeriod, String.valueOf(tp1.getStartYear()));
113
		assertNull(tp1.getEnd());
114
		assertNull(tp1.getStartMonth());
115
		strTimePeriod = "1756-88";
116
		tp1 = TimePeriodParser.parseString(strTimePeriod);
117
		assertNotNull(tp1);
118
		Assert.assertEquals("1756-1788", tp1.getYear());
119
		Assert.assertEquals("1756", String.valueOf(tp1.getStartYear()));
120
		Assert.assertEquals("1788", String.valueOf(tp1.getEndYear()));
121
		assertNull(tp1.getEndMonth());
122
		assertNull(tp1.getStartMonth());
123
		//unparsable
124
		String strUnparsablePeriod = "wef 1809-78";
125
		TimePeriod tpUnparsable = TimePeriodParser.parseString(strUnparsablePeriod);
126
		assertNotNull(tpUnparsable);
127
		Assert.assertEquals(strUnparsablePeriod, tpUnparsable.getFreeText());
128

    
129
		//"1806"[1807]
130
		String strCorrectedPeriod = "\"1806\"[1807]";
131
		TimePeriod tpcorrected = TimePeriodParser.parseString(strCorrectedPeriod);
132
		assertNotNull(tpcorrected);
133
		Assert.assertEquals(strCorrectedPeriod, tpcorrected.getFreeText());
134
		Assert.assertEquals("1807", tpcorrected.getYear());
135

    
136
	      //„1806‟[1807]
137
        String strCorrectedEnPeriod = UTF8.ENGLISH_QUOT_START + "1806"+UTF8.ENGLISH_QUOT_END+"[1807]";
138
        TimePeriod tpcorrectedEn = TimePeriodParser.parseString(strCorrectedEnPeriod);
139
        assertNotNull(tpcorrectedEn);
140
        Assert.assertEquals(strCorrectedEnPeriod, tpcorrectedEn.getFreeText());
141
        Assert.assertEquals("1807", tpcorrectedEn.getYear());
142

    
143

    
144
		//fl. 1806
145
		String strFlPeriod = "fl.  1806?";
146
		TimePeriod tpFl = TimePeriodParser.parseString(strFlPeriod);
147
		assertNotNull(tpFl);
148
		Assert.assertEquals(strFlPeriod, tpFl.getFreeText());
149
		Assert.assertEquals("1806", tpFl.getYear());
150

    
151
		String strCPeriod = "c.  1806-1810";
152
		TimePeriod tpC = TimePeriodParser.parseString(strCPeriod);
153
		assertNotNull(tpC);
154
		Assert.assertEquals(strCPeriod, tpC.getFreeText());
155
		Assert.assertEquals(Integer.valueOf(1806), tpC.getStartYear());
156
		Assert.assertEquals(Integer.valueOf(1810), tpC.getEndYear());
157
		Assert.assertEquals("1806-1810", tpC.getYear());
158

    
159
		//1.1.2011
160
		String strDotDate = "1.2.2011";
161
		TimePeriod tp = TimePeriodParser.parseString(strDotDate);
162
		assertNotNull(tp);
163
		Assert.assertEquals(strDotDate, tp.toString());
164
		Assert.assertEquals("2011", tp.getYear());
165
		Assert.assertEquals(Integer.valueOf(2), tp.getStartMonth());
166
		Assert.assertEquals(Integer.valueOf(1), tp.getStartDay());
167

    
168
		strDotDate = "31.03.2012";
169
		tp = TimePeriodParser.parseString(strDotDate);
170
		assertNotNull(tp);
171
		Assert.assertEquals("31.3.2012", tp.toString());
172
		Assert.assertEquals("2012", tp.getYear());
173
		Assert.assertEquals(Integer.valueOf(3), tp.getStartMonth());
174
		Assert.assertEquals(Integer.valueOf(31), tp.getStartDay());
175

    
176
		strDotDate = "00.04.2013";
177
		tp = TimePeriodParser.parseString(strDotDate);
178
		assertNotNull(tp);
179
		Assert.assertEquals("4.2013", tp.toString());
180
		Assert.assertEquals("2013", tp.getYear());
181
		Assert.assertEquals(Integer.valueOf(4), tp.getStartMonth());
182
		Assert.assertEquals(null, tp.getStartDay());
183

    
184
		strDotDate = "13.00.2014";
185
		tp = TimePeriodParser.parseString(strDotDate);
186
		assertNotNull(tp);
187
		Assert.assertEquals("13.xx.2014", tp.toString());
188
		Assert.assertEquals("2014", tp.getYear());
189
		Assert.assertEquals(null, tp.getStartMonth());
190
		Assert.assertEquals(Integer.valueOf(13), tp.getStartDay());
191

    
192
		strDotDate = "31.12.2015 - 02.01.2016";
193
		tp = TimePeriodParser.parseString(strDotDate);
194
		assertNotNull(tp);
195
		Assert.assertEquals("31.12.2015-2.1.2016", tp.toString());
196
		Assert.assertEquals("2015-2016", tp.getYear());
197
		Assert.assertEquals(Integer.valueOf(2015), tp.getStartYear());
198
		Assert.assertEquals(Integer.valueOf(12), tp.getStartMonth());
199
		Assert.assertEquals(Integer.valueOf(31), tp.getStartDay());
200
		Assert.assertEquals(Integer.valueOf(2016), tp.getEndYear());
201
		Assert.assertEquals(Integer.valueOf(1), tp.getEndMonth());
202
		Assert.assertEquals(Integer.valueOf(2), tp.getEndDay());
203
	}
204

    
205

    
206
}
(4-4/4)