--- /dev/null
+package org.apache.lucene.analysis.tokenattributes;
+
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.index.Payload;
+import org.apache.lucene.util.AttributeImpl;
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.AttributeSource.AttributeFactory;
+import org.apache.lucene.util._TestUtil;
+
+import java.util.Collections;
+import java.util.HashMap;
+
+@Deprecated
+public class TestSimpleAttributeImpls extends LuceneTestCase {
+
+ public void testFlagsAttribute() throws Exception {
+ FlagsAttributeImpl att = new FlagsAttributeImpl();
+ assertEquals(0, att.getFlags());
+
+ att.setFlags(1234);
+ assertEquals("flags=1234", att.toString());
+
+ FlagsAttributeImpl att2 = (FlagsAttributeImpl) assertCloneIsEqual(att);
+ assertEquals(1234, att2.getFlags());
+
+ att2 = (FlagsAttributeImpl) assertCopyIsEqual(att);
+ assertEquals(1234, att2.getFlags());
+
+ att.clear();
+ assertEquals(0, att.getFlags());
+
+ _TestUtil.assertAttributeReflection(att,
+ Collections.singletonMap(FlagsAttribute.class.getName() + "#flags", att.getFlags()));
+ }
+
+ public void testPositionIncrementAttribute() throws Exception {
+ PositionIncrementAttributeImpl att = new PositionIncrementAttributeImpl();
+ assertEquals(1, att.getPositionIncrement());
+
+ att.setPositionIncrement(1234);
+ assertEquals("positionIncrement=1234", att.toString());
+
+ PositionIncrementAttributeImpl att2 = (PositionIncrementAttributeImpl) assertCloneIsEqual(att);
+ assertEquals(1234, att2.getPositionIncrement());
+
+ att2 = (PositionIncrementAttributeImpl) assertCopyIsEqual(att);
+ assertEquals(1234, att2.getPositionIncrement());
+
+ att.clear();
+ assertEquals(1, att.getPositionIncrement());
+
+ _TestUtil.assertAttributeReflection(att,
+ Collections.singletonMap(PositionIncrementAttribute.class.getName() + "#positionIncrement", att.getPositionIncrement()));
+ }
+
+ public void testTypeAttribute() throws Exception {
+ TypeAttributeImpl att = new TypeAttributeImpl();
+ assertEquals(TypeAttribute.DEFAULT_TYPE, att.type());
+
+ att.setType("hallo");
+ assertEquals("type=hallo", att.toString());
+
+ TypeAttributeImpl att2 = (TypeAttributeImpl) assertCloneIsEqual(att);
+ assertEquals("hallo", att2.type());
+
+ att2 = (TypeAttributeImpl) assertCopyIsEqual(att);
+ assertEquals("hallo", att2.type());
+
+ att.clear();
+ assertEquals(TypeAttribute.DEFAULT_TYPE, att.type());
+
+ _TestUtil.assertAttributeReflection(att,
+ Collections.singletonMap(TypeAttribute.class.getName() + "#type", att.type()));
+ }
+
+ public void testPayloadAttribute() throws Exception {
+ PayloadAttributeImpl att = new PayloadAttributeImpl();
+ assertNull(att.getPayload());
+
+ Payload pl = new Payload(new byte[]{1,2,3,4});
+ att.setPayload(pl);
+
+ _TestUtil.assertAttributeReflection(att,
+ Collections.singletonMap(PayloadAttribute.class.getName() + "#payload", pl));
+
+ PayloadAttributeImpl att2 = (PayloadAttributeImpl) assertCloneIsEqual(att);
+ assertEquals(pl, att2.getPayload());
+ assertNotSame(pl, att2.getPayload());
+
+ att2 = (PayloadAttributeImpl) assertCopyIsEqual(att);
+ assertEquals(pl, att2.getPayload());
+ assertNotSame(pl, att2.getPayload());
+
+ att.clear();
+ assertNull(att.getPayload());
+ }
+
+ public void testOffsetAttribute() throws Exception {
+ OffsetAttributeImpl att = new OffsetAttributeImpl();
+ assertEquals(0, att.startOffset());
+ assertEquals(0, att.endOffset());
+
+ att.setOffset(12, 34);
+ // no string test here, because order unknown
+
+ _TestUtil.assertAttributeReflection(att,
+ new HashMap<String,Object>() {{
+ put(OffsetAttribute.class.getName() + "#startOffset", 12);
+ put(OffsetAttribute.class.getName() + "#endOffset", 34);
+ }});
+
+ OffsetAttributeImpl att2 = (OffsetAttributeImpl) assertCloneIsEqual(att);
+ assertEquals(12, att2.startOffset());
+ assertEquals(34, att2.endOffset());
+
+ att2 = (OffsetAttributeImpl) assertCopyIsEqual(att);
+ assertEquals(12, att2.startOffset());
+ assertEquals(34, att2.endOffset());
+
+ att.clear();
+ assertEquals(0, att.startOffset());
+ assertEquals(0, att.endOffset());
+ }
+
+ public void testKeywordAttribute() {
+ AttributeImpl attrImpl = AttributeFactory.DEFAULT_ATTRIBUTE_FACTORY.createAttributeInstance(KeywordAttribute.class);
+ assertSame(KeywordAttributeImpl.class, attrImpl.getClass());
+ KeywordAttributeImpl att = (KeywordAttributeImpl) attrImpl;
+ assertFalse(att.isKeyword());
+ att.setKeyword(true);
+ assertTrue(att.isKeyword());
+
+ KeywordAttributeImpl assertCloneIsEqual = (KeywordAttributeImpl) assertCloneIsEqual(att);
+ assertTrue(assertCloneIsEqual.isKeyword());
+ assertCloneIsEqual.clear();
+ assertFalse(assertCloneIsEqual.isKeyword());
+ assertTrue(att.isKeyword());
+
+ att.copyTo(assertCloneIsEqual);
+ assertTrue(assertCloneIsEqual.isKeyword());
+ assertTrue(att.isKeyword());
+
+ _TestUtil.assertAttributeReflection(att,
+ Collections.singletonMap(KeywordAttribute.class.getName() + "#keyword", att.isKeyword()));
+ }
+
+ public static final AttributeImpl assertCloneIsEqual(AttributeImpl att) {
+ AttributeImpl clone = (AttributeImpl) att.clone();
+ assertEquals("Clone must be equal", att, clone);
+ assertEquals("Clone's hashcode must be equal", att.hashCode(), clone.hashCode());
+ return clone;
+ }
+
+ public static final AttributeImpl assertCopyIsEqual(AttributeImpl att) throws Exception {
+ AttributeImpl copy = att.getClass().newInstance();
+ att.copyTo(copy);
+ assertEquals("Copied instance must be equal", att, copy);
+ assertEquals("Copied instance's hashcode must be equal", att.hashCode(), copy.hashCode());
+ return copy;
+ }
+
+}