ValueHandlerTest.java revision 1870:4aa2e64eff30
1/* 2 * Copyright (c) 2015, 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 24package jdk.test.failurehandler.value; 25 26import org.junit.Assert; 27import org.junit.Test; 28 29import java.lang.reflect.Field; 30import java.util.Properties; 31 32public class ValueHandlerTest { 33 @Test 34 public void testApplyAnonymousPrivateFinalInt() throws Exception { 35 Properties p = new Properties(); 36 p.put("int", "010"); 37 Object o = new Object() { 38 @Value (name = "int") 39 private final int i1 = -1; 40 }; 41 Field f = o.getClass().getDeclaredField("i1"); 42 f.setAccessible(true); 43 int value = f.getInt(o); 44 Assert.assertEquals(value, -1); 45 f.setAccessible(false); 46 ValueHandler.apply(o, p, null); 47 f.setAccessible(true); 48 value = f.getInt(o); 49 Assert.assertEquals(value, 8); 50 f.setAccessible(false); 51 } 52 53 @Test 54 public void testApplyPublicStaticWithDefault() throws Exception { 55 Assert.assertEquals(StaticDefaultCase.s, null); 56 Properties p = new Properties(); 57 StaticDefaultCase o = new StaticDefaultCase(); 58 ValueHandler.apply(o, p, "prefix"); 59 Assert.assertEquals(StaticDefaultCase.s, "default"); 60 p.put("s", "new2"); 61 ValueHandler.apply(o, p, "prefix"); 62 Assert.assertEquals(StaticDefaultCase.s, "new2"); 63 p.put("prefix.s", "new"); 64 ValueHandler.apply(o, p, "prefix"); 65 Assert.assertEquals(StaticDefaultCase.s, "new"); 66 ValueHandler.apply(o, p, null); 67 Assert.assertEquals(StaticDefaultCase.s, "new2"); 68 } 69 70 protected class InnerClass1 { 71 @Value (name = "innerClass") 72 String[] arr = null; 73 } 74 75 public class InnerClass2 extends InnerClass1 { 76 @Value (name = "float") 77 float f = 0.0f; 78 79 @SubValues (prefix = "inner") 80 InnerClass1 inner1 = new InnerClass1(); 81 82 @SubValues (prefix = "") 83 InnerClass1 inner2 = new InnerClass1(); 84 } 85 86 @Test 87 public void testApplySub() throws Exception { 88 InnerClass2 o = new InnerClass2(); 89 Assert.assertArrayEquals(o.arr, null); 90 Assert.assertArrayEquals(o.inner1.arr, null); 91 Assert.assertArrayEquals(o.inner2.arr, null); 92 Assert.assertEquals(o.f, 0.0f, Float.MIN_VALUE); 93 94 Properties p = new Properties(); 95 p.put("float", "1.f"); 96 p.put("innerClass", "a b"); 97 p.put("inner.innerClass", "a b c"); 98 ValueHandler.apply(o, p, ""); 99 Assert.assertArrayEquals(o.arr, new String[]{"a", "b"}); 100 Assert.assertArrayEquals(o.inner1.arr, new String[]{"a", "b", "c"}); 101 Assert.assertArrayEquals(o.inner2.arr, new String[]{"a", "b"}); 102 Assert.assertEquals(o.f, 1.0f, Float.MIN_VALUE); 103 } 104} 105 106class StaticDefaultCase { 107 @Value (name = "s") 108 @DefaultValue (value = "default") 109 public static String s; 110} 111