1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Array; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.AbstractMap; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.TreeMap; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.AbstractMap.SimpleImmutableEntry; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Map.Entry; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.util.SerializationTester; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SimpleImmutableEntryTest extends TestCase { 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_Constructor_K_V() throws Exception { 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new AbstractMap.SimpleImmutableEntry<Integer, String>(1,"test"); 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new AbstractMap.SimpleImmutableEntry(null,null); 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_Constructor_LEntry() throws Exception { 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map = new TreeMap(); 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(1, "test"); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entryToPut = (Entry)map.entrySet().iterator().next(); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry testEntry = new AbstractMap.SimpleImmutableEntry(entryToPut); 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1,testEntry.getKey()); 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test",testEntry.getValue()); 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.clear(); 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(null, null); 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entryToPut = (Entry)map.entrySet().iterator().next(); 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes testEntry = new AbstractMap.SimpleImmutableEntry(entryToPut); 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(testEntry.getKey()); 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(testEntry.getValue()); 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new AbstractMap.SimpleImmutableEntry(null); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Should throw NullPointerException"); 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException e) { 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_getKey() throws Exception { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entry = new AbstractMap.SimpleImmutableEntry<Integer, String>(1,"test"); 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(1,entry.getKey()); 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entry = new AbstractMap.SimpleImmutableEntry(null,null); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(entry.getKey()); 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_getValue() throws Exception { 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entry = new AbstractMap.SimpleImmutableEntry<Integer, String>(1,"test"); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test",entry.getValue()); 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entry = new AbstractMap.SimpleImmutableEntry(null,null); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(entry.getValue()); 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_setValue() throws Exception { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entry = new AbstractMap.SimpleImmutableEntry<Integer, String>(1,"test"); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test",entry.getValue()); 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try{ 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entry.setValue("Another String"); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e){ 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("test",entry.getValue()); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try{ 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes entry.setValue(null); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should throw UnsupportedOperationException"); 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (UnsupportedOperationException e){ 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // expected 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_equals() throws Exception { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entry = new AbstractMap.SimpleImmutableEntry<Integer, String>(1,"test"); 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Map map = new TreeMap(); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes map.put(1, "test"); 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry entryToPut = (Entry)map.entrySet().iterator().next(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry testEntry = new AbstractMap.SimpleImmutableEntry(entryToPut); 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(entry,testEntry); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_hashCode() throws Exception { 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry e = new AbstractMap.SimpleImmutableEntry<Integer, String>(1, "test"); 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals((e.getKey() == null ? 0 : e.getKey().hashCode()) 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ^ (e.getValue() == null ? 0 : e.getValue().hashCode()), e 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .hashCode()); 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_SimpleImmutableEntry_toString() throws Exception { 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry e = new AbstractMap.SimpleImmutableEntry<Integer, String>(1, "test"); 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(e.getKey()+"="+e.getValue(),e.toString()); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object array =Array.newInstance((byte[].class).getComponentType(), 10); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(10,((byte[])array).length); 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests serialization/deserialization. 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings({ "unchecked", "boxing" }) 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationSelf_SimpleImmutableEntry() throws Exception { 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Entry e = new AbstractMap.SimpleImmutableEntry<Integer, String>(1, "test"); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest.verifySelf(e); 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests serialization/deserialization compatibility with RI. 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes @SuppressWarnings({ "unchecked", "boxing" }) 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerializationCompatibility_SimpleImmutableEntry() throws Exception { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SimpleImmutableEntry e = new AbstractMap.SimpleImmutableEntry<Integer, String>(1, "test"); 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!(SerializationTester.readObject(e, "serialization/java/util/AbstractMapTest_SimpleImmutableEntry.golden.ser") instanceof SimpleImmutableEntry)){ 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("should be SimpleImmutableEntry"); 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTester.assertCompabilityEquals(e, "serialization/java/util/AbstractMapTest_SimpleImmutableEntry.golden.ser"); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 136