18f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle/* 28f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Written by Doug Lea with assistance from members of JCP JSR-166 38f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Expert Group and released to the public domain, as explained at 48f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * http://creativecommons.org/publicdomain/zero/1.0/ 58f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 68f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 78f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepackage jsr166; 88f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 98e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport java.util.AbstractMap; 108e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport java.util.Map; 118e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath 128e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.Test; 138e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathimport junit.framework.TestSuite; 148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravlepublic class EntryTest extends JSR166TestCase { 168e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // android-note: Removed because the CTS runner does a bad job of 178e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // retrying tests that have suite() declarations. 188e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // 198e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static void main(String[] args) { 208e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // main(suite(), args); 218e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 228e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // public static Test suite() { 23b8b75116273ecfdb8ffdd1869b1c0dd04570a95ePrzemyslaw Szczepaniak // return new TestSuite(EntryTest.class); 248e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath // } 258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle static final String k1 = "1"; 278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle static final String v1 = "a"; 288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle static final String k2 = "2"; 298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle static final String v2 = "b"; 308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A new SimpleEntry(k, v) holds k, v. 338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor1() { 358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e = new AbstractMap.SimpleEntry(k1, v1); 368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, e.getKey()); 378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, e.getValue()); 388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A new SimpleImmutableEntry(k, v) holds k, v. 428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor2() { 448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s = new AbstractMap.SimpleImmutableEntry(k1, v1); 458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, s.getKey()); 468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, s.getValue()); 478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 508f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A new SimpleEntry(entry(k, v)) holds k, v. 518f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 528f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor3() { 538f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e2 = new AbstractMap.SimpleEntry(k1, v1); 548f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e = new AbstractMap.SimpleEntry(e2); 558f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, e.getKey()); 568f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, e.getValue()); 578f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 588f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 598f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 608f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * A new SimpleImmutableEntry(entry(k, v)) holds k, v. 618f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 628f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testConstructor4() { 638f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s2 = new AbstractMap.SimpleImmutableEntry(k1, v1); 648f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s = new AbstractMap.SimpleImmutableEntry(s2); 658f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, s.getKey()); 668f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, s.getValue()); 678f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 688f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 698f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 708f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Entries with same key-value pairs are equal and have same 718f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * hashcodes 728f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 738f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testEquals() { 748f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e2 = new AbstractMap.SimpleEntry(k1, v1); 758f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e = new AbstractMap.SimpleEntry(e2); 768f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s2 = new AbstractMap.SimpleImmutableEntry(k1, v1); 778f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s = new AbstractMap.SimpleImmutableEntry(s2); 788f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e2, e); 798f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e2.hashCode(), e.hashCode()); 808f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(s2, s); 818f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(s2.hashCode(), s.hashCode()); 828f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e2, s2); 838f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e2.hashCode(), s2.hashCode()); 848f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e, s); 858f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(e.hashCode(), s.hashCode()); 868f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 878f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 888f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 898f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * Entries with different key-value pairs are not equal 908f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 918f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testNotEquals() { 928f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e2 = new AbstractMap.SimpleEntry(k1, v1); 938f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e = new AbstractMap.SimpleEntry(k2, v1); 948f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(e2.equals(e)); 958f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle e = new AbstractMap.SimpleEntry(k1, v2); 968f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(e2.equals(e)); 978f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle e = new AbstractMap.SimpleEntry(k2, v2); 988f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(e2.equals(e)); 998f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1008f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s2 = new AbstractMap.SimpleImmutableEntry(k1, v1); 1018f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s = new AbstractMap.SimpleImmutableEntry(k2, v1); 1028f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(s2.equals(s)); 1038f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle s = new AbstractMap.SimpleImmutableEntry(k1, v2); 1048f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(s2.equals(s)); 1058f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle s = new AbstractMap.SimpleImmutableEntry(k2, v2); 1068f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(s2.equals(s)); 1078f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1088f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1098f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * getValue returns last setValue for SimpleEntry 1118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSetValue1() { 1138f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e2 = new AbstractMap.SimpleEntry(k1, v1); 1148f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry e = new AbstractMap.SimpleEntry(e2); 1158f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, e.getKey()); 1168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, e.getValue()); 1178f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle e.setValue(k2); 1188f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k2, e.getValue()); 1198f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertFalse(e2.equals(e)); 1208f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1218f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle 1228f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle /** 1238f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle * setValue for SimpleImmutableEntry throws UnsupportedOperationException 1248f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle */ 1258f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle public void testSetValue2() { 1268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s2 = new AbstractMap.SimpleImmutableEntry(k1, v1); 1278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle Map.Entry s = new AbstractMap.SimpleImmutableEntry(s2); 1288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(k1, s.getKey()); 1298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle assertEquals(v1, s.getValue()); 1308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle try { 1318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle s.setValue(k2); 1328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle shouldThrow(); 1338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } catch (UnsupportedOperationException success) {} 1348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle } 1358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle} 136