View Javadoc
1   /*
2    * Copyright 2009 the original author or authors.
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 org.openehealth.ipf.commons.ihe.xds.core.validate;
17  
18  import org.junit.Test;
19  
20  import static org.junit.Assert.fail;
21  
22  /**
23   * Tests for {@link TimeValidator}.
24   * @author Jens Riemschneider
25   */
26  public class TimePrecisionValidatorTest {
27      private static final TimeValidator validator = new TimeValidator(8);    // minimal precision is a day
28  
29      @Test
30      public void testValidateGoodCases() throws XDSMetaDataException {
31          validator.validate("19800101");
32          validator.validate("19800131");
33          validator.validate("1980010100");
34          validator.validate("1980010123");
35          validator.validate("198001010100");
36          validator.validate("198001010159");
37          validator.validate("19800101010100");
38          validator.validate("19800101010159");
39      }
40      
41      @Test 
42      public void testValidateBadCases() throws XDSMetaDataException {
43          // too short
44          assertFails("1980");
45          assertFails("198001");
46          assertFails("198012");
47  
48          // bad syntax
49          assertFails("19AA");
50          assertFails("198000");
51          assertFails("198013");
52          assertFails("198021");
53          assertFails("19800100");
54          assertFails("19800132");
55          assertFails("19800141");
56          assertFails("1980010124");
57          assertFails("1980010131");
58          assertFails("198001010160");
59          assertFails("19800101010160");
60      }
61  
62      private static void assertFails(String value) {
63          try {
64              validator.validate(value);
65              fail("Expected exception: " + XDSMetaDataException.class + " for " + value);
66          } catch (XDSMetaDataException e) {
67              // Expected
68          }
69      }
70  }