LUCENE-1852: Fix localization test failures.

git-svn-id: https://svn.apache.org/repos/asf/lucene/java/trunk@807499 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Busch 2009-08-25 06:48:36 +00:00
parent 4b6e01654c
commit e8caefdb7d
5 changed files with 90 additions and 31 deletions

View File

@ -813,6 +813,9 @@ Test Cases
MultiSearcher when possible to help excercise more edge cases.
(Chris Hostetter, Mark Miller)
2. LUCENE-1852: Fix localization test failures.
(Robert Muir via Michael Busch)
======================= Release 2.4.1 2009-03-09 =======================
API Changes

View File

@ -17,11 +17,9 @@ package org.apache.lucene.queryParser.precedence;
* limitations under the License.
*/
import junit.framework.TestCase;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.LowerCaseTokenizer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.WhitespaceAnalyzer;
@ -37,13 +35,23 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeQuery;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.util.LocalizedTestCase;
import java.io.IOException;
import java.io.Reader;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashSet;
public class TestPrecedenceQueryParser extends TestCase {
public class TestPrecedenceQueryParser extends LocalizedTestCase {
public TestPrecedenceQueryParser(String name) {
super(name, new HashSet(Arrays.asList(new String[]{
"testDateRange", "testNumber"
})));
}
public static Analyzer qpAnalyzer = new QPTestAnalyzer();
@ -107,7 +115,8 @@ public class TestPrecedenceQueryParser extends TestCase {
private int originalMaxClauses;
public void setUp() {
public void setUp() throws Exception {
super.setUp();
originalMaxClauses = BooleanQuery.getMaxClauseCount();
}
@ -360,6 +369,14 @@ public class TestPrecedenceQueryParser extends TestCase {
assertQueryEquals("( bar blar { a TO z}) ", null, "bar blar {a TO z}");
assertQueryEquals("gack ( bar blar { a TO z}) ", null, "gack (bar blar {a TO z})");
}
private String escapeDateString(String s) {
if (s.contains(" ")) {
return "\"" + s + "\"";
} else {
return s;
}
}
public String getDate(String s) throws Exception {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
@ -368,7 +385,7 @@ public class TestPrecedenceQueryParser extends TestCase {
public String getLocalizedDate(int year, int month, int day) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
Calendar calendar = Calendar.getInstance();
Calendar calendar = new GregorianCalendar();
calendar.set(year, month, day);
return df.format(calendar.getTime());
}
@ -376,9 +393,9 @@ public class TestPrecedenceQueryParser extends TestCase {
public void testDateRange() throws Exception {
String startDate = getLocalizedDate(2002, 1, 1);
String endDate = getLocalizedDate(2002, 1, 4);
assertQueryEquals("[ " + startDate + " TO " + endDate + "]", null,
assertQueryEquals("[ " + escapeDateString(startDate) + " TO " + escapeDateString(endDate) + "]", null,
"[" + getDate(startDate) + " TO " + getDate(endDate) + "]");
assertQueryEquals("{ " + startDate + " " + endDate + " }", null,
assertQueryEquals("{ " + escapeDateString(startDate) + " " + escapeDateString(endDate) + " }", null,
"{" + getDate(startDate) + " TO " + getDate(endDate) + "}");
}

View File

@ -21,8 +21,11 @@ import java.io.IOException;
import java.io.Reader;
import java.text.Collator;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@ -68,7 +71,7 @@ import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TermRangeQuery;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util.LocalizedTestCase;
/**
* This test case is a copy of the core Lucene query parser test, it was adapted
@ -76,8 +79,16 @@ import org.apache.lucene.util.LuceneTestCase;
*
* Tests QueryParser.
*/
public class TestQueryParserWrapper extends LuceneTestCase {
public class TestQueryParserWrapper extends LocalizedTestCase {
public TestQueryParserWrapper(String name) {
super(name, new HashSet(Arrays.asList(new String[]{
"testLegacyDateRange", "testDateRange",
"testCJK", "testNumber", "testFarsiRangeCollating",
"testLocalDateFormat"
})));
}
public static Analyzer qpAnalyzer = new QPTestAnalyzer();
public static class QPTestFilter extends TokenFilter {
@ -618,6 +629,14 @@ public class TestQueryParserWrapper extends LuceneTestCase {
is.close();
}
private String escapeDateString(String s) {
if (s.contains(" ")) {
return "\"" + s + "\"";
} else {
return s;
}
}
/** for testing legacy DateField support */
private String getLegacyDate(String s) throws Exception {
@ -645,7 +664,7 @@ public class TestQueryParserWrapper extends LuceneTestCase {
private String getLocalizedDate(int year, int month, int day,
boolean extendLastDate) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
Calendar calendar = Calendar.getInstance();
Calendar calendar = new GregorianCalendar();
calendar.set(year, month, day);
if (extendLastDate) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
@ -660,20 +679,20 @@ public class TestQueryParserWrapper extends LuceneTestCase {
public void testLegacyDateRange() throws Exception {
String startDate = getLocalizedDate(2002, 1, 1, false);
String endDate = getLocalizedDate(2002, 1, 4, false);
Calendar endDateExpected = Calendar.getInstance();
Calendar endDateExpected = new GregorianCalendar();
endDateExpected.set(2002, 1, 4, 23, 59, 59);
endDateExpected.set(Calendar.MILLISECOND, 999);
assertQueryEquals("[ " + startDate + " TO " + endDate + "]", null, "["
assertQueryEquals("[ " + escapeDateString(startDate) + " TO " + escapeDateString(endDate) + "]", null, "["
+ getLegacyDate(startDate) + " TO "
+ DateField.dateToString(endDateExpected.getTime()) + "]");
assertQueryEquals("{ " + startDate + " " + endDate + " }", null, "{"
assertQueryEquals("{ " + escapeDateString(startDate) + " " + escapeDateString(endDate) + " }", null, "{"
+ getLegacyDate(startDate) + " TO " + getLegacyDate(endDate) + "}");
}
public void testDateRange() throws Exception {
String startDate = getLocalizedDate(2002, 1, 1, false);
String endDate = getLocalizedDate(2002, 1, 4, false);
Calendar endDateExpected = Calendar.getInstance();
Calendar endDateExpected = new GregorianCalendar();
endDateExpected.set(2002, 1, 4, 23, 59, 59);
endDateExpected.set(Calendar.MILLISECOND, 999);
final String defaultField = "default";
@ -715,10 +734,10 @@ public class TestQueryParserWrapper extends LuceneTestCase {
public void assertDateRangeQueryEquals(QueryParserWrapper qp, String field,
String startDate, String endDate, Date endDateInclusive,
DateTools.Resolution resolution) throws Exception {
assertQueryEquals(qp, field, field + ":[" + startDate + " TO " + endDate
assertQueryEquals(qp, field, field + ":[" + escapeDateString(startDate) + " TO " + escapeDateString(endDate)
+ "]", "[" + getDate(startDate, resolution) + " TO "
+ getDate(endDateInclusive, resolution) + "]");
assertQueryEquals(qp, field, field + ":{" + startDate + " TO " + endDate
assertQueryEquals(qp, field, field + ":{" + escapeDateString(startDate) + " TO " + escapeDateString(endDate)
+ "}", "{" + getDate(startDate, resolution) + " TO "
+ getDate(endDate, resolution) + "}");
}
@ -1124,7 +1143,7 @@ public class TestQueryParserWrapper extends LuceneTestCase {
int hour, int minute, int second, IndexWriter iw) throws IOException {
Document d = new Document();
d.add(new Field("f", content, Field.Store.YES, Field.Index.ANALYZED));
Calendar cal = Calendar.getInstance();
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.set(year, month - 1, day, hour, minute, second);
d.add(new Field("date", DateField.dateToString(cal.getTime()),
Field.Store.YES, Field.Index.NOT_ANALYZED));

View File

@ -4,9 +4,11 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.Locale;
import org.apache.lucene.util.LocalizedTestCase;
import org.apache.lucene.util.LuceneTestCase;
/**
@ -26,7 +28,7 @@ import org.apache.lucene.util.LuceneTestCase;
* limitations under the License.
*/
public class TestDateTools extends LuceneTestCase {
public class TestDateTools extends LocalizedTestCase {
public void testStringToDate() throws ParseException {
@ -57,7 +59,7 @@ public class TestDateTools extends LuceneTestCase {
public void testStringtoTime() throws ParseException {
long time = DateTools.stringToTime("197001010000");
Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();
cal.set(1970, 0, 1, // year=1970, month=january, day=1
0, 0, 0); // hour, minute, second
cal.set(Calendar.MILLISECOND, 0);
@ -71,7 +73,7 @@ public class TestDateTools extends LuceneTestCase {
}
public void testDateAndTimetoString() throws ParseException {
Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
cal.set(2004, 1, 3, // year=2004, month=february(!), day=3
22, 8, 56); // hour, minute, second
@ -135,7 +137,7 @@ public class TestDateTools extends LuceneTestCase {
}
public void testRound() {
Calendar cal = Calendar.getInstance();
Calendar cal = new GregorianCalendar();
cal.setTimeZone(TimeZone.getTimeZone("GMT"));
cal.set(2004, 1, 3, // year=2004, month=february(!), day=3
22, 8, 56); // hour, minute, second

View File

@ -21,8 +21,10 @@ import java.io.IOException;
import java.io.Reader;
import java.text.Collator;
import java.text.DateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
@ -58,13 +60,21 @@ import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.util.LocalizedTestCase;
/**
* Tests QueryParser.
*/
public class TestQueryParser extends BaseTokenStreamTestCase {
public class TestQueryParser extends LocalizedTestCase {
public TestQueryParser(String name) {
super(name, new HashSet(Arrays.asList(new String[]{
"testLegacyDateRange", "testDateRange",
"testCJK", "testNumber", "testFarsiRangeCollating",
"testLocalDateFormat"
})));
}
public static Analyzer qpAnalyzer = new QPTestAnalyzer();
public static class QPTestFilter extends TokenFilter {
@ -495,6 +505,14 @@ public class TestQueryParser extends BaseTokenStreamTestCase {
is.close();
}
private String escapeDateString(String s) {
if (s.contains(" ")) {
return "\"" + s + "\"";
} else {
return s;
}
}
/** for testing legacy DateField support */
private String getLegacyDate(String s) throws Exception {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
@ -518,7 +536,7 @@ public class TestQueryParser extends BaseTokenStreamTestCase {
private String getLocalizedDate(int year, int month, int day, boolean extendLastDate) {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
Calendar calendar = Calendar.getInstance();
Calendar calendar = new GregorianCalendar();
calendar.set(year, month, day);
if (extendLastDate) {
calendar.set(Calendar.HOUR_OF_DAY, 23);
@ -533,19 +551,19 @@ public class TestQueryParser extends BaseTokenStreamTestCase {
public void testLegacyDateRange() throws Exception {
String startDate = getLocalizedDate(2002, 1, 1, false);
String endDate = getLocalizedDate(2002, 1, 4, false);
Calendar endDateExpected = Calendar.getInstance();
Calendar endDateExpected = new GregorianCalendar();
endDateExpected.set(2002, 1, 4, 23, 59, 59);
endDateExpected.set(Calendar.MILLISECOND, 999);
assertQueryEquals("[ " + startDate + " TO " + endDate + "]", null,
assertQueryEquals("[ " + escapeDateString(startDate) + " TO " + escapeDateString(endDate) + "]", null,
"[" + getLegacyDate(startDate) + " TO " + DateField.dateToString(endDateExpected.getTime()) + "]");
assertQueryEquals("{ " + startDate + " " + endDate + " }", null,
assertQueryEquals("{ " + escapeDateString(startDate) + " " + escapeDateString(endDate) + " }", null,
"{" + getLegacyDate(startDate) + " TO " + getLegacyDate(endDate) + "}");
}
public void testDateRange() throws Exception {
String startDate = getLocalizedDate(2002, 1, 1, false);
String endDate = getLocalizedDate(2002, 1, 4, false);
Calendar endDateExpected = Calendar.getInstance();
Calendar endDateExpected = new GregorianCalendar();
endDateExpected.set(2002, 1, 4, 23, 59, 59);
endDateExpected.set(Calendar.MILLISECOND, 999);
final String defaultField = "default";
@ -585,9 +603,9 @@ public class TestQueryParser extends BaseTokenStreamTestCase {
public void assertDateRangeQueryEquals(QueryParser qp, String field, String startDate, String endDate,
Date endDateInclusive, DateTools.Resolution resolution) throws Exception {
assertQueryEquals(qp, field, field + ":[" + startDate + " TO " + endDate + "]",
assertQueryEquals(qp, field, field + ":[" + escapeDateString(startDate) + " TO " + escapeDateString(endDate) + "]",
"[" + getDate(startDate, resolution) + " TO " + getDate(endDateInclusive, resolution) + "]");
assertQueryEquals(qp, field, field + ":{" + startDate + " TO " + endDate + "}",
assertQueryEquals(qp, field, field + ":{" + escapeDateString(startDate) + " TO " + escapeDateString(endDate) + "}",
"{" + getDate(startDate, resolution) + " TO " + getDate(endDate, resolution) + "}");
}
@ -985,7 +1003,7 @@ public class TestQueryParser extends BaseTokenStreamTestCase {
int day, int hour, int minute, int second, IndexWriter iw) throws IOException {
Document d = new Document();
d.add(new Field("f", content, Field.Store.YES, Field.Index.ANALYZED));
Calendar cal = Calendar.getInstance();
Calendar cal = Calendar.getInstance(Locale.ENGLISH);
cal.set(year, month-1, day, hour, minute, second);
d.add(new Field("date", DateField.dateToString(cal.getTime()), Field.Store.YES, Field.Index.NOT_ANALYZED));
iw.addDocument(d);