< prev index next >

test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java

Print this page

        

*** 632,642 **** testGetter(TEST_FIND_STATIC); } public void testGetter(int testMode) throws Throwable { Lookup lookup = PRIVATE; // FIXME: test more lookups than this one ! for (Object[] c : HasFields.CASES) { boolean positive = (c[1] != Error.class); testGetter(positive, lookup, c[0], c[1], testMode); if (positive) testGetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); } --- 632,642 ---- testGetter(TEST_FIND_STATIC); } public void testGetter(int testMode) throws Throwable { Lookup lookup = PRIVATE; // FIXME: test more lookups than this one ! for (Object[] c : HasFields.cases(testMode)) { boolean positive = (c[1] != Error.class); testGetter(positive, lookup, c[0], c[1], testMode); if (positive) testGetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); }
*** 721,739 **** : IllegalAccessException.class, noAccess); if (verbosity >= 5) ex.printStackTrace(System.out); } if (verbosity >= 3) ! System.out.println("find"+(isStatic?"Static":"")+(isGetter?"Getter":"Setter")+" "+fclass.getName()+"."+fname+"/"+ftype ! +" => "+mh ! +(noAccess == null ? "" : " !! "+noAccess)); if (positive && !testNPE && noAccess != null) throw new RuntimeException(noAccess); assertEquals(positive0 ? "positive test" : "negative test erroneously passed", positive0, mh != null); if (!positive && !testNPE) return; // negative access test failed as expected assertEquals((isStatic ? 0 : 1)+(isGetter ? 0 : 1), mh.type().parameterCount()); - assertSame(mh.type(), expType); //assertNameStringContains(mh, fname); // This does not hold anymore with LFs HasFields fields = new HasFields(); HasFields fieldsForMH = fields; if (testNPE) fieldsForMH = null; // perturb MH argument to elicit expected error --- 721,743 ---- : IllegalAccessException.class, noAccess); if (verbosity >= 5) ex.printStackTrace(System.out); } if (verbosity >= 3) ! System.out.format("%s%s %s.%s/%s => %s %s%n", ! (testMode0 & TEST_UNREFLECT) != 0 ! ? "unreflect" ! : "find" + ((testMode0 & TEST_FIND_STATIC) != 0 ? "Static" : ""), ! (isGetter ? "Getter" : "Setter"), ! fclass.getName(), fname, ftype, mh, ! (noAccess == null ? "" : " !! "+noAccess)); ! if (!positive && noAccess != null) return; if (positive && !testNPE && noAccess != null) throw new RuntimeException(noAccess); assertEquals(positive0 ? "positive test" : "negative test erroneously passed", positive0, mh != null); if (!positive && !testNPE) return; // negative access test failed as expected assertEquals((isStatic ? 0 : 1)+(isGetter ? 0 : 1), mh.type().parameterCount()); assertSame(mh.type(), expType); //assertNameStringContains(mh, fname); // This does not hold anymore with LFs HasFields fields = new HasFields(); HasFields fieldsForMH = fields; if (testNPE) fieldsForMH = null; // perturb MH argument to elicit expected error
*** 753,762 **** --- 757,768 ---- } if (f != null && f.getDeclaringClass() == HasFields.class) { assertEquals(f.get(fields), value); // clean to start with } Throwable caughtEx = null; + boolean writeAccess = !Modifier.isFinal(f.getModifiers()) || + (!Modifier.isStatic(f.getModifiers()) && f.isAccessible()); if (isGetter) { Object expValue = value; for (int i = 0; i <= 1; i++) { sawValue = null; // make DA rules happy under try/catch try {
*** 776,787 **** caughtEx = ex; break; } } assertEquals(sawValue, expValue); ! if (f != null && f.getDeclaringClass() == HasFields.class ! && !Modifier.isFinal(f.getModifiers())) { Object random = randomArg(ftype); f.set(fields, random); expValue = random; } else { break; --- 782,792 ---- caughtEx = ex; break; } } assertEquals(sawValue, expValue); ! if (f != null && f.getDeclaringClass() == HasFields.class && writeAccess) { Object random = randomArg(ftype); f.set(fields, random); expValue = random; } else { break;
*** 811,821 **** if (f != null && f.getDeclaringClass() == HasFields.class) { assertEquals(f.get(fields), putValue); } } } ! if (f != null && f.getDeclaringClass() == HasFields.class) { f.set(fields, value); // put it back } if (testNPE) { if (caughtEx == null || !(caughtEx instanceof NullPointerException)) throw new RuntimeException("failed to catch NPE exception"+(caughtEx == null ? " (caughtEx=null)" : ""), caughtEx); --- 816,826 ---- if (f != null && f.getDeclaringClass() == HasFields.class) { assertEquals(f.get(fields), putValue); } } } ! if (f != null && f.getDeclaringClass() == HasFields.class && writeAccess) { f.set(fields, value); // put it back } if (testNPE) { if (caughtEx == null || !(caughtEx instanceof NullPointerException)) throw new RuntimeException("failed to catch NPE exception"+(caughtEx == null ? " (caughtEx=null)" : ""), caughtEx);
*** 860,872 **** testSetter(TEST_FIND_STATIC); } public void testSetter(int testMode) throws Throwable { Lookup lookup = PRIVATE; // FIXME: test more lookups than this one ! startTest("unreflectSetter"); ! for (Object[] c : HasFields.CASES) { ! boolean positive = (c[1] != Error.class); testSetter(positive, lookup, c[0], c[1], testMode); if (positive) testSetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); } for (int isStaticN = 0; isStaticN <= 1; isStaticN++) { --- 865,885 ---- testSetter(TEST_FIND_STATIC); } public void testSetter(int testMode) throws Throwable { Lookup lookup = PRIVATE; // FIXME: test more lookups than this one ! startTest("testSetter"); ! for (Object[] c : HasFields.cases(testMode)) { ! boolean positive = (c[1] != Error.class) && !(c.length == 3 && c[2] == Error.class); ! if ((testMode & TEST_UNREFLECT) != 0 && c.length == 3) { ! assertTrue(c[0] instanceof Field && c[2] == Error.class); ! Field f = (Field)c[0]; ! int mods = f.getModifiers(); ! // unreflectSetter should only have write access on instance final field if accessible flag is true ! positive = !Modifier.isFinal(mods) || ! (!Modifier.isStatic(mods) && f.isAccessible()); ! } testSetter(positive, lookup, c[0], c[1], testMode); if (positive) testSetter(positive, lookup, c[0], c[1], testMode | TEST_NPE); } for (int isStaticN = 0; isStaticN <= 1; isStaticN++) {
< prev index next >