add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / analyzers / common / src / test / org / apache / lucene / analysis / payloads / TypeAsPayloadTokenFilterTest.java
1 package org.apache.lucene.analysis.payloads;
2
3 /**
4  * Copyright 2004 The Apache Software Foundation
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 import org.apache.lucene.analysis.BaseTokenStreamTestCase;
20 import org.apache.lucene.analysis.MockTokenizer;
21 import org.apache.lucene.analysis.TokenFilter;
22 import org.apache.lucene.analysis.TokenStream;
23 import org.apache.lucene.analysis.tokenattributes.PayloadAttribute;
24 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
25 import org.apache.lucene.analysis.tokenattributes.TypeAttribute;
26
27 import java.io.IOException;
28 import java.io.StringReader;
29
30 public class TypeAsPayloadTokenFilterTest extends BaseTokenStreamTestCase {
31
32   public void test() throws IOException {
33     String test = "The quick red fox jumped over the lazy brown dogs";
34
35     TypeAsPayloadTokenFilter nptf = new TypeAsPayloadTokenFilter(new WordTokenFilter(new MockTokenizer(new StringReader(test), MockTokenizer.WHITESPACE, false)));
36     int count = 0;
37     CharTermAttribute termAtt = nptf.getAttribute(CharTermAttribute.class);
38     TypeAttribute typeAtt = nptf.getAttribute(TypeAttribute.class);
39     PayloadAttribute payloadAtt = nptf.getAttribute(PayloadAttribute.class);
40     nptf.reset();
41     while (nptf.incrementToken()) {
42       assertTrue(typeAtt.type() + " is not null and it should be", typeAtt.type().equals(String.valueOf(Character.toUpperCase(termAtt.buffer()[0]))));
43       assertTrue("nextToken.getPayload() is null and it shouldn't be", payloadAtt.getPayload() != null);
44       String type = new String(payloadAtt.getPayload().getData(), "UTF-8");
45       assertTrue(type + " is not equal to " + typeAtt.type(), type.equals(typeAtt.type()) == true);
46       count++;
47     }
48
49     assertTrue(count + " does not equal: " + 10, count == 10);
50   }
51
52   private final class WordTokenFilter extends TokenFilter {
53     private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
54     private final TypeAttribute typeAtt = addAttribute(TypeAttribute.class);
55     
56     private WordTokenFilter(TokenStream input) {
57       super(input);
58     }
59
60     @Override
61     public boolean incrementToken() throws IOException {
62       if (input.incrementToken()) {
63         typeAtt.setType(String.valueOf(Character.toUpperCase(termAtt.buffer()[0])));
64         return true;
65       } else {
66         return false;
67       }
68     }
69   }
70
71 }