/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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 org.apache.solr.schema;
import org.apache.solr.schema.DateField;
import org.apache.solr.util.DateMathParser;
import org.apache.lucene.document.Fieldable;
import org.apache.lucene.util.LocalizedTestCase;
import java.util.Date;
import java.util.TimeZone;
import java.util.Locale;
import java.text.DateFormat;
public class LegacyDateFieldTest extends LocalizedTestCase {
// if and when this class is removed, make sure to refactor all
// appropriate code to DateFieldTest
public static TimeZone UTC = TimeZone.getTimeZone("UTC");
protected DateField f = null;
protected DateMathParser p = null;
public void setUp() throws Exception {
super.setUp();
p = new DateMathParser(UTC, Locale.US);
f = new DateField();
// so test can be run against Solr 1.2...
try {
Class clazz = Class.forName("org.apache.solr.schema.LegacyDateField");
f = (DateField) clazz.newInstance();
} catch (ClassNotFoundException ignored) {
// NOOP
}
}
public void assertToI(String expected, String input) {
assertEquals("Input: " + input, expected, f.toInternal(input));
}
public void testToInternal() throws Exception {
assertToI("1995-12-31T23:59:59.999", "1995-12-31T23:59:59.999Z");
assertToI("1995-12-31T23:59:59.99", "1995-12-31T23:59:59.99Z");
assertToI("1995-12-31T23:59:59.9", "1995-12-31T23:59:59.9Z");
assertToI("1995-12-31T23:59:59", "1995-12-31T23:59:59Z");
// this is the broken behavior
assertToI("1995-12-31T23:59:59.9998", "1995-12-31T23:59:59.9998Z");
assertToI("1995-12-31T23:59:59.9990", "1995-12-31T23:59:59.9990Z");
assertToI("1995-12-31T23:59:59.990", "1995-12-31T23:59:59.990Z");
assertToI("1995-12-31T23:59:59.900", "1995-12-31T23:59:59.900Z");
assertToI("1995-12-31T23:59:59.90", "1995-12-31T23:59:59.90Z");
assertToI("1995-12-31T23:59:59.000", "1995-12-31T23:59:59.000Z");
assertToI("1995-12-31T23:59:59.00", "1995-12-31T23:59:59.00Z");
assertToI("1995-12-31T23:59:59.0", "1995-12-31T23:59:59.0Z");
}
public void assertToI(String expected, long input) {
assertEquals("Input: " + input, expected, f.toInternal(new Date(input)));
}
public void testToInternalObj() throws Exception {
assertToI("1995-12-31T23:59:59.999", 820454399999l);
// this is the broken behavior
assertToI("1995-12-31T23:59:59.990", 820454399990l);
assertToI("1995-12-31T23:59:59.900", 820454399900l);
assertToI("1995-12-31T23:59:59.000", 820454399000l);
}
public void assertItoR(String expected, String input) {
assertEquals("Input: " + input, expected, f.indexedToReadable(input));
}
public void testIndexedToReadable() {
assertItoR("1995-12-31T23:59:59.999Z", "1995-12-31T23:59:59.999");
assertItoR("1995-12-31T23:59:59.99Z", "1995-12-31T23:59:59.99");
assertItoR("1995-12-31T23:59:59.9Z", "1995-12-31T23:59:59.9");
assertItoR("1995-12-31T23:59:59Z", "1995-12-31T23:59:59");
}
public void testFormatter() {
assertEquals("1970-01-01T00:00:00.005", f.formatDate(new Date(5)));
// all of this is broken behavior
assertEquals("1970-01-01T00:00:00.000", f.formatDate(new Date(0)));
assertEquals("1970-01-01T00:00:00.370", f.formatDate(new Date(370)));
assertEquals("1970-01-01T00:00:00.900", f.formatDate(new Date(900)));
}
}