/* * Copyright (c) 2002-2012 Alibaba Group Holding Limited. * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.alibaba.citrus.service.form.impl.validation; import static com.alibaba.citrus.test.TestUtil.*; import static org.junit.Assert.*; import java.text.ParseException; import org.junit.Test; public class DateValidatorTests extends AbstractValidatorTests<DateValidator> { @Override protected String getGroupName() { return "h"; } @Test public void init_format() throws Exception { DateValidator v; // default value v = newValidator(); v.setMessage("message"); v.afterPropertiesSet(); assertEquals("yyyy-MM-dd", v.getFormat()); // empty v = newValidator(); v.setMessage("message"); v.setFormat(null); v.afterPropertiesSet(); assertEquals("yyyy-MM-dd", v.getFormat()); v = newValidator(); v.setMessage("message"); v.setFormat(" "); v.afterPropertiesSet(); assertEquals("yyyy-MM-dd", v.getFormat()); // with value v = newValidator(); v.setMessage("message"); v.setFormat(" yyyy-MM-dd hh:mm:ss "); v.afterPropertiesSet(); assertEquals("yyyy-MM-dd hh:mm:ss", v.getFormat()); // wrong format v = newValidator(); v.setMessage("message"); v.setFormat("abcdefghijklmnopqrstuvwxyz"); try { v.afterPropertiesSet(); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("Illegal pattern character")); } } @Test public void init_minDate() throws Exception { DateValidator v = newValidator(); // empty v.setMinDate(null); assertEquals(null, v.getMinDate()); v.setMinDate(" "); assertEquals(null, v.getMinDate()); // with value v.setMinDate(" 1911-10-10 10:10 "); assertEquals("1911-10-10 10:10", v.getMinDate()); // init v.setMessage("message"); v.afterPropertiesSet(); assertEquals("1911-10-10", v.getMinDate()); // wrong format v = newValidator(); v.setMessage("message"); v.setMinDate("1911"); try { v.afterPropertiesSet(); fail(); } catch (ParseException e) { assertThat(e, exception("1911")); } // wrong format 2:和指定format格式不一致 v = newValidator(); v.setMessage("message"); v.setFormat("yyyy-MM-dd HH:mm:ss"); v.setMinDate("1911-10-10"); try { v.afterPropertiesSet(); fail(); } catch (ParseException e) { assertThat(e, exception("1911-10-10")); } v = newValidator(); v.setMessage("message"); v.setFormat("yyyy-MM-dd HH:mm:ss"); v.setMinDate("1911-10-10 10:10:10"); v.afterPropertiesSet(); } @Test public void init_maxDate() throws Exception { DateValidator v = newValidator(); // empty v.setMaxDate(null); assertEquals(null, v.getMaxDate()); v.setMaxDate(" "); assertEquals(null, v.getMaxDate()); // with value v.setMaxDate(" 1911-10-10 10:10 "); assertEquals("1911-10-10 10:10", v.getMaxDate()); // init v.setMessage("message"); v.afterPropertiesSet(); assertEquals("1911-10-10", v.getMaxDate()); // wrong value v = newValidator(); v.setMessage("message"); v.setMaxDate("1911"); try { v.afterPropertiesSet(); fail(); } catch (ParseException e) { assertThat(e, exception("1911")); } // wrong format 2:和指定format格式不一致 v = newValidator(); v.setMessage("message"); v.setFormat("yyyy-MM-dd HH:mm:ss"); v.setMaxDate("1911-10-10"); try { v.afterPropertiesSet(); fail(); } catch (ParseException e) { assertThat(e, exception("1911-10-10")); } v = newValidator(); v.setMessage("message"); v.setFormat("yyyy-MM-dd HH:mm:ss"); v.setMaxDate("1911-10-10 10:10:10"); v.afterPropertiesSet(); } @Test public void validate_default() throws Exception { // wrong format request(" 1911- "); assertEquals(false, field1.isValid()); assertEquals("field1 should be of format yyyy-MM-dd", field1.getMessage()); // right format request(" 1911-10-10 "); assertEquals(true, field1.isValid()); assertEquals(null, field1.getMessage()); request(" 1911-2-28 "); assertEquals(true, field1.isValid()); assertEquals(null, field1.getMessage()); request(" 1911-10-10 10:10 "); assertEquals(true, field1.isValid()); assertEquals(null, field1.getMessage()); // overflow request(" 1911-2-30 "); assertEquals(false, field1.isValid()); assertEquals("field1 should be of format yyyy-MM-dd", field1.getMessage()); } @Test public void validate_format() throws Exception { // wrong format request(null, " 1911-01-01 "); assertEquals(false, field2.isValid()); assertEquals("field2 should be of format yyyy-MM-dd HH:mm:ss", field2.getMessage()); // right format request(null, " 1911-10-10 11:01:02 "); assertEquals(true, field2.isValid()); assertEquals(null, field2.getMessage()); request(null, " 1911-2-28 13:01:02 "); assertEquals(true, field2.isValid()); assertEquals(null, field2.getMessage()); request(null, " 1911-10-10 10:10:10.12 "); assertEquals(true, field2.isValid()); assertEquals(null, field2.getMessage()); // overflow request(null, " 1911-2-28 12:70:10"); assertEquals(false, field2.isValid()); assertEquals("field2 should be of format yyyy-MM-dd HH:mm:ss", field2.getMessage()); } @Test public void validate_minDate() throws Exception { request(null, null, " 1911-10-10 "); assertEquals(true, field3.isValid()); assertEquals(null, field3.getMessage()); request(null, null, " 1911-10-11 "); assertEquals(true, field3.isValid()); assertEquals(null, field3.getMessage()); request(null, null, " 1911-10-9 "); assertEquals(false, field3.isValid()); assertEquals("field3 should be after 1911-10-10", field3.getMessage()); } @Test public void validate_maxDate() throws Exception { request(null, null, null, " 1911-10-10 "); assertEquals(true, field4.isValid()); assertEquals(null, field4.getMessage()); request(null, null, null, " 1911-10-11 "); assertEquals(false, field4.isValid()); assertEquals("field4 should be earlier than 1911-10-10", field4.getMessage()); request(null, null, null, " 1911-10-9 "); assertEquals(true, field4.isValid()); assertEquals(null, field4.getMessage()); } @Test public void validate_minDate_maxDate_format() throws Exception { request(null, null, null, null, " 1911-10-10 "); assertEquals(false, field5.isValid()); assertEquals( "field5 should be date between 1911-10-10 00:10:10 and 1911-10-10 10:10:10 in format yyyy-MM-dd HH:mm:ss", field5.getMessage()); request(null, null, null, null, " 1911-10-10 0:10:9"); assertEquals(false, field5.isValid()); assertEquals( "field5 should be date between 1911-10-10 00:10:10 and 1911-10-10 10:10:10 in format yyyy-MM-dd HH:mm:ss", field5.getMessage()); request(null, null, null, null, " 1911-10-10 10:10:11"); assertEquals(false, field5.isValid()); assertEquals( "field5 should be date between 1911-10-10 00:10:10 and 1911-10-10 10:10:10 in format yyyy-MM-dd HH:mm:ss", field5.getMessage()); request(null, null, null, null, " 1911-10-10 0:10:10"); assertEquals(true, field5.isValid()); assertEquals(null, field5.getMessage()); request(null, null, null, null, " 1911-10-10 10:10:10"); assertEquals(true, field5.isValid()); assertEquals(null, field5.getMessage()); } }