1798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath/* 2798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * Copyright (C) 2016 The Android Open Source Project 3798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * 4798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * Licensed under the Apache License, Version 2.0 (the "License"); 5798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * you may not use this file except in compliance with the License. 6798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * You may obtain a copy of the License at 7798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * 8798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 9798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * 10798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * Unless required by applicable law or agreed to in writing, software 11798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 12798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * See the License for the specific language governing permissions and 14798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath * limitations under the License 15798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath */ 16798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 17798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathpackage libcore.java.lang.invoke; 18798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 19798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathimport junit.framework.TestCase; 20798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 21798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathimport java.lang.invoke.MethodHandleInfo; 22798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathimport java.lang.invoke.MethodType; 23798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 24798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathimport static java.lang.invoke.MethodHandleInfo.*; 25798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 26798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamathpublic class MethodHandleInfoTest extends TestCase { 27798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath public void test_toString() { 28798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath final MethodType type = MethodType.methodType(String.class, String.class); 29798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath String string = MethodHandleInfo.toString(REF_invokeVirtual, String.class, "concat", type); 30798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("invokeVirtual java.lang.String.concat:(String)String", string); 31798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 32798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 33798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath MethodHandleInfo.toString(-1, String.class, "concat", type); 34798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 35798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (IllegalArgumentException expected) { 36798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 37798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 38798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 39798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath MethodHandleInfo.toString(REF_invokeVirtual, String.class, null, type); 40798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 41798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (NullPointerException expected) { 42798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 43798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 44798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 45798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath MethodHandleInfo.toString(REF_invokeVirtual, null, "concat", type); 46798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 47798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (NullPointerException expected) { 48798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 49798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 50798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 51798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath MethodHandleInfo.toString(REF_invokeVirtual, String.class, "concat", null); 52798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 53798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (NullPointerException expected) { 54798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 55798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 56798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 57798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath public void test_referenceKindToString() { 58798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("getField", referenceKindToString(REF_getField)); 59798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("getStatic", referenceKindToString(REF_getStatic)); 60798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("putField", referenceKindToString(REF_putField)); 61798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("putStatic", referenceKindToString(REF_putStatic)); 62798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("invokeVirtual", referenceKindToString(REF_invokeVirtual)); 63798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("invokeStatic", referenceKindToString(REF_invokeStatic)); 64798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("invokeSpecial", referenceKindToString(REF_invokeSpecial)); 65798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("newInvokeSpecial", referenceKindToString(REF_newInvokeSpecial)); 66798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath assertEquals("invokeInterface", referenceKindToString(REF_invokeInterface)); 67798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 68798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 69798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath referenceKindToString(-1); 70798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 71798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (IllegalArgumentException expected) { 72798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 73798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath 74798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath try { 75798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath referenceKindToString(256); 76798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath fail(); 77798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } catch (IllegalArgumentException expected) { 78798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 79798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath } 80798bce8a6e61a5e02934589159850649d79e9cafNarayan Kamath} 81