]> source.dussan.org Git - archiva.git/blob
b0cc88e980351043dabe859b99bc629d59f1f191
[archiva.git] /
1 package org.apache.maven.archiva.indexer.query;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *   http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import junit.framework.TestCase;
23
24 import java.util.Iterator;
25
26 /**
27  * @author Brett Porter
28  */
29 public class QueryTest
30     extends TestCase
31 {
32     private QueryTerm term1 = new QueryTerm( "field1", "value1" );
33
34     private QueryTerm term2 = new QueryTerm( "field2", "value2" );
35
36     private QueryTerm term3 = new QueryTerm( "field3", "value3" );
37
38     public void testQueryTerm()
39     {
40         QueryTerm query = new QueryTerm( "Field", "Value" );
41         assertEquals( "check field setting", "Field", query.getField() );
42         assertEquals( "check value setting", "Value", query.getValue() );
43     }
44
45     public void testSingleTermQuery()
46     {
47         SingleTermQuery query = new SingleTermQuery( "Field", "Value" );
48         assertEquals( "check field setting", "Field", query.getField() );
49         assertEquals( "check value setting", "Value", query.getValue() );
50
51         query = new SingleTermQuery( term1 );
52         assertEquals( "check field setting", "field1", query.getField() );
53         assertEquals( "check value setting", "value1", query.getValue() );
54     }
55
56     public void testRangeQueryOpen()
57     {
58         RangeQuery rangeQuery = RangeQuery.createOpenRange();
59         assertNull( "Check range has no start", rangeQuery.getBegin() );
60         assertNull( "Check range has no end", rangeQuery.getEnd() );
61     }
62
63     public void testRangeQueryExclusive()
64     {
65         RangeQuery rangeQuery = RangeQuery.createExclusiveRange( term1, term2 );
66         assertEquals( "Check range start", term1, rangeQuery.getBegin() );
67         assertEquals( "Check range end", term2, rangeQuery.getEnd() );
68         assertFalse( "Check exclusive", rangeQuery.isInclusive() );
69     }
70
71     public void testRangeQueryInclusive()
72     {
73         RangeQuery rangeQuery = RangeQuery.createInclusiveRange( term1, term2 );
74         assertEquals( "Check range start", term1, rangeQuery.getBegin() );
75         assertEquals( "Check range end", term2, rangeQuery.getEnd() );
76         assertTrue( "Check inclusive", rangeQuery.isInclusive() );
77     }
78
79     public void testRangeQueryOpenEnded()
80     {
81         RangeQuery rangeQuery = RangeQuery.createGreaterThanOrEqualToRange( term1 );
82         assertEquals( "Check range start", term1, rangeQuery.getBegin() );
83         assertNull( "Check range end", rangeQuery.getEnd() );
84         assertTrue( "Check inclusive", rangeQuery.isInclusive() );
85
86         rangeQuery = RangeQuery.createGreaterThanRange( term1 );
87         assertEquals( "Check range start", term1, rangeQuery.getBegin() );
88         assertNull( "Check range end", rangeQuery.getEnd() );
89         assertFalse( "Check exclusive", rangeQuery.isInclusive() );
90
91         rangeQuery = RangeQuery.createLessThanOrEqualToRange( term1 );
92         assertNull( "Check range start", rangeQuery.getBegin() );
93         assertEquals( "Check range end", term1, rangeQuery.getEnd() );
94         assertTrue( "Check inclusive", rangeQuery.isInclusive() );
95
96         rangeQuery = RangeQuery.createLessThanRange( term1 );
97         assertNull( "Check range start", rangeQuery.getBegin() );
98         assertEquals( "Check range end", term1, rangeQuery.getEnd() );
99         assertFalse( "Check exclusive", rangeQuery.isInclusive() );
100     }
101
102     public void testCompundQuery()
103     {
104         CompoundQuery query = new CompoundQuery();
105         assertTrue( "check query is empty", query.getCompoundQueryTerms().isEmpty() );
106
107         query.and( term1 );
108         query.or( term2 );
109         query.not( term3 );
110
111         Iterator i = query.getCompoundQueryTerms().iterator();
112         CompoundQueryTerm term = (CompoundQueryTerm) i.next();
113         assertEquals( "Check first term", "field1", getQuery( term ).getField() );
114         assertEquals( "Check first term", "value1", getQuery( term ).getValue() );
115         assertTrue( "Check first term", term.isRequired() );
116         assertFalse( "Check first term", term.isProhibited() );
117
118         term = (CompoundQueryTerm) i.next();
119         assertEquals( "Check second term", "field2", getQuery( term ).getField() );
120         assertEquals( "Check second term", "value2", getQuery( term ).getValue() );
121         assertFalse( "Check second term", term.isRequired() );
122         assertFalse( "Check second term", term.isProhibited() );
123
124         term = (CompoundQueryTerm) i.next();
125         assertEquals( "Check third term", "field3", getQuery( term ).getField() );
126         assertEquals( "Check third term", "value3", getQuery( term ).getValue() );
127         assertFalse( "Check third term", term.isRequired() );
128         assertTrue( "Check third term", term.isProhibited() );
129
130         CompoundQuery query2 = new CompoundQuery();
131         query2.and( query );
132         query2.or( new SingleTermQuery( term2 ) );
133         query2.not( new SingleTermQuery( term3 ) );
134
135         i = query2.getCompoundQueryTerms().iterator();
136         term = (CompoundQueryTerm) i.next();
137         assertEquals( "Check first term", query, term.getQuery() );
138         assertTrue( "Check first term", term.isRequired() );
139         assertFalse( "Check first term", term.isProhibited() );
140
141         term = (CompoundQueryTerm) i.next();
142         assertEquals( "Check second term", "field2", getQuery( term ).getField() );
143         assertEquals( "Check second term", "value2", getQuery( term ).getValue() );
144         assertFalse( "Check second term", term.isRequired() );
145         assertFalse( "Check second term", term.isProhibited() );
146
147         term = (CompoundQueryTerm) i.next();
148         assertEquals( "Check third term", "field3", getQuery( term ).getField() );
149         assertEquals( "Check third term", "value3", getQuery( term ).getValue() );
150         assertFalse( "Check third term", term.isRequired() );
151         assertTrue( "Check third term", term.isProhibited() );
152     }
153
154     private static SingleTermQuery getQuery( CompoundQueryTerm term )
155     {
156         return (SingleTermQuery) term.getQuery();
157     }
158 }
159