1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Licensed to the Apache Software Foundation (ASF) under one or more 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.luni.tests.java.lang; 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.testframework.serialization.SerializationTest; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport tests.util.SerializationTester; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.HashMap; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Enum.class) 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class EnumTest extends TestCase { 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enum Sample { 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project LARRY, MOE, CURLY 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample larry = Sample.LARRY; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample moe = Sample.MOE; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enum Empty { 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enum Bogus { 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project UNUSED 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enum Color { 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Red, Green, Blue {}; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.NOT_FEASIBLE, 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Can't be tested, according to the spec this constructor can't be invoked.", 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Enum", 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, int.class} 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_EnumLStringLlang() { 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //TODO 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.NOT_FEASIBLE, 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Can't be tested, according to the spec.", 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "clone", 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_clone() { 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //TODO 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#compareTo(java.lang.Enum) 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "compareTo", 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Enum.class} 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_compareToLjava_lang_Enum() { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(0 < Sample.MOE.compareTo(Sample.LARRY)); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, Sample.MOE.compareTo(Sample.MOE)); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(0 > Sample.MOE.compareTo(Sample.CURLY)); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample.MOE.compareTo((Sample)null); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException"); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#equals(Object) 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "equals", 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Object.class} 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_equalsLjava_lang_Object() { 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(moe.equals("bob")); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(moe.equals(Sample.MOE)); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(Sample.LARRY.equals(Sample.CURLY)); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(Sample.LARRY.equals(larry)); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(Sample.CURLY.equals(null)); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#getDeclaringClass() 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 = "getDeclaringClass", 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getDeclaringClass() { 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Sample.class, moe.getDeclaringClass()); 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#hashCode() 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "hashCode", 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_hashCode() { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals (moe.hashCode(), moe.hashCode()); 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue (moe.hashCode() != Sample.LARRY.hashCode()); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#name() 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "name", 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_name() { 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("MOE", moe.name()); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#ordinal() 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ordinal", 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ordinal() { 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, larry.ordinal()); 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(1, moe.ordinal()); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(2, Sample.CURLY.ordinal()); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#toString() 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 = "toString", 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_toString() { 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(moe.toString().equals("MOE")); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#valueOf(Class, String) 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "valueOf", 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.Class.class, java.lang.String.class} 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_valueOfLjava_lang_String() { 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Sample.CURLY, Sample.valueOf("CURLY")); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(Sample.LARRY, Sample.valueOf("LARRY")); 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(moe, Sample.valueOf("MOE")); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample.valueOf("non-existant"); 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an exception"); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e){ 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample.valueOf(null); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Should throw NullPointerException"); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // May be caused by some compilers' code 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // other compilers will throw this 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample s = Enum.valueOf(Sample.class, "CURLY"); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(s, Sample.CURLY); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = Enum.valueOf(Sample.class, "LARRY"); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(larry, s); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project s = Enum.valueOf(Sample.class, "MOE"); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertSame(s, moe); 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enum.valueOf(Bogus.class, "MOE"); 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected IllegalArgumentException"); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enum.valueOf((Class<Sample>)null, "a string"); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an exception"); 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // May be caused by some compilers' code 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // other compilers will throw this 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enum.valueOf(Sample.class, null); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an exception"); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // May be caused by some compilers' code 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // other compilers will throw this 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Enum.valueOf((Class<Sample>)null, (String)null); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Expected an exception"); 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // May be caused by some compilers' code 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // other compilers will throw this 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.lang.Enum#values 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.TODO, 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Tests the values() method which is not in the API since it is" + 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "automatically created by the compiler for enum types", 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!values", 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_values() { 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Sample[] myValues = Sample.values(); 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(3, myValues.length); 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Sample.LARRY, myValues[0]); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Sample.MOE, myValues[1]); 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(Sample.CURLY, myValues[2]); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(0, Empty.values().length); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @test Serialization/deserilazation compatibility with Harmony. 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Serialization/deserilazation compatibility.", 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!SerializationGolden", 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 278a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project public void test_compatibilitySerialization_inClass_Complex_Harmony() throws Exception{ 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // TODO migrate to the new testing framework 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(SerializationTester.assertCompabilityEquals(new MockEnum2(), 281a99b695964e28a5906003d40db48cbd550fbcdf4The Android Open Source Project "/serialization/org/apache/harmony/luni/tests/java/lang/EnumTest.harmony.ser")); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests serialization/deserialization compatibility. 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies serialization/deserialization compatibility.", 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!SerializationSelf", 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSerializationSelf() throws Exception { 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test a map class that has enums. 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-1163 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project HashMap<Color, Integer> enumColorMap = new HashMap<Color, Integer>(); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumColorMap.put(Color.Red, 1); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumColorMap.put(Color.Blue, 3); 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object[] testCases = { enumColorMap, Sample.CURLY }; 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializationTest.verifySelf(testCases); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test a class that has enums as its fields. 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockEnum mock = new MockEnum(); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockEnum test = (MockEnum) SerializationTest.copySerializable(mock); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock.i, test.i); 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock.str, test.str); 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock.samEnum, test.samEnum); 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test a class that has enums and a string of same name as its fields. 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockEnum2 mock2 = new MockEnum2(); 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MockEnum2 test2 = (MockEnum2) SerializationTest.copySerializable(mock2); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock2.i, test2.i); 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock2.str, test2.str); 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mock2.samEnum, test2.samEnum); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests serialization/deserialization compatibility with RI. 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Verifies serialization/deserialization compatibility.", 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "!SerializationGolden", 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testSerializationCompatibility() throws Exception { 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // regression test for Harmony-1163 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project HashMap<Color, Integer> enumColorMap = new HashMap<Color, Integer>(); 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumColorMap.put(Color.Red, 1); 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumColorMap.put(Color.Blue, 3); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Object[] testCases = { Sample.CURLY, new MockEnum(), 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test a class that has enums and a string of same name as its fields. 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MockEnum2(), 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // test a map class that has enums. 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project enumColorMap, }; 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SerializationTest.verifyGolden(this, testCases); 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 347