1 # ====================================================================
2 # Licensed under the Apache License, Version 2.0 (the "License");
3 # you may not use this file except in compliance with the License.
4 # You may obtain a copy of the License at
6 # http://www.apache.org/licenses/LICENSE-2.0
8 # Unless required by applicable law or agreed to in writing, software
9 # distributed under the License is distributed on an "AS IS" BASIS,
10 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 # See the License for the specific language governing permissions and
12 # limitations under the License.
13 # ====================================================================
15 from unittest import TestCase, main
19 class BooleanOrTestCase(TestCase):
21 Unit tests ported from Java Lucene
24 def __init__(self, *args):
26 super(BooleanOrTestCase, self).__init__(*args)
31 self.t1 = TermQuery(Term(self.FIELD_T, "files"))
32 self.t2 = TermQuery(Term(self.FIELD_T, "deleting"))
33 self.c1 = TermQuery(Term(self.FIELD_C, "production"))
34 self.c2 = TermQuery(Term(self.FIELD_C, "optimize"))
41 writer = IndexWriter(rd, StandardAnalyzer(Version.LUCENE_CURRENT),
42 True, IndexWriter.MaxFieldLength.LIMITED)
45 d.add(Field(self.FIELD_T,
46 "Optimize not deleting all files",
47 Field.Store.YES, Field.Index.ANALYZED))
48 d.add(Field(self.FIELD_C,
49 "Deleted When I run an optimize in our production environment.",
50 Field.Store.YES, Field.Index.ANALYZED))
55 self.searcher = IndexSearcher(rd, True)
58 return self.searcher.search(q, 50).totalHits
60 def testElements(self):
62 self.assertEqual(1, self.search(self.t1))
63 self.assertEqual(1, self.search(self.t2))
64 self.assertEqual(1, self.search(self.c1))
65 self.assertEqual(1, self.search(self.c2))
70 q.add(BooleanClause(self.t1, BooleanClause.Occur.SHOULD))
71 q.add(BooleanClause(self.t2, BooleanClause.Occur.SHOULD))
72 q.add(BooleanClause(self.c1, BooleanClause.Occur.SHOULD))
73 q.add(BooleanClause(self.c2, BooleanClause.Occur.SHOULD))
74 self.assertEqual(1, self.search(q))
76 def testParenthesisMust(self):
79 q3.add(BooleanClause(self.t1, BooleanClause.Occur.SHOULD))
80 q3.add(BooleanClause(self.t2, BooleanClause.Occur.SHOULD))
82 q4.add(BooleanClause(self.c1, BooleanClause.Occur.MUST))
83 q4.add(BooleanClause(self.c2, BooleanClause.Occur.MUST))
85 q2.add(q3, BooleanClause.Occur.SHOULD)
86 q2.add(q4, BooleanClause.Occur.SHOULD)
87 self.assertEqual(1, self.search(q2))
89 def testParenthesisMust2(self):
92 q3.add(BooleanClause(self.t1, BooleanClause.Occur.SHOULD))
93 q3.add(BooleanClause(self.t2, BooleanClause.Occur.SHOULD))
95 q4.add(BooleanClause(self.c1, BooleanClause.Occur.SHOULD))
96 q4.add(BooleanClause(self.c2, BooleanClause.Occur.SHOULD))
98 q2.add(q3, BooleanClause.Occur.SHOULD)
99 q2.add(q4, BooleanClause.Occur.MUST)
100 self.assertEqual(1, self.search(q2))
102 def testParenthesisShould(self):
105 q3.add(BooleanClause(self.t1, BooleanClause.Occur.SHOULD))
106 q3.add(BooleanClause(self.t2, BooleanClause.Occur.SHOULD))
108 q4.add(BooleanClause(self.c1, BooleanClause.Occur.SHOULD))
109 q4.add(BooleanClause(self.c2, BooleanClause.Occur.SHOULD))
111 q2.add(q3, BooleanClause.Occur.SHOULD)
112 q2.add(q4, BooleanClause.Occur.SHOULD)
113 self.assertEqual(1, self.search(q2))
116 if __name__ == "__main__":
119 if '-loop' in sys.argv:
120 sys.argv.remove('-loop')