1994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes/*
2994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more
3994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * contributor license agreements.  See the NOTICE file distributed with
4994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * this work for additional information regarding copyright ownership.
5994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0
6994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * (the "License"); you may not use this file except in compliance with
7994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * the License.  You may obtain a copy of the License at
8994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *
9994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes *
11994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * Unless required by applicable law or agreed to in writing, software
12994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS,
13994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * See the License for the specific language governing permissions and
15994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes * limitations under the License.
16994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes */
17994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
18994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespackage org.apache.harmony.tests.java.text;
19994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
20994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.AttributedCharacterIterator;
21994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.AttributedCharacterIterator.Attribute;
22994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ByteArrayInputStream;
23994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ByteArrayOutputStream;
24994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.NotSerializableException;
25994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.IOException;
26994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ObjectInputStream;
27994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.io.ObjectOutputStream;
28994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.util.Locale;
29994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughesimport java.text.Annotation;
30994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
31994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughespublic class AttributedCharacterIteratorAttributeTest extends junit.framework.TestCase {
32994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
33994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	/**
34994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.AttributedCharacterIterator$Attribute()
35994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
36994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_constructor() {
37994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		MyAttribute attribute = new MyAttribute("attribute");
38994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
39994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Attribute has wrong name", "attribute", attribute.getExposedName());
40994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
41994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		attribute = new MyAttribute(null);
42994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertEquals("Attribute has wrong name", null, attribute.getExposedName());
43994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
44994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
45994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	/**
46994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 * @tests java.text.AttributedCharacterIterator.Attribute#equals(Object)
47994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 */
48994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_equals() {
49994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
50994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue(Attribute.LANGUAGE.equals(Attribute.LANGUAGE));
51994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
52994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertFalse(Attribute.LANGUAGE.equals(Attribute.READING));
53994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
54994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		MyAttribute attribute = new MyAttribute("test");
55994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
56994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertTrue(attribute.equals(attribute));
57994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
58994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		/* this implementation of equals should only return true
59994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		 * if the same objects */
60994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertFalse(attribute.equals(new MyAttribute("test")));
61994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
62994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		attribute = new MyAttribute(null);
63994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		assertFalse(attribute.equals(new MyAttribute(null)));
64994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
65994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
66994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	 /**
67994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.AttributedCharacterIterator$Attribute#readResolve()
68994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
69994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    public void test_readResolve() {
70994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // test for method java.lang.Object readResolve()
71994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
72994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ObjectOutputStream out = null;
73994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        ObjectInputStream in = null;
74994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        try {
75994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
76994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            out = new ObjectOutputStream(bytes);
77994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
78994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            AttributedCharacterIterator.Attribute dattribute, dattribute2;
79994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            MyAttribute attribute;
80994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
81994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            // a regular instance of DateFormat.Field
82994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            dattribute = AttributedCharacterIterator.Attribute.LANGUAGE;
83994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
84994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            // a subclass instance with null name
85994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            attribute = new MyAttribute(null);
86994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
87994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            out.writeObject(dattribute);
88994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            try {
89994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                out.writeObject(attribute);
90994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            } catch (NotSerializableException e) {
91994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            }
92994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
93994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            in = new ObjectInputStream(new ByteArrayInputStream(bytes
94994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                    .toByteArray()));
95994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
96994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            try {
97994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                dattribute2 = (AttributedCharacterIterator.Attribute) in.readObject();
98994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                assertSame("resolved incorrectly", dattribute, dattribute2);
99994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            } catch (IllegalArgumentException e) {
100994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                fail("Unexpected IllegalArgumentException: " + e);
101994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            }
102994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
103994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (IOException e) {
104994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("unexpected IOException" + e);
105994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } catch (ClassNotFoundException e) {
106994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            fail("unexpected ClassNotFoundException" + e);
107994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        } finally {
108994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            try {
109994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                if (out != null)
110994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                    out.close();
111994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                if (in != null)
112994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes                    in.close();
113994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            } catch (IOException e) {
114994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes            }
115994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        }
116994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    }
117994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
118994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes    /**
119994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * @tests java.text.AttributedCharacterIterator$Attribute#LANGUAGE
120994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * java.text.AttributedCharacterIterator$Attribute#READING
121994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     * java.text.AttributedCharacterIterator$Attribute#INPUT_METHOD_SEGMENT
122994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes     */
123994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	public void test_fields() {
124994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
125994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // Just check that the fields are accessible as all
126994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes        // methods are protected
127994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Attribute language = Attribute.LANGUAGE;
128994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Attribute reading = Attribute.READING;
129994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		Attribute inputMethodSegment = Attribute.INPUT_METHOD_SEGMENT;
130994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
131994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
132994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	protected void setUp() {
133994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
134994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
135994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	protected void tearDown() {
136994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
137994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
138994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	class MyAttribute extends AttributedCharacterIterator.Attribute {
139994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		protected MyAttribute(String name) {
140994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			super(name);
141994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		}
142994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes
143994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		public Object getExposedName() {
144994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes			return this.getName();
145994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes		}
146994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes	}
147994e4e5ded616a100ca42b16cffa36aa9f595f64Elliott Hughes}
148