This is an automated email from the ASF dual-hosted git repository.
paulirwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
The following commit(s) were added to refs/heads/master by this push:
new 705a28886 Fix failing QueryParser Flexible tests due to zh-Hant-TW
culture bug, #846 (#1078)
705a28886 is described below
commit 705a288862a3fb79f2032cdbaafed693932adcd0
Author: Paul Irwin <[email protected]>
AuthorDate: Sun Jan 5 20:38:38 2025 -0700
Fix failing QueryParser Flexible tests due to zh-Hant-TW culture bug, #846
(#1078)
* Clean up TestNumericQueryParser code style and make static methods
instance, #846
* Add extra time zone logging, #846
* Fixes issue with zh-Hant-TW culture and negative offset time zones, #846
---
.../Flexible/Standard/TestNumericQueryParser.cs | 239 +++++++++++----------
1 file changed, 124 insertions(+), 115 deletions(-)
diff --git
a/src/Lucene.Net.Tests.QueryParser/Flexible/Standard/TestNumericQueryParser.cs
b/src/Lucene.Net.Tests.QueryParser/Flexible/Standard/TestNumericQueryParser.cs
index f3b21199f..797e02d54 100644
---
a/src/Lucene.Net.Tests.QueryParser/Flexible/Standard/TestNumericQueryParser.cs
+++
b/src/Lucene.Net.Tests.QueryParser/Flexible/Standard/TestNumericQueryParser.cs
@@ -1,5 +1,4 @@
-using J2N.Collections.Generic.Extensions;
-using J2N.Numerics;
+using J2N.Numerics;
using Lucene.Net.Analysis;
using Lucene.Net.Documents;
using Lucene.Net.Index;
@@ -38,6 +37,18 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
* limitations under the License.
*/
+ /// <summary>
+ /// Tests <see cref="StandardQueryParser"/> with numeric range queries.
+ /// </summary>
+ /// <remarks>
+ /// LUCENENET NOTE: Several properties have been changed from static to
instance,
+ /// so that the test can be run multiple times with different random
values, such
+ /// as with the <see cref="RepeatAttribute"/>. This also helps with
repeatability
+ /// of tests with a fixed seed.
+ /// <para />
+ /// However, note that test failures are not guaranteed to be repeatable
across
+ /// different systems, since the set of available cultures may be
different.
+ /// </remarks>
public class TestNumericQueryParser : LuceneTestCase
{
public enum NumberType
@@ -48,30 +59,30 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
private readonly static DateFormat[] DATE_STYLES = {DateFormat.FULL,
DateFormat.LONG,
DateFormat.MEDIUM, DateFormat.SHORT};
- private readonly static int PRECISION_STEP = 8;
- private readonly static String FIELD_NAME = "field";
- private static CultureInfo? LOCALE;
- private static TimeZoneInfo? TIMEZONE;
- private static IDictionary<String, J2N.Numerics.Number>?
RANDOM_NUMBER_MAP;
+ // LUCENENET NOTE: Several fields changed from static to instance, see
class remarks.
+ private const int PRECISION_STEP = 8;
+ private const string FIELD_NAME = "field";
+ private CultureInfo? LOCALE;
+ private TimeZoneInfo? TIMEZONE;
+ private IDictionary<string, J2N.Numerics.Number>? RANDOM_NUMBER_MAP;
private readonly static IEscapeQuerySyntax ESCAPER = new
Standard.Parser.EscapeQuerySyntax();
- private readonly static String DATE_FIELD_NAME = "date";
- private static DateFormat DATE_STYLE;
- private static DateFormat TIME_STYLE;
+ private const string DATE_FIELD_NAME = "date";
+ private DateFormat DATE_STYLE;
+ private DateFormat TIME_STYLE;
- private static Analyzer? ANALYZER;
+ private Analyzer? ANALYZER;
- private static NumberFormat? NUMBER_FORMAT;
+ private NumberFormat? NUMBER_FORMAT;
+ private StandardQueryParser? qp;
- private static StandardQueryParser? qp;
+ private NumberDateFormat? DATE_FORMAT;
- private static NumberDateFormat? DATE_FORMAT;
+ private Directory? directory = null;
+ private IndexReader? reader = null;
+ private IndexSearcher? searcher = null;
- private static Directory? directory = null;
- private static IndexReader? reader = null;
- private static IndexSearcher? searcher = null;
-
- private static bool checkDateFormatSanity(NumberDateFormat dateFormat,
long date, TimeZoneInfo timeZone)
+ private static bool CheckDateFormatSanity(NumberDateFormat dateFormat,
long date, TimeZoneInfo timeZone)
{
IFormatProvider provider = dateFormat.FormatProvider ??
CultureInfo.CurrentCulture;
@@ -83,7 +94,8 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
offset = TimeZoneInfo.ConvertTime(offset, timeZone);
string formattedDate = offset.ToString(format, provider);
- return DateTimeOffset.TryParseExact(formattedDate, format,
provider, DateTimeStyles.None, out DateTimeOffset _);
+ return DateTimeOffset.TryParseExact(formattedDate, format,
provider, DateTimeStyles.None, out DateTimeOffset parsed)
+ && parsed.ToUnixTimeMilliseconds() == date;
}
// LUCENENET specific bounds check
@@ -129,11 +141,11 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
return dateTimeFormat.Calendar;
}
-
- [OneTimeSetUp]
- public override void OneTimeSetUp()
+ // LUCENENET specific - changed from OneTimeSetUp to SetUp, see class
remarks.
+ [SetUp]
+ public override void SetUp()
{
- base.OneTimeSetUp();
+ base.SetUp();
ANALYZER = new MockAnalyzer(Random);
@@ -198,13 +210,19 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
randomDate = Math.Abs(randomDate);
} while (randomDate == 0L);
- dateFormatSanityCheckPass &=
checkDateFormatSanity(DATE_FORMAT, randomDate, TIMEZONE);
+ dateFormatSanityCheckPass &=
CheckDateFormatSanity(DATE_FORMAT, randomDate, TIMEZONE);
- dateFormatSanityCheckPass &=
checkDateFormatSanity(DATE_FORMAT, 0, TIMEZONE);
+ // LUCENENET NOTE - issue #846: the zh-Hant-TW culture on
net5.0-net8.0 does not include
+ // the "tt" AM/PM designator in the long time pattern, causing
midnight at the unix epoch
+ // to be interpreted as an AM time the day before when the
time zone has a negative offset,
+ // instead of PM as it should be. This "sanity" check also
makes sure that the round trip
+ // from the unix epoch to a string and back to a date is
consistent. If it is not, we will
+ // try again with a different locale/time zone. This was fixed
in net9.0, so that culture
+ // with a negative offset should work as expected.
+ dateFormatSanityCheckPass &=
CheckDateFormatSanity(DATE_FORMAT, 0, TIMEZONE);
- dateFormatSanityCheckPass &= checkDateFormatSanity(DATE_FORMAT,
+ dateFormatSanityCheckPass &= CheckDateFormatSanity(DATE_FORMAT,
-randomDate, TIMEZONE);
-
count++;
} while (!dateFormatSanityCheckPass);
@@ -249,9 +267,9 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
.SetMergePolicy(NewLogMergePolicy()));
Document doc = new Document();
- IDictionary<String, NumericConfig> numericConfigMap = new
JCG.Dictionary<String, NumericConfig>();
- IDictionary<String, Field> numericFieldMap = new
JCG.Dictionary<String, Field>();
- qp.NumericConfigMap = (numericConfigMap);
+ IDictionary<string, NumericConfig> numericConfigMap = new
JCG.Dictionary<string, NumericConfig>();
+ IDictionary<string, Field> numericFieldMap = new
JCG.Dictionary<string, Field>();
+ qp.NumericConfigMap = numericConfigMap;
foreach (NumericType type in
(NumericType[])Enum.GetValues(typeof(NumericType)))
{
@@ -263,9 +281,9 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
numericConfigMap[type.ToString()] = new
NumericConfig(PRECISION_STEP, NUMBER_FORMAT, type);
FieldType ft2 = new FieldType(Int32Field.TYPE_NOT_STORED);
- ft2.NumericType = (type);
- ft2.IsStored = (true);
- ft2.NumericPrecisionStep = (PRECISION_STEP);
+ ft2.NumericType = type;
+ ft2.IsStored = true;
+ ft2.NumericPrecisionStep = PRECISION_STEP;
ft2.Freeze();
Field field;
@@ -294,15 +312,15 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
numericConfigMap[DATE_FIELD_NAME] = new
NumericConfig(PRECISION_STEP, DATE_FORMAT, NumericType.INT64);
FieldType ft = new FieldType(Int64Field.TYPE_NOT_STORED);
- ft.IsStored = (true);
- ft.NumericPrecisionStep = (PRECISION_STEP);
+ ft.IsStored = true;
+ ft.NumericPrecisionStep = PRECISION_STEP;
Int64Field dateField = new Int64Field(DATE_FIELD_NAME, 0L, ft);
numericFieldMap[DATE_FIELD_NAME] = dateField;
doc.Add(dateField);
foreach (NumberType numberType in
(NumberType[])Enum.GetValues(typeof(NumberType)))
{
- setFieldValues(numberType, numericFieldMap);
+ SetFieldValues(numberType, numericFieldMap);
if (Verbose) Console.WriteLine("Indexing document: " + doc);
writer.AddDocument(doc);
}
@@ -310,12 +328,10 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
reader = writer.GetReader();
searcher = NewSearcher(reader);
writer.Dispose();
-
}
- private static Number? GetNumberType(NumberType? numberType, String
fieldName)
+ private Number? GetNumberType(NumberType? numberType, string fieldName)
{
-
if (numberType is null)
{
return null;
@@ -361,13 +377,11 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
default:
return J2N.Numerics.Int32.GetInstance(0);
-
}
-
}
- private static void setFieldValues(NumberType numberType,
- IDictionary<String, Field> numericFieldMap)
+ private void SetFieldValues(NumberType numberType,
+ IDictionary<string, Field> numericFieldMap)
{
Number? number = GetNumberType(numberType, NumericType.DOUBLE
@@ -412,11 +426,11 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
[Test]
public void TestInclusiveNumericRange()
{
- assertRangeQuery(NumberType.ZERO, NumberType.ZERO, true, true, 1);
- assertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, true, true,
2);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, true, true,
2);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, true,
true, 3);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, true,
true, 1);
+ AssertRangeQuery(NumberType.ZERO, NumberType.ZERO, true, true, 1);
+ AssertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, true, true,
2);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, true, true,
2);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, true,
true, 3);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, true,
true, 1);
}
[Test]
@@ -424,10 +438,10 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
// exclusive at the same time
public void TestInclusiveLowerNumericRange()
{
- assertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, false,
true, 1);
- assertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, false,
true, 1);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, false,
true, 2);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, false,
true, 0);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, false,
true, 1);
+ AssertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, false,
true, 1);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, false,
true, 2);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, false,
true, 0);
}
[Test]
@@ -435,77 +449,75 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
// exclusive at the same time
public void TestInclusiveUpperNumericRange()
{
- assertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, true,
false, 1);
- assertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, true,
false, 1);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, true,
false, 2);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, true,
false, 0);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, true,
false, 1);
+ AssertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, true,
false, 1);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, true,
false, 2);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, true,
false, 0);
}
[Test]
public void TestExclusiveNumericRange()
{
- assertRangeQuery(NumberType.ZERO, NumberType.ZERO, false, false,
0);
- assertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, false,
false, 0);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, false,
false, 0);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, false,
false, 1);
- assertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, false,
false, 0);
+ AssertRangeQuery(NumberType.ZERO, NumberType.ZERO, false, false,
0);
+ AssertRangeQuery(NumberType.ZERO, NumberType.POSITIVE, false,
false, 0);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.ZERO, false,
false, 0);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.POSITIVE, false,
false, 1);
+ AssertRangeQuery(NumberType.NEGATIVE, NumberType.NEGATIVE, false,
false, 0);
}
[Test]
public void TestOpenRangeNumericQuery()
{
- assertOpenRangeQuery(NumberType.ZERO, "<", 1);
- assertOpenRangeQuery(NumberType.POSITIVE, "<", 2);
- assertOpenRangeQuery(NumberType.NEGATIVE, "<", 0);
+ AssertOpenRangeQuery(NumberType.ZERO, "<", 1);
+ AssertOpenRangeQuery(NumberType.POSITIVE, "<", 2);
+ AssertOpenRangeQuery(NumberType.NEGATIVE, "<", 0);
- assertOpenRangeQuery(NumberType.ZERO, "<=", 2);
- assertOpenRangeQuery(NumberType.POSITIVE, "<=", 3);
- assertOpenRangeQuery(NumberType.NEGATIVE, "<=", 1);
+ AssertOpenRangeQuery(NumberType.ZERO, "<=", 2);
+ AssertOpenRangeQuery(NumberType.POSITIVE, "<=", 3);
+ AssertOpenRangeQuery(NumberType.NEGATIVE, "<=", 1);
- assertOpenRangeQuery(NumberType.ZERO, ">", 1);
- assertOpenRangeQuery(NumberType.POSITIVE, ">", 0);
- assertOpenRangeQuery(NumberType.NEGATIVE, ">", 2);
+ AssertOpenRangeQuery(NumberType.ZERO, ">", 1);
+ AssertOpenRangeQuery(NumberType.POSITIVE, ">", 0);
+ AssertOpenRangeQuery(NumberType.NEGATIVE, ">", 2);
- assertOpenRangeQuery(NumberType.ZERO, ">=", 2);
- assertOpenRangeQuery(NumberType.POSITIVE, ">=", 1);
- assertOpenRangeQuery(NumberType.NEGATIVE, ">=", 3);
+ AssertOpenRangeQuery(NumberType.ZERO, ">=", 2);
+ AssertOpenRangeQuery(NumberType.POSITIVE, ">=", 1);
+ AssertOpenRangeQuery(NumberType.NEGATIVE, ">=", 3);
- assertOpenRangeQuery(NumberType.NEGATIVE, "=", 1);
- assertOpenRangeQuery(NumberType.ZERO, "=", 1);
- assertOpenRangeQuery(NumberType.POSITIVE, "=", 1);
+ AssertOpenRangeQuery(NumberType.NEGATIVE, "=", 1);
+ AssertOpenRangeQuery(NumberType.ZERO, "=", 1);
+ AssertOpenRangeQuery(NumberType.POSITIVE, "=", 1);
- assertRangeQuery(NumberType.NEGATIVE, null, true, true, 3);
- assertRangeQuery(NumberType.NEGATIVE, null, false, true, 2);
- assertRangeQuery(NumberType.POSITIVE, null, true, false, 1);
- assertRangeQuery(NumberType.ZERO, null, false, false, 1);
+ AssertRangeQuery(NumberType.NEGATIVE, null, true, true, 3);
+ AssertRangeQuery(NumberType.NEGATIVE, null, false, true, 2);
+ AssertRangeQuery(NumberType.POSITIVE, null, true, false, 1);
+ AssertRangeQuery(NumberType.ZERO, null, false, false, 1);
- assertRangeQuery(null, NumberType.POSITIVE, true, true, 3);
- assertRangeQuery(null, NumberType.POSITIVE, true, false, 2);
- assertRangeQuery(null, NumberType.NEGATIVE, false, true, 1);
- assertRangeQuery(null, NumberType.ZERO, false, false, 1);
+ AssertRangeQuery(null, NumberType.POSITIVE, true, true, 3);
+ AssertRangeQuery(null, NumberType.POSITIVE, true, false, 2);
+ AssertRangeQuery(null, NumberType.NEGATIVE, false, true, 1);
+ AssertRangeQuery(null, NumberType.ZERO, false, false, 1);
- assertRangeQuery(null, null, false, false, 3);
- assertRangeQuery(null, null, true, true, 3);
+ AssertRangeQuery(null, null, false, false, 3);
+ AssertRangeQuery(null, null, true, true, 3);
}
[Test]
public void TestSimpleNumericQuery()
{
- assertSimpleQuery(NumberType.ZERO, 1);
- assertSimpleQuery(NumberType.POSITIVE, 1);
- assertSimpleQuery(NumberType.NEGATIVE, 1);
+ AssertSimpleQuery(NumberType.ZERO, 1);
+ AssertSimpleQuery(NumberType.POSITIVE, 1);
+ AssertSimpleQuery(NumberType.NEGATIVE, 1);
}
- public void assertRangeQuery(NumberType? lowerType, NumberType?
upperType,
+ public void AssertRangeQuery(NumberType? lowerType, NumberType?
upperType,
bool lowerInclusive, bool upperInclusive, int expectedDocCount)
{
-
-
StringBuilder sb = new StringBuilder();
- String lowerInclusiveStr = (lowerInclusive ? "[" : "{");
- String upperInclusiveStr = (upperInclusive ? "]" : "}");
+ string lowerInclusiveStr = (lowerInclusive ? "[" : "{");
+ string upperInclusiveStr = (upperInclusive ? "]" : "}");
foreach (NumericType type in
(NumericType[])Enum.GetValues(typeof(NumericType)))
{
@@ -514,8 +526,8 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
continue;
}
- String lowerStr = NumberToString(GetNumberType(lowerType,
type.ToString()));
- String upperStr = NumberToString(GetNumberType(upperType,
type.ToString()));
+ string lowerStr = NumberToString(GetNumberType(lowerType,
type.ToString()));
+ string upperStr = NumberToString(GetNumberType(upperType,
type.ToString()));
sb.append("+").append(type.ToString()).append(':').append(lowerInclusiveStr)
.append('"').append(lowerStr).append("\" TO
\"").append(upperStr)
@@ -524,8 +536,8 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
Number? lowerDateNumber = GetNumberType(lowerType,
DATE_FIELD_NAME);
Number? upperDateNumber = GetNumberType(upperType,
DATE_FIELD_NAME);
- String lowerDateStr;
- String upperDateStr;
+ string lowerDateStr;
+ string upperDateStr;
if (lowerDateNumber != null)
{
@@ -566,12 +578,10 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
TestQuery(sb.toString(), expectedDocCount);
-
}
- public void assertOpenRangeQuery(NumberType boundType, String
@operator, int expectedDocCount)
+ public void AssertOpenRangeQuery(NumberType boundType, string
@operator, int expectedDocCount)
{
-
StringBuilder sb = new StringBuilder();
foreach (NumericType type in
(NumericType[])Enum.GetValues(typeof(NumericType)))
@@ -581,7 +591,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
continue;
}
- String boundStr = NumberToString(GetNumberType(boundType,
type.ToString()));
+ string boundStr = NumberToString(GetNumberType(boundType,
type.ToString()));
sb.append("+").append(type.ToString()).append(@operator).append('"').append(boundStr).append('"').append('
');
}
@@ -601,7 +611,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
TestQuery(sb.toString(), expectedDocCount);
}
- public void assertSimpleQuery(NumberType numberType, int
expectedDocCount)
+ public void AssertSimpleQuery(NumberType numberType, int
expectedDocCount)
{
StringBuilder sb = new StringBuilder();
@@ -612,7 +622,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
continue;
}
- String numberStr = NumberToString(GetNumberType(numberType,
type.ToString()));
+ string numberStr = NumberToString(GetNumberType(numberType,
type.ToString()));
sb.append('+').append(type.ToString()).append(":\"").append(numberStr)
.append("\" ");
}
@@ -631,10 +641,9 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
TestQuery(sb.toString(), expectedDocCount);
-
}
- private void TestQuery(String queryStr, int expectedDocCount)
+ private void TestQuery(string queryStr, int expectedDocCount)
{
if (Verbose) Console.WriteLine("Parsing: " + queryStr);
@@ -642,28 +651,28 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
if (Verbose) Console.WriteLine("Querying: " + query);
TopDocs topDocs = searcher!.Search(query, 1000);
- String msg = "Query <" + queryStr + "> retrieved " +
topDocs.TotalHits
- + " document(s), " + expectedDocCount + " document(s)
expected.";
+ string msg = $"Query <{queryStr}> retrieved {topDocs.TotalHits}
document(s), {expectedDocCount} document(s) expected. " +
+ $"[LOCALE: {LOCALE}, TIMEZONE: {TIMEZONE!.Id},
DATE_STYLE: {DATE_STYLE}, TIME_STYLE: {TIME_STYLE}]";
if (Verbose) Console.WriteLine(msg);
-
assertEquals(msg, expectedDocCount, topDocs.TotalHits);
}
- private static String NumberToString(/*Number*/ object? number)
+ private string NumberToString(Number? number)
{
return number is null ? "*" :
ESCAPER.Escape(NUMBER_FORMAT!.Format(number),
LOCALE, EscapeQuerySyntaxType.STRING).toString();
}
- private static /*Number*/ object NormalizeNumber(/*Number*/ object
number)
+ private Number NormalizeNumber(/*Number*/ object number)
{
return NUMBER_FORMAT!.Parse(NUMBER_FORMAT.Format(number));
}
- [OneTimeTearDown]
- public override void OneTimeTearDown()
+ // LUCENENET specific - changed from OneTimeTearDown to TearDown, see
class remarks.
+ [TearDown]
+ public override void TearDown()
{
searcher = null;
reader?.Dispose();
@@ -672,7 +681,7 @@ namespace Lucene.Net.QueryParsers.Flexible.Standard
directory = null;
qp = null;
- base.OneTimeTearDown();
+ base.TearDown();
}
}
}