1d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath/*
2d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more
3d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * contributor license agreements.  See the NOTICE file distributed with
4d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * this work for additional information regarding copyright ownership.
5d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0
6d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * (the "License"); you may not use this file except in compliance with
7d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * the License.  You may obtain a copy of the License at
8d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *
9d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath *
11d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * Unless required by applicable law or agreed to in writing, software
12d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
13d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * See the License for the specific language governing permissions and
15d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath * limitations under the License.
16d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath */
17d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
18d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpackage org.apache.harmony.tests.java.util.jar;
19d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
20d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.Collection;
21d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.Collections;
22d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.HashSet;
23d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.Iterator;
24d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.Map;
25d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.Set;
26d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport java.util.jar.Attributes;
27d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathimport junit.framework.TestCase;
28d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
29d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamathpublic class AttributesTest extends TestCase {
30d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    private Attributes a;
31d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
32d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    @Override
33d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    protected void setUp() {
34d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a = new Attributes();
35d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("1", "one");
36d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("2", "two");
37d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("3", "three");
38d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("4", "four");
39d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
40d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
41d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
42d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#Attributes(java.util.jar.Attributes)
43d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
44d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_ConstructorLjava_util_jar_Attributes() {
45d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes a2 = new Attributes(a);
46d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(a, a2);
47d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("1", "one(1)");
48d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("equal", !a.equals(a2));
49d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
50d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
51d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
52d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#clear()
53d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
54d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_clear() {
55d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.clear();
56d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("a) All entries should be null after clear", a.get("1"));
57d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("b) All entries should be null after clear", a.get("2"));
58d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("c) All entries should be null after clear", a.get("3"));
59d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("d) All entries should be null after clear", a.get("4"));
60d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("Should not contain any keys", !a.containsKey("1"));
61d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
62d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
63d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
64d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#containsKey(java.lang.Object)
65d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
66d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_containsKeyLjava_lang_Object() {
67d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should have returned false", !a.containsKey(new Integer(1)));
68d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should have returned false", !a.containsKey("0"));
69d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("Should have returned true", a.containsKey(new Attributes.Name("1")));
70d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
71d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
72d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
73d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#containsValue(java.lang.Object)
74d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
75d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_containsValueLjava_lang_Object() {
76d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("Should have returned false", !a.containsValue("One"));
77d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("Should have returned true", a.containsValue("one"));
78d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
79d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
80d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
81d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#entrySet()
82d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
83d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_entrySet() {
84d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Set<Map.Entry<Object, Object>> entrySet = a.entrySet();
85d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Set<Object> keySet = new HashSet<Object>();
86d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Set<Object> valueSet = new HashSet<Object>();
87d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Iterator<?> i;
88d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(4, entrySet.size());
89d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        i = entrySet.iterator();
90d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        while (i.hasNext()) {
91d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            java.util.Map.Entry<?, ?> e;
92d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            e = (Map.Entry<?, ?>) i.next();
93d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            keySet.add(e.getKey());
94d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            valueSet.add(e.getValue());
95d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
96d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should contain entry", valueSet.contains("one"));
97d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should contain entry", valueSet.contains("two"));
98d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("c) Should contain entry", valueSet.contains("three"));
99d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("d) Should contain entry", valueSet.contains("four"));
100d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should contain key", keySet.contains(new Attributes.Name("1")));
101d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should contain key", keySet.contains(new Attributes.Name("2")));
102d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("c) Should contain key", keySet.contains(new Attributes.Name("3")));
103d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("d) Should contain key", keySet.contains(new Attributes.Name("4")));
104d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
105d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
106d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
107d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#get(java.lang.Object)
108d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
109d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_getLjava_lang_Object() {
110d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("a) Incorrect value returned", "one", a.getValue("1"));
111d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("b) Incorrect value returned", a.getValue("0"));
112d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
113d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
114d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
115d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#isEmpty()
116d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
117d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_isEmpty() {
118d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("Should not be empty", !a.isEmpty());
119d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.clear();
120d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should be empty", a.isEmpty());
121d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a = new Attributes();
122d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should be empty", a.isEmpty());
123d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
124d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
125d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
126d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#keySet()
127d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
128d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_keySet() {
129d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Set<?> s = a.keySet();
130d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(4, s.size());
131d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should contain entry", s.contains(new Attributes.Name("1")));
132d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should contain entry", s.contains(new Attributes.Name("2")));
133d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("c) Should contain entry", s.contains(new Attributes.Name("3")));
134d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("d) Should contain entry", s.contains(new Attributes.Name("4")));
135d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
136d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
137d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
138d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#putAll(java.util.Map)
139d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
140d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_putAllLjava_util_Map() {
141d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes b = new Attributes();
142d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        b.putValue("3", "san");
143d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        b.putValue("4", "shi");
144d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        b.putValue("5", "go");
145d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        b.putValue("6", "roku");
146d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putAll(b);
147d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Should not have been replaced", "one", a.getValue("1"));
148d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Should have been replaced", "san", a.getValue("3"));
149d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Should have been added", "go", a.getValue("5"));
150d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes atts = new Attributes();
151d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("Assert 0: ", atts.put(Attributes.Name.CLASS_PATH, "tools.jar"));
152d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("Assert 1: ", atts.put(Attributes.Name.MANIFEST_VERSION, "1"));
153d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes atts2 = new Attributes();
154d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        atts2.putAll(atts);
155d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Assert 2:", "tools.jar", atts2.get(Attributes.Name.CLASS_PATH));
156d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Assert 3: ", "1", atts2.get(Attributes.Name.MANIFEST_VERSION));
157d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
158d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            atts.putAll(Collections.EMPTY_MAP);
159d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("Assert 4: no class cast from attrib parameter");
160d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (ClassCastException e) {
161d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            // Expected
162d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
163d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
164d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
165d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
166d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#remove(java.lang.Object)
167d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
168d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_removeLjava_lang_Object() {
169d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.remove(new Attributes.Name("1"));
170d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.remove(new Attributes.Name("3"));
171d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("Should have been removed", a.getValue("1"));
172d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Should not have been removed", "four", a.getValue("4"));
173d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
174d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
175d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
176d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#size()
177d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
178d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_size() {
179d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Incorrect size returned", 4, a.size());
180d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.clear();
181d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(0, a.size());
182d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
183d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
184d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
185d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#values()
186d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
187d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_values() {
188d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Collection<?> valueCollection = a.values();
189d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("a) Should contain entry", valueCollection.contains("one"));
190d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("b) Should contain entry", valueCollection.contains("two"));
191d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("c) Should contain entry", valueCollection.contains("three"));
192d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("d) Should contain entry", valueCollection.contains("four"));
193d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
194d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
195d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
196d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#clone()
197d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
198d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_clone() {
199d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes a2 = (Attributes) a.clone();
200d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(a, a2);
201d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a.putValue("1", "one(1)");
202d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue("equal", !a.equals(a2));
203d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
204d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
205d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
206d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes#equals(java.lang.Object)
207d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
208d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_equalsLjava_lang_Object() {
209d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes.Name n1 = new Attributes.Name("name"), n2 = new Attributes.Name("Name");
210d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(n1, n2);
211d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes a1 = new Attributes();
212d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a1.putValue("one", "1");
213d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a1.putValue("two", "2");
214d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes a2 = new Attributes();
215d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a2.putValue("One", "1");
216d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a2.putValue("TWO", "2");
217d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(a1, a2);
218d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(a1, a1);
219d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        a2 = null;
220d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertFalse(a1.equals(a2));
221d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
222d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
223d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
224d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes.put(java.lang.Object, java.lang.Object)
225d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
226d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_putLjava_lang_ObjectLjava_lang_Object() {
227d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes atts = new Attributes();
228d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull("Assert 0: ", atts.put(Attributes.Name.CLASS_PATH, "tools.jar"));
229d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals("Assert 1: ", "tools.jar", atts.getValue(Attributes.Name.CLASS_PATH));
230d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        // Regression for HARMONY-79
231d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
232d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            atts.put("not a name", "value");
233d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("Assert 2: no class cast from key parameter");
234d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (ClassCastException e) {
235d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            // Expected
236d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
237d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        try {
238d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            atts.put(Attributes.Name.CLASS_PATH, Boolean.TRUE);
239d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            fail("Assert 3: no class cast from value parameter");
240d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        } catch (ClassCastException e) {
241d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            // Expected
242d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
243d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
244d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
245d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
246d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes.put(java.lang.Object, java.lang.Object)
247d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
248d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_putLjava_lang_ObjectLjava_lang_Object_Null() {
249d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
250d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes attribute = new Attributes();
251d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
252d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertFalse(attribute.containsKey(null));
253d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertFalse(attribute.containsValue(null));
254d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        attribute.put(null, null);
255d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        attribute.put(null, null);
256d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(1, attribute.size());
257d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue(attribute.containsKey(null));
258d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertTrue(attribute.containsValue(null));
259d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull(attribute.get(null));
260d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
261d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        String value = "It's null";
262d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        attribute.put(null, value);
263d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(1, attribute.size());
264d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(value, attribute.get(null));
265d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
266d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        Attributes.Name name = new Attributes.Name("null");
267d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        attribute.put(name, null);
268d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(2, attribute.size());
269d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertNull(attribute.get(name));
270d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
271d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
272d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    /**
273d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     * java.util.jar.Attributes.hashCode()
274d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath     */
275d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    public void test_hashCode() {
276d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        MockAttributes mockAttr = new MockAttributes();
277d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        mockAttr.putValue("1", "one");
278d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        assertEquals(mockAttr.getMap().hashCode(), mockAttr.hashCode());
279d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
280d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath
281d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    private static class MockAttributes extends Attributes {
282d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        public Map<Object, Object> getMap() {
283d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath            return map;
284d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath        }
285d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath    }
286d567f9025c4b94fc5e9b47f5702c1b48c2a45c96Narayan Kamath}
287