test/tools/javac/lambda/methodReferenceExecution/MethodReferenceTestVarArgsSuperDefault.java

Fri, 22 Mar 2013 12:43:09 +0000

author
mcimadamore
date
Fri, 22 Mar 2013 12:43:09 +0000
changeset 1655
c6728c9addff
parent 0
959103a6100f
permissions
-rw-r--r--

8010303: Graph inference: missing incorporation step causes spurious inference error
Summary: Multiple equality constraints on inference vars are not used to generate new inference constraints
Reviewed-by: jjg

     1 /*
     2  * Copyright (c) 2012, 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.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 /**
    27  * @test
    28  * @bug 8003639
    29  * @summary convert lambda testng tests to jtreg and add them
    30  * @run testng MethodReferenceTestVarArgsSuperDefault
    31  */
    33 import org.testng.annotations.Test;
    34 import java.lang.reflect.Array;
    36 import static org.testng.Assert.assertEquals;
    38 /**
    39  * @author Robert Field
    40  */
    42 interface MethodReferenceTestVarArgsSuperDefault_I {
    44     default String xvI(Integer... vi) {
    45         StringBuilder sb = new StringBuilder("xvI:");
    46         for (Integer i : vi) {
    47             sb.append(i);
    48             sb.append("-");
    49         }
    50         return sb.toString();
    51     }
    53     default String xIvI(Integer f, Integer... vi) {
    54         StringBuilder sb = new StringBuilder("xIvI:");
    55         sb.append(f);
    56         for (Integer i : vi) {
    57             sb.append(i);
    58             sb.append("-");
    59         }
    60         return sb.toString();
    61     }
    63     default String xvi(int... vi) {
    64         int sum = 0;
    65         for (int i : vi) {
    66             sum += i;
    67         }
    68         return "xvi:" + sum;
    69     }
    71     default String xIvi(Integer f, int... vi) {
    72         int sum = 0;
    73         for (int i : vi) {
    74             sum += i;
    75         }
    76         return "xIvi:(" + f + ")" + sum;
    77     }
    79     default String xvO(Object... vi) {
    80         StringBuilder sb = new StringBuilder("xvO:");
    81         for (Object i : vi) {
    82             if (i.getClass().isArray()) {
    83                 sb.append("[");
    84                 int len = Array.getLength(i);
    85                 for (int x = 0; x < len; ++x)  {
    86                     sb.append(Array.get(i, x));
    87                     sb.append(",");
    88                 }
    89                 sb.append("]");
    91             } else {
    92                 sb.append(i);
    93             }
    94             sb.append("*");
    95         }
    96         return sb.toString();
    97     }
    98 }
   100 @Test
   101 public class MethodReferenceTestVarArgsSuperDefault implements MethodReferenceTestVarArgsSuperDefault_I {
   103     interface DSPRII { String m(Integer a, Integer b); }
   105     interface DSPRiii { String m(int a, int b, int c); }
   107     interface DSPRi { String m(int a); }
   109     interface DSPRaO { String m(Object[] a); }
   111     interface DSPRai { String m(int[] a); }
   113     interface DSPRvi { String m(int... va); }
   115     // These should be processed as var args
   117     public void testVarArgsSPRSuperclass() {
   118         DSPRII q;
   120         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvO;
   121         assertEquals(q.m(55,66), "xvO:55*66*");
   122     }
   124     public void testVarArgsSPRArray() {
   125         DSPRai q;
   127         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvO;
   128         assertEquals(q.m(new int[] { 55,66 } ), "xvO:[55,66,]*");
   129     }
   131     public void testVarArgsSPRII() {
   132         DSPRII q;
   134         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvI;
   135         assertEquals(q.m(33,7), "xvI:33-7-");
   137         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvI;
   138         assertEquals(q.m(50,40), "xIvI:5040-");
   140         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvi;
   141         assertEquals(q.m(100,23), "xvi:123");
   143         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvi;
   144         assertEquals(q.m(9,21), "xIvi:(9)21");
   145     }
   147     public void testVarArgsSPRiii() {
   148         DSPRiii q;
   150         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvI;
   151         assertEquals(q.m(3, 2, 1), "xvI:3-2-1-");
   153         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvI;
   154         assertEquals(q.m(888, 99, 2), "xIvI:88899-2-");
   156         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvi;
   157         assertEquals(q.m(900,80,7), "xvi:987");
   159         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvi;
   160         assertEquals(q.m(333,27, 72), "xIvi:(333)99");
   161     }
   163     public void testVarArgsSPRi() {
   164         DSPRi q;
   166         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvI;
   167         assertEquals(q.m(3), "xvI:3-");
   169         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvI;
   170         assertEquals(q.m(888), "xIvI:888");
   172         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvi;
   173         assertEquals(q.m(900), "xvi:900");
   175         q = MethodReferenceTestVarArgsSuperDefault_I.super::xIvi;
   176         assertEquals(q.m(333), "xIvi:(333)0");
   177     }
   179     // These should NOT be processed as var args
   181     public void testVarArgsSPRaO() {
   182         DSPRaO q;
   184         q = MethodReferenceTestVarArgsSuperDefault_I.super::xvO;
   185         assertEquals(q.m(new String[] { "yo", "there", "dude" }), "xvO:yo*there*dude*");
   186     }
   189 }

mercurial