1 /* 2 * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 @test 26 @summary <rdar://problem/2005198> CharFieldTest0709 fails 27 @summary com.apple.junit.java.lang.Reflection; 28 @run main R2005198FieldGetChar 29 */ 30 31 import junit.framework.*; 32 33 import java.lang.reflect.Field; 34 35 36 public class R2005198FieldGetChar extends TestCase 37 { 38 39 public static Test suite() { 40 return new TestSuite(R2005198FieldGetChar.class); 41 } 42 43 public static void main (String[] args) throws RuntimeException { 44 TestResult tr = junit.textui.TestRunner.run(suite()); 45 if((tr.errorCount() != 0) || (tr.failureCount() != 0)) { 46 throw new RuntimeException("### Unexpected JUnit errors or failures."); 47 } 48 } 49 50 // Test need supposedly "unused" fields to clober locals in the failure case 51 class test07a { 52 public char field1 = 'A'; 53 @SuppressWarnings("unused") 54 private char field2 = '2'; 55 protected char field3 = '3'; 56 public Character field4 = new Character('4'); 57 @SuppressWarnings("unused") 58 private Character field5 = new Character('5'); 59 } 60 61 public void testR2005198() throws Exception { 62 Field fields[] = test07a.class.getDeclaredFields(); 63 Field f = fields[0]; 64 char c = 'b'; 65 char c2 = 'b'; 66 char c3 = 'A'; 67 68 assertEquals("local variables c and c2 got clobbered", c, c2); 69 70 71 c = f.getChar(new test07a()); 72 int conv1 = (int)c; 73 int conv2 = (int)c3; 74 75 assertEquals("Unable able to use reflection to get and convert a char field", conv1, conv2); 76 assertEquals("Unable able to use reflection to get a char field", c, c3); 77 } 78 } 79