1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.archive.tests.java.util.jar;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew;
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Collection;
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Collections;
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.HashSet;
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Iterator;
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Map;
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Set;
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.jar.Attributes;
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase;
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Attributes.class)
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class AttributesTest extends TestCase {
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private Attributes a;
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @Override
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected void setUp() {
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a = new Attributes();
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("1", "one");
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("2", "two");
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("3", "three");
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("4", "four");
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#Attributes(java.util.jar.Attributes)
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Attributes",
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.jar.Attributes.class}
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorLjava_util_jar_Attributes() {
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes a2 = new Attributes(a);
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(a, a2);
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("1", "one(1)");
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("equal", !a.equals(a2));
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#clear()
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "clear",
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_clear() {
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.clear();
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("a) All entries should be null after clear", a.get("1"));
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("b) All entries should be null after clear", a.get("2"));
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("c) All entries should be null after clear", a.get("3"));
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("d) All entries should be null after clear", a.get("4"));
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Should not contain any keys", !a.containsKey("1"));
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#containsKey(java.lang.Object)
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "containsKey",
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_containsKeyLjava_lang_Object() {
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should have returned false", !a.containsKey(new Integer(
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                1)));
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should have returned false", !a.containsKey("0"));
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Should have returned true", a
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .containsKey(new Attributes.Name("1")));
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#containsValue(java.lang.Object)
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "containsValue",
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_containsValueLjava_lang_Object() {
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Should have returned false", !a.containsValue("One"));
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Should have returned true", a.containsValue("one"));
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#entrySet()
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "entrySet",
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_entrySet() {
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Set<Map.Entry<Object, Object>> entrySet = a.entrySet();
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Set<Object> keySet = new HashSet<Object>();
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Set<Object> valueSet = new HashSet<Object>();
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Iterator<?> i;
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, entrySet.size());
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        i = entrySet.iterator();
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        while (i.hasNext()) {
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            java.util.Map.Entry<?, ?> e;
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            e = (Map.Entry<?, ?>) i.next();
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            keySet.add(e.getKey());
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            valueSet.add(e.getValue());
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should contain entry", valueSet.contains("one"));
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should contain entry", valueSet.contains("two"));
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("c) Should contain entry", valueSet.contains("three"));
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("d) Should contain entry", valueSet.contains("four"));
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should contain key", keySet
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(new Attributes.Name("1")));
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should contain key", keySet
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(new Attributes.Name("2")));
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("c) Should contain key", keySet
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(new Attributes.Name("3")));
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("d) Should contain key", keySet
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .contains(new Attributes.Name("4")));
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#get(java.lang.Object)
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getValue",
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class}
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getLjava_lang_Object() {
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("a) Incorrect value returned", "one", a.getValue("1"));
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("b) Incorrect value returned", a.getValue("0"));
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            a.getValue("IllegalArgumentException expected");
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ee) {
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#isEmpty()
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "isEmpty",
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_isEmpty() {
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("Should not be empty", !a.isEmpty());
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.clear();
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should be empty", a.isEmpty());
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a = new Attributes();
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should be empty", a.isEmpty());
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#keySet()
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "keySet",
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_keySet() {
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Set<?> s = a.keySet();
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(4, s.size());
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should contain entry", s.contains(new Attributes.Name(
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "1")));
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should contain entry", s.contains(new Attributes.Name(
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "2")));
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("c) Should contain entry", s.contains(new Attributes.Name(
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "3")));
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("d) Should contain entry", s.contains(new Attributes.Name(
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "4")));
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#putAll(java.util.Map)
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "putAll",
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.Map.class}
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_putAllLjava_util_Map() {
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes b = new Attributes();
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("3", "san");
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("4", "shi");
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("5", "go");
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("6", "roku");
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putAll(b);
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Should not have been replaced", "one", a.getValue("1"));
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Should have been replaced", "san", a.getValue("3"));
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Should have been added", "go", a.getValue("5"));
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes atts = new Attributes();
227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("Assert 0: ", atts.put(Attributes.Name.CLASS_PATH,
228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "tools.jar"));
229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("Assert 1: ", atts
230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .put(Attributes.Name.MANIFEST_VERSION, "1"));
231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes atts2 = new Attributes();
232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        atts2.putAll(atts);
233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Assert 2:", "tools.jar", atts2
234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .get(Attributes.Name.CLASS_PATH));
235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Assert 3: ", "1", atts2
236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .get(Attributes.Name.MANIFEST_VERSION));
237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            atts.putAll(Collections.EMPTY_MAP);
239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Assert 4: no class cast from attrib parameter");
240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (ClassCastException e) {
241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#putAll(java.util.Map)
247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test",
251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "putAll",
252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.Map.class}
253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_putAllLjava_util_Map2() {
255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Regression for HARMONY-464
256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            new Attributes().putAll((Map) null);
258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("ClassCastException expected");
259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (ClassCastException e) {
260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // verify that special care for null is done in the Attributes.putAll()
262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // method
263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            new Attributes() {
265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                @Override
266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                public void putAll(Map<?, ?> attrib) {
267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                    map.putAll(attrib);
268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                }
269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }.putAll((Map<?, ?>) null);
270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected");
271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException e) {
272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#remove(java.lang.Object)
277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "remove",
282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_removeLjava_lang_Object() {
285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.remove(new Attributes.Name("1"));
286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.remove(new Attributes.Name("3"));
287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("Should have been removed", a.getValue("1"));
288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Should not have been removed", "four", a.getValue("4"));
289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#size()
293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "size",
298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_size() {
301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Incorrect size returned", 4, a.size());
302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.clear();
303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(0, a.size());
304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#values()
308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "values",
313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_values() {
316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Collection<?> valueCollection = a.values();
317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("a) Should contain entry", valueCollection.contains("one"));
318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("b) Should contain entry", valueCollection.contains("two"));
319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("c) Should contain entry", valueCollection.contains("three"));
320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("d) Should contain entry", valueCollection.contains("four"));
321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#clone()
325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "clone",
330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_clone() {
333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes a2 = (Attributes) a.clone();
334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(a, a2);
335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a.putValue("1", "one(1)");
336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue("equal", !a.equals(a2));
337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes#equals(java.lang.Object)
341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "equals",
346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_equalsLjava_lang_Object() {
349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes.Name n1 = new Attributes.Name("name"), n2 = new Attributes.Name(
350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "Name");
351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(n1, n2);
352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes a1 = new Attributes();
353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a1.putValue("one", "1");
354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a1.putValue("two", "2");
355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes a2 = new Attributes();
356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a2.putValue("One", "1");
357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        a2.putValue("TWO", "2");
358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(a1, a2);
359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes.put(java.lang.Object, java.lang.Object)
363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "Regression test. Checks ClassCastException",
367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "put",
368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, java.lang.Object.class}
369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_putLjava_lang_ObjectLjava_lang_Object() {
371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes atts = new Attributes();
372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("Assert 0: ", atts.put(Attributes.Name.CLASS_PATH,
373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                "tools.jar"));
374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("Assert 1: ", "tools.jar", atts
375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getValue(Attributes.Name.CLASS_PATH));
376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        // Regression for HARMONY-79
377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            atts.put("not a name", "value");
379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Assert 2: no class cast from key parameter");
380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (ClassCastException e) {
381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            atts.put(Attributes.Name.CLASS_PATH, Boolean.TRUE);
385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("Assert 3: no class cast from value parameter");
386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (ClassCastException e) {
387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // Expected
388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @tests java.util.jar.Attributes.put(java.lang.Object, java.lang.Object)
393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "ClassCastException checking missed.",
397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "put",
398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class, java.lang.Object.class}
399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_putLjava_lang_ObjectLjava_lang_Object_Null() {
401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes attribute = new Attributes();
403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(attribute.containsKey(null));
405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertFalse(attribute.containsValue(null));
406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        attribute.put(null, null);
407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        attribute.put(null, null);
408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, attribute.size());
409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(attribute.containsKey(null));
410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(attribute.containsValue(null));
411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(attribute.get(null));
412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String value = "It's null";
414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        attribute.put(null, value);
415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(1, attribute.size());
416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(value, attribute.get(null));
417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes.Name name = new Attributes.Name("null");
419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        attribute.put(name, null);
420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals(2, attribute.size());
421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull(attribute.get(name));
422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
424407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    /**
425407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson     * @tests java.util.jar.Attributes.hashCode()
426407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson     */
427407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    @TestTargetNew(
428407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson            level = TestLevel.PARTIAL_COMPLETE,
429407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson            notes = "",
430407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson            method = "hashCode",
431407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson            args = {}
432407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    )
433407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    public void test_hashCode_consistent_with_map() {
434407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        MockAttributes mockAttr = new MockAttributes();
435407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        mockAttr.putValue("1", "one");
436407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        assertEquals(mockAttr.getMap().hashCode(), mockAttr.hashCode());
437407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    }
438407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson
439407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    private static class MockAttributes extends Attributes {
440407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        public Map<Object, Object> getMap() {
441407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson            return map;
442407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        }
443407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson    }
444407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson
445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Attributes",
449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_Constructor() {
452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes attr = new Attributes();
453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(attr.size() >= 0);
454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "Attributes",
460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {int.class}
461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_ConstructorI() {
463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes attr = new Attributes(10);
464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(attr.size() >= 0);
465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "get",
471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.Object.class}
472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getLjava_lang_Object_true() {
474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("a) Incorrect value returned", "one", a
475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .get(new Attributes.Name("1")));
476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("b) Incorrect value returned", a.get("0"));
477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("b) Incorrect value returned", a.get("1"));
478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "getValue",
484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.util.jar.Attributes.Name.class}
485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_getValueLjava_util_jar_Attributes_Name() {
487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertEquals("a) Incorrect value returned", "one", a
488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getValue(new Attributes.Name("1")));
489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNull("b) Incorrect value returned", a
490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                .getValue(new Attributes.Name("0")));
491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
494407a2013b289b6b0e860b4275671b7b0194c42fcJesse Wilson        level = TestLevel.PARTIAL_COMPLETE,
495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "hashCode",
497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {}
498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_hashCode() {
500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes b = (Attributes) a.clone();
501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("33", "Thirty three");
502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotSame(a.hashCode(), b.hashCode());
503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b = (Attributes) a.clone();
504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.clear();
505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertNotSame(a.hashCode(), b.hashCode());
506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    @TestTargetNew(
509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        level = TestLevel.COMPLETE,
510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        notes = "",
511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        method = "putValue",
512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        args = {java.lang.String.class, java.lang.String.class}
513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    )
514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public void test_putValueLjava_lang_StringLjava_lang_String() {
515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Attributes b = new Attributes();
516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.put(new Attributes.Name("1"), "one");
517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("2", "two");
518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.put(new Attributes.Name("3"), "three");
519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        b.putValue("4", "four");
520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        assertTrue(a.equals(b));
522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            b.putValue(null, "null");
525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("NullPointerException expected");
526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (NullPointerException ee) {
527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        StringBuffer sb = new StringBuffer();
531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        for (int i = 0; i < 0x10000; i++) {
532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            sb.append('3');
533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        try {
535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            b.putValue(new String(sb), "wrong name");
536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            fail("IllegalArgumentException expected");
537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } catch (IllegalArgumentException ee) {
538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            // expected
539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
542