public virtual void TestMultiAnalyzer_Rename()
{
QueryParser qp = new QueryParser(Util.Version.LUCENE_CURRENT, "", new MultiAnalyzer(this));
// trivial, no multiple tokens:
Assert.AreEqual("foo", qp.Parse("foo").ToString());
Assert.AreEqual("foo", qp.Parse("\"foo\"").ToString());
Assert.AreEqual("foo foobar", qp.Parse("foo foobar").ToString());
Assert.AreEqual("\"foo foobar\"", qp.Parse("\"foo foobar\"").ToString());
Assert.AreEqual("\"foo foobar blah\"", qp.Parse("\"foo foobar blah\"").ToString());
// two tokens at the same position:
Assert.AreEqual("(multi multi2) foo", qp.Parse("multi foo").ToString());
Assert.AreEqual("foo (multi multi2)", qp.Parse("foo multi").ToString());
Assert.AreEqual("(multi multi2) (multi multi2)", qp.Parse("multi multi").ToString());
Assert.AreEqual("+(foo (multi multi2)) +(bar (multi multi2))", qp.Parse("+(foo multi) +(bar multi)").ToString());
Assert.AreEqual("+(foo (multi multi2)) field:\"bar (multi multi2)\"", qp.Parse("+(foo multi) field:\"bar multi\"").ToString());
// phrases:
Assert.AreEqual("\"(multi multi2) foo\"", qp.Parse("\"multi foo\"").ToString());
Assert.AreEqual("\"foo (multi multi2)\"", qp.Parse("\"foo multi\"").ToString());
Assert.AreEqual("\"foo (multi multi2) foobar (multi multi2)\"", qp.Parse("\"foo multi foobar multi\"").ToString());
// fields:
Assert.AreEqual("(field:multi field:multi2) field:foo", qp.Parse("field:multi field:foo").ToString());
Assert.AreEqual("field:\"(multi multi2) foo\"", qp.Parse("field:\"multi foo\"").ToString());
// three tokens at one position:
Assert.AreEqual("triplemulti multi3 multi2", qp.Parse("triplemulti").ToString());
Assert.AreEqual("foo (triplemulti multi3 multi2) foobar", qp.Parse("foo triplemulti foobar").ToString());
// phrase with non-default slop:
Assert.AreEqual("\"(multi multi2) foo\"~10", qp.Parse("\"multi foo\"~10").ToString());
// phrase with non-default boost:
Assert.AreEqual("\"(multi multi2) foo\"^2.0", qp.Parse("\"multi foo\"^2").ToString());
// phrase after changing default slop
qp.PhraseSlop = 99;
Assert.AreEqual("\"(multi multi2) foo\"~99 bar", qp.Parse("\"multi foo\" bar").ToString());
Assert.AreEqual("\"(multi multi2) foo\"~99 \"foo bar\"~2", qp.Parse("\"multi foo\" \"foo bar\"~2").ToString());
qp.PhraseSlop = 0;
// non-default operator:
qp.DefaultOperator = QueryParser.AND_OPERATOR;
Assert.AreEqual("+(multi multi2) +foo", qp.Parse("multi foo").ToString());
}