/*
* Licensed to STRATIO (C) under one or more contributor license agreements.
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership. The STRATIO (C) licenses this file
* to you 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.stratio.cassandra.lucene.util;
import com.stratio.cassandra.lucene.IndexException;
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.fail;
/**
* @author Eduardo Alonso {@literal <eduardoalonso@stratio.com>}
*/
public class DateParserTest {
@Test
public void testParseNullDate() {
DateParser dateParser = new DateParser("yyyy/MM/dd");
Date date = null;
Date dateOut = dateParser.parse(date);
assertEquals("Date null parsed by DateParser(\"yyyy/MM/dd\") must return null", null, dateOut);
}
@Test
public void testParseNullObject() {
DateParser dateParser = new DateParser("yyyy/MM/dd");
Object date = null;
Date dateOut = dateParser.parse(date);
assertEquals("Object null parsed by DateParser(\"yyyy/MM/dd\") must return null", null, dateOut);
}
@Test
public void testParseNullLong() {
DateParser dateParser = new DateParser("yyyy/MM/dd");
Long date = null;
Date dateOut = dateParser.parse(date);
assertEquals("Long null parsed by DateParser(\"yyyy/MM/dd\") must return null", null, dateOut);
}
@Test
public void testParseValidDate() throws ParseException {
String pattern = "yyyy/MM/dd";
DateParser dateParser = new DateParser(pattern);
String dateString = "2015/11/03";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
Date date = simpleDateFormat.parse(dateString);
Date dateOut = dateParser.parse(date);
assertEquals("Date parsed by DateParser(\"yyyy/MM/dd\") wrong parsed",
dateString,
simpleDateFormat.format(dateOut));
}
@Test
public void testParseValidObject() {
String pattern = "yyyy/MM/dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
DateParser dateParser = new DateParser(pattern);
String dateString = "2015/11/03";
Date dateOut = dateParser.parse(dateString);
assertEquals("String parsed by DateParser(\"yyyy/MM/dd\") wrong parsed",
dateString,
simpleDateFormat.format(dateOut));
}
@Test
public void testParseValidLong() {
DateParser dateParser = new DateParser(null);
Long dateLong = 20151103l;
Date dateOut = dateParser.parse(dateLong);
assertEquals("Long parsed by DateParser(\"yyyy/MM/dd\") wrong parsed",
dateLong.toString(),
Long.toString(dateOut.getTime()));
}
@Test(expected = IndexException.class)
public void testParseInvalidObject() throws ParseException {
String pattern = "yyyyMMdd";
DateParser dateParser = new DateParser(pattern);
String dateString = "2015/11/03";
dateParser.parse(dateString);
fail("DateParser(" + pattern + ").parse(" + dateString + ") Must generate IndexException and does not do it");
}
@Test(expected = IndexException.class)
public void testParseInvalidNegativeLong() {
String pattern = "yyyyMMdd";
DateParser dateParser = new DateParser(pattern);
Long dateLong = -20152345l;//invalid long not parseable
dateParser.parse(dateLong);
fail("DateParser(" +
pattern +
").parse(" +
dateLong.toString() +
") Must generate IndexException and does not do it");
}
@Test
public void testValidTimestampString() {
String pattern = "timestamp";
DateParser dateParser = new DateParser(pattern);
String dateString = "2635421542648178234";
Date date = dateParser.parse(dateString);
Date dateToCompare = new Date(Long.parseLong(dateString));
assertEquals("DateParser(" + pattern + ").parse(" + dateString + ") wrong parsed.", dateToCompare, date);
}
@Test
public void testValidTimestampLong() {
String pattern = "timestamp";
DateParser dateParser = new DateParser(pattern);
Long dateLong = 2635421542648178234l;
Date date = dateParser.parse(dateLong);
Date dateToCompare = new Date(dateLong);
assertEquals(String.format("DateParser(%s).parse(%s) wrong parsed.", pattern, dateLong), dateToCompare, date);
}
@Test(expected = IndexException.class)
public void testInvalidTimestampString() {
String pattern = "timestamp";
DateParser dateParser = new DateParser(pattern);
String dateString = "2015/03/02";
dateParser.parse(dateString);
fail(String.format("DateParser(%s).parse(%s) Must generate IndexException and does not do it",
pattern,
dateString));
}
}