langtools/test/tools/javac/annotations/repeatingAnnotations/combo/ReflectionTest.java
author darcy
Wed, 03 Aug 2016 11:30:27 -0700
changeset 40231 ba38ad2dd137
parent 30730 d3ce7619db2c
permissions -rw-r--r--
8163113: langtools repeating annotations tests depend rely on annotations toString output Reviewed-by: jlahoda, vromero
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     1
/*
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
     2
 * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     4
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     7
 * published by the Free Software Foundation.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     8
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    13
 * accompanied this code).
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    14
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    18
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    21
 * questions.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    22
 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    23
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    24
/**
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    25
 * @test
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
    26
 * @bug      8001457 8027477 8163113
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    27
 * @author   sogoel
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    28
 * @summary  Reflection api tests
30730
d3ce7619db2c 8076543: Add @modules as needed to the langtools tests
akulyakh
parents: 22684
diff changeset
    29
 * @modules jdk.compiler
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    30
 * @build    Helper
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    31
 * @compile  expectedFiles/ExpectedBase.java expectedFiles/ExpectedContainer.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    32
 * @run main ReflectionTest
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    33
 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    34
import java.io.File;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    35
import java.io.IOException;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    36
import java.lang.annotation.Annotation;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    37
import java.net.MalformedURLException;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    38
import java.net.URL;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    39
import java.net.URLClassLoader;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    40
import java.util.ArrayList;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    41
import java.util.Arrays;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    42
import java.util.List;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    43
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    44
import javax.tools.DiagnosticCollector;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    45
import javax.tools.JavaFileObject;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    46
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    47
import expectedFiles.ExpectedBase;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    48
import expectedFiles.ExpectedContainer;
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
    49
import java.util.Iterator;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
    50
import java.util.regex.Pattern;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    51
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    52
/*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    53
 * Objective:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    54
 * Test the following 6 methods from java.lang.reflect.AnnotatedElement:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    55
 * - getAnnotation(Class<T>)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    56
 * - getAnnotations()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    57
 * - getDeclaredAnnotations()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    58
 * - getDeclaredAnnotation(Class<T>)  // new method in JDK8
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    59
 * - getAnnotationsByType(Class<T>)         // new method in JDK8
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    60
 * - getDeclaredAnnotationsByType(Class<T>) // new method in JDK8
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    61
 * for multiple test cases, for example, BasicNonRepeatable case, BasicRepeatable case
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    62
 * for each of the src types - class, method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    63
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    64
 * This test uses following three enums:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    65
 * 1. TestCase - Defines the ExpectedBase/ExpectedContainer values for each testCase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    66
 *             - getTestFiles() - Creates list of JavaFileObjects for the primary
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    67
 *                                src types (class, method, field, package)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    68
 *             - Each testCase is a new scenario with a combination of @Repeatable
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    69
 *               relationship present/absent in conjunction with @Inherited.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    70
 *               For eg: BasicNonRepeatable_Legacy - It is a pre-JDK8 way of writing a single
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    71
 *                       annotation on a given srcType( class, method, field, package)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    72
 *                       BasicRepeatable - It is a JDK8 way of writing repeating annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    73
 *                       on a given srcType with a @Repeatable relationship
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    74
 *                       defined between Foo and FooContainer.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    75
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    76
 * 2. SrcType - Defines templates used in creation of test src
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    77
 *            - Defines getExpectedBase() and getExpectedContainer() for primary src types
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    78
 * 3. TestMethod - Defines getActualAnnoBase(), getActualAnnoContainer(), getExpectedAnnoBase(),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    79
 *                 and getExpectedAnnoContainer() for each of the 6 methods that are being tested
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    80
 *                 in java.lang.reflect.AnnotatedElement
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    81
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    82
 * Test execution flow:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    83
 * - Loop over each of the src types and each test cases
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    84
 * - Creates test src for each flow, compile it, load the class object
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    85
 * - Run all 6 methods on this class object
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    86
 * - Get expected and actual annotations for each object and compare them.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    87
 * - Increment the error counter if the annotations don't match.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    88
 *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    89
 * The test fails if the number of errors is greater than 0.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    90
 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    91
public class ReflectionTest {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    92
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    93
    static int errors = 0;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    94
    // Variables used in creating test src for a given testcase/testSrcType
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    95
    static final String TESTPKG = "testpkg";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    96
    static final String TESTMETHOD = "testMethod";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    97
    static final String TESTFIELD = "testField";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    98
    static final String PKGINFONAME = TESTPKG + ".package-info";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
    99
    static final String SUPERCLASS = "SuperClass";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   100
    static final String TESTINTERFACE = "TestInterface";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   101
    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   102
     *  Set it to true to get more debug information
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   103
     */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   104
    static final boolean DEBUG = false;
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   105
    static boolean CHECKORDERING;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   106
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   107
    public static void main(String args[]) throws Exception {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   108
        ReflectionTest test = new ReflectionTest();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   109
        test.runTest();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   110
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   111
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   112
    public void runTest() throws Exception {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   113
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   114
        ClassLoader parentClassLoader = getLoader();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   115
        String className = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   116
        Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   117
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   118
        for (SrcType srcType : SrcType.getSrcTypes()) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   119
            for (TestCase testCase : TestCase.values()) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   120
                className = testCase + "_" + srcType;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   121
                debugPrint("*****************************************");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   122
                System.out.println("Running Test for ClassName: " + className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   123
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   124
                // @Inherited only applicable for class, exclude cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   125
                // package, method, field
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   126
                if (testCase.name().contains("Inherited")
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   127
                        && (srcType != SrcType.CLASS)) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   128
                    continue;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   129
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   130
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   131
                // Get list of JavaFileObjects to be compiled
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   132
                files = testCase.getTestFiles(srcType, className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   133
                if (srcType == SrcType.PACKAGE) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   134
                    className = TESTPKG + "." + className;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   135
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   136
                DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<>();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   137
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   138
                // Compile the list of JavaFileObjects
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   139
                try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   140
                    Helper.compileCode(diagnostics, files);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   141
                } catch (Exception ex) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   142
                    printTestSrc(files);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   143
                    throw new RuntimeException(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   144
                            "Exception when compiling class " + className, ex);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   145
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   146
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   147
                // Get Class object for the compiled class
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   148
                Class<?> c = loadClass(className, parentClassLoader, Helper.destDir);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   149
                if (c != null) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   150
                    // For the loaded class object, compare expected and actual annotation values
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   151
                    // for each of the methods under test from java.lang.reflect.AnnotatedElement
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   152
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   153
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   154
                    // Ignoring following test cases since for now they are
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   155
                    // failing with ordering issues.
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   156
                    // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   157
                    // fail with ordering issues
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   158
                    List<String> orderingTestFailures = Arrays.asList(
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   159
                            "SingleOnSuperContainerOnSub_Inherited_Legacy",
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   160
                            "SingleOnSuperContainerAndSingleOnSub_Inherited_Legacy",
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   161
                            "ContainerAndSingleOnSuperSingleOnSub_Inherited_Legacy",
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   162
                            "SingleAnnoWithContainer",
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   163
                            "SingleOnSuperContainerAndSingleOnSub_Inherited",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   164
                            "RepeatableOnSuperSingleOnSub_Inherited",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   165
                            "SingleOnSuperRepeatableOnSub_Inherited",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   166
                            "ContainerOnSuperSingleOnSub_Inherited",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   167
                            "SingleOnSuperContainerOnSub_Inherited",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
   168
                            "ContainerAndSingleOnSuperSingleOnSub_Inherited");
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   169
                    if (orderingTestFailures.contains(testCase.toString())) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   170
                        CHECKORDERING = false;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   171
                    } else
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   172
                        CHECKORDERING = true;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   173
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   174
                    checkAnnoValues(srcType, c);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   175
                } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   176
                    error("Could not load className = " + c);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   177
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   178
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   179
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   180
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   181
        if (getNumErrors() > 0) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   182
            System.err.println("Test failed with " + getNumErrors() + " errors");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   183
            throw new RuntimeException();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   184
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   185
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   186
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   187
    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   188
     *  Each test case in this enum has the following:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   189
     *  - Define each test case with its @ExpectedBase and @ExpectedContainer annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   190
     *  - Override getTestFiles() that creates list of JavaFileObjects for each case
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   191
     *    based on the src type.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   192
     */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   193
    enum TestCase {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   194
        BasicNonRepeatable_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   195
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   196
                + "getAnnotationVal = \"@Foo(value=0)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   197
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   198
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   199
                + "getDeclAnnoVal = \"@Foo(value=0)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   200
                + "getAnnosArgs = {\"@Foo(value=0)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   201
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"}) ",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   202
        "@ExpectedContainer") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   203
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   204
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   205
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   206
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   207
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   208
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   209
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   210
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   211
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   212
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   213
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   214
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   215
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   216
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   217
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   218
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   219
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   220
                anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   221
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   222
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   223
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   224
                        .append(Helper.ContentVars.BASE.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   225
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   226
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   227
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   228
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   229
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   230
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   231
                        @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   232
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   233
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   234
                        @Retention(RetentionPolicy.RUNTIME)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   235
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   236
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   237
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   238
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   239
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   240
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   241
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   242
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   243
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   244
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   245
                        replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   246
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   247
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   248
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   249
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   250
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   251
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   252
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   253
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   254
                        // class, method, field
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   255
                    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   256
                        Sample testSrc for class
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   257
                        @Retention(RetentionPolicy.RUNTIME)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   258
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   259
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   260
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   261
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   262
                        @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   263
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   264
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   265
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   266
                        testSrc = srcType.getTemplate().replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   267
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   268
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   269
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   270
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   271
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   272
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   273
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   274
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   275
        SingleAnnoInherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   276
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   277
                + "getAnnotationVal = \"@Foo(value=0)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   278
                + "getAnnotationsVals = {\"@Foo(value=0)\", \"ExpectedBase\", \"ExpectedContainer\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   279
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   280
                + "getDeclAnnoVal = \"NULL\", "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   281
                + "getAnnosArgs = {\"@Foo(value=0)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   282
                + "getDeclAnnosArgs = {})",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   283
        "@ExpectedContainer") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   284
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   285
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   286
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   287
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   288
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   289
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   290
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   291
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   292
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   293
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   294
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   295
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   296
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   297
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   298
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   299
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   300
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   301
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   302
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   303
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   304
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   305
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   306
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   307
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   308
                @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   309
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   310
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   311
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   312
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   313
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   314
                anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   315
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   316
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   317
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   318
                        .append(Helper.ContentVars.INHERITED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   319
                        .append(Helper.ContentVars.BASE.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   320
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   321
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   322
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   323
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   324
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   325
                            .replace("#CN", SUPERCLASS).replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   326
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   327
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   328
                    replaceVal = expectedVals;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   329
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   330
                            .replace("#CN", className).replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   331
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   332
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   333
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   334
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   335
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   336
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   337
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   338
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   339
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   340
        InheritedAnnoOnInterface_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   341
        "@ExpectedBase(value=Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   342
                + "getAnnotationVal = \"NULL\", "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   343
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   344
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"},"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   345
                + "getDeclAnnoVal = \"NULL\"," + "getAnnosArgs = {},"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   346
                + "getDeclAnnosArgs = {})",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   347
        "@ExpectedContainer") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   348
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   349
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   350
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   351
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   352
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   353
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   354
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   355
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   356
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   357
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   358
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   359
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   360
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   361
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   362
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   363
                Sample test src:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   364
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   365
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   366
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   367
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   368
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   369
                interface TestInterface { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   370
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   371
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   372
                @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   373
                class A implements TestInterface {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   374
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   375
                anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   376
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   377
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   378
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   379
                        .append(Helper.ContentVars.INHERITED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   380
                        .append(Helper.ContentVars.BASE.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   381
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   382
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   383
                    // Contents for TestInterface
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   384
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   385
                    String interfaceContents = SrcType.INTERFACE.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   386
                            .replace("#IN", TESTINTERFACE)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   387
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   388
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   389
                    // Contents for class implementing TestInterface
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   390
                    replaceVal = expectedVals;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   391
                    String classContents = SrcType.INTERFACEIMPL.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   392
                            .replace("#CN", className).replace("#IN", TESTINTERFACE)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   393
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   394
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   395
                    contents = interfaceContents + classContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   396
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   397
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   398
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   399
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   400
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   401
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   402
        AnnoOnSuperAndSubClass_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   403
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   404
                + "getAnnotationVal = \"@Foo(value=2)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   405
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=2)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   406
                + // override every annotation on superClass
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   407
                "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=2)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   408
                + // ignores inherited annotations
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   409
                "getDeclAnnoVal = \"@Foo(value=2)\", " // ignores inherited
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   410
                + "getAnnosArgs = {\"@Foo(value=2)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   411
                + "getDeclAnnosArgs = { \"@Foo(value=2)\" })", // ignores inherited
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   412
        "@ExpectedContainer(value=FooContainer.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   413
                + "getAnnotationVal = \"NULL\", "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   414
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=2)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   415
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=2)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   416
                + // ignores inherited annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   417
                "getDeclAnnoVal = \"NULL\", " + // ignores inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   418
                "getAnnosArgs = {}, " + "getDeclAnnosArgs = {})") { // ignores inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   419
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   420
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   421
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   422
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   423
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   424
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   425
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   426
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   427
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   428
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   429
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   430
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   431
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   432
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   433
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   434
                Sample test src
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   435
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   436
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   437
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   438
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   439
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   440
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   441
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   442
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   443
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   444
                @Foo(1)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   445
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   446
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   447
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   448
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   449
                @Foo(2)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   450
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   451
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   452
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   453
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   454
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   455
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   456
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   457
                        .append(Helper.ContentVars.INHERITED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   458
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   459
                        .append(Helper.ContentVars.INHERITED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   460
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   461
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   462
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   463
                    // Contents for SuperClass
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   464
                    anno = "@Foo(1)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   465
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   466
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   467
                            .replace("#CN", SUPERCLASS).replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   468
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   469
                    // Contents for SubClass that extends SuperClass
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   470
                    anno = "@Foo(2)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   471
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   472
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   473
                            .replace("#CN", className).replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   474
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   475
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   476
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   477
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   478
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   479
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   480
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   481
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   482
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   483
        BasicContainer_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   484
        "@ExpectedBase(value = Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   485
                + "getAnnotationVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   486
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   487
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   488
                + "getDeclAnnoVal = \"NULL\", " + "getAnnosArgs = {}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   489
                + "getDeclAnnosArgs = {} )",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   490
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   491
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   492
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   493
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   494
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   495
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   496
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   497
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   498
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   499
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   500
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   501
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   502
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   503
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   504
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   505
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   506
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   507
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   508
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   509
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   510
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   511
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   512
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   513
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   514
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   515
                anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   516
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   517
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   518
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   519
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   520
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   521
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   522
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   523
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   524
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   525
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   526
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   527
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   528
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   529
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   530
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   531
                        @Retention(RetentionPolicy.RUNTIME)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   532
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   533
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   534
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   535
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   536
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   537
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   538
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   539
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   540
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   541
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   542
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   543
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   544
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   545
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   546
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   547
                        replaceVal = "\n" + expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   548
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   549
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   550
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   551
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   552
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   553
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   554
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   555
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   556
                        Sample testSrc for class:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   557
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   558
                        @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   559
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   560
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   561
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   562
                        @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   563
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   564
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   565
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   566
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   567
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   568
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   569
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   570
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   571
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   572
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   573
                        testSrc = srcType.getTemplate().replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   574
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   575
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   576
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   577
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   578
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   579
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   580
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   581
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   582
        SingleAndContainerOnSuper_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   583
        "@ExpectedBase(value = Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   584
                + "getAnnotationVal = \"@Foo(value=0)\","
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   585
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   586
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   587
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   588
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   589
                + "getDeclAnnoVal = \"@Foo(value=0)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   590
                + "getAnnosArgs = {\"@Foo(value=0)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   591
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"} )",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   592
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   593
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   594
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   595
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   596
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   597
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   598
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   599
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   600
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   601
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   602
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   603
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   604
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   605
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   606
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   607
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   608
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   609
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   610
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   611
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   612
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   613
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   614
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   615
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   616
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   617
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   618
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   619
                anno = Helper.ContentVars.BASEANNO.getVal() +
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   620
                       Helper.ContentVars.LEGACYCONTAINER.getVal();
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   621
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   622
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   623
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   624
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   625
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   626
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   627
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   628
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   629
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   630
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   631
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   632
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   633
                        @Foo(0)
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   634
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   635
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   636
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   637
                        @Retention(RetentionPolicy.RUNTIME)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   638
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   639
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   640
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   641
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   642
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   643
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   644
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   645
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   646
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   647
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   648
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   649
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   650
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   651
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   652
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   653
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   654
                        replaceVal = "\n" + expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   655
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   656
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   657
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   658
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   659
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   660
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   661
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   662
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   663
                        Sample testSrc for class:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   664
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   665
                        @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   666
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   667
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   668
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   669
                        @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   670
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   671
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   672
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   673
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   674
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   675
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   676
                        @Foo(0)
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   677
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   678
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   679
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   680
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   681
                        testSrc = srcType.getTemplate().replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   682
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   683
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   684
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   685
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   686
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   687
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   688
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   689
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   690
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   691
        BasicContainer_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   692
        "@ExpectedBase(value = Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   693
                + "getAnnotationVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   694
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   695
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   696
                + "getDeclAnnoVal = \"NULL\", "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   697
                + "getAnnosArgs = {}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   698
                + "getDeclAnnosArgs = {} )",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   699
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   700
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   701
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   702
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   703
                + "getDeclAnnoVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   704
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   705
                + "getDeclAnnosArgs = {} )") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   706
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   707
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   708
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   709
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   710
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   711
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   712
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   713
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   714
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   715
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   716
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   717
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   718
                StringBuilder commonStmts = getCommonStmts(false);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   719
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   720
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   721
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   722
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   723
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   724
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   725
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   726
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   727
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   728
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   729
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   730
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   731
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   732
                @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   733
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   734
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   735
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   736
                @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   737
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   738
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   739
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   740
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   741
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   742
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   743
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   744
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   745
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   746
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   747
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   748
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   749
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   750
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   751
                    replaceVal = expectedVals;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   752
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   753
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   754
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   755
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   756
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   757
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   758
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   759
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   760
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   761
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   762
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   763
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   764
        ContainerOnSuperSingleOnSub_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   765
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   766
                + "getAnnotationVal = \"@Foo(value=0)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   767
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   768
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   769
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   770
                + "getDeclAnnoVal = \"@Foo(value=0)\","
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   771
                + "getAnnosArgs = {\"@Foo(value=0)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   772
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   773
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   774
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   775
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   776
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   777
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   778
                + "getDeclAnnoVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   779
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   780
                + "getDeclAnnosArgs = {})") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   781
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   782
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   783
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   784
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   785
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   786
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   787
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   788
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   789
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   790
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   791
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   792
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   793
                StringBuilder commonStmts = getCommonStmts(false);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   794
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   795
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   796
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   797
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   798
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   799
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   800
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   801
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   802
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   803
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   804
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   805
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   806
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   807
                @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   808
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   809
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   810
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   811
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   812
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   813
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   814
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   815
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   816
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   817
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   818
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   819
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   820
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   821
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   822
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   823
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   824
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   825
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   826
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   827
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   828
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   829
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   830
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   831
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   832
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   833
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   834
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   835
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   836
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   837
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   838
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   839
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   840
        },
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   841
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   842
        // fail with ordering issues
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   843
        ContainerAndSingleOnSuperSingleOnSub_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   844
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   845
                + "getAnnotationVal = \"@Foo(value=0)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   846
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   847
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   848
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   849
                + "getDeclAnnoVal = \"@Foo(value=0)\","
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   850
                + "getAnnosArgs = {\"@Foo(value=0)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   851
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   852
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   853
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   854
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   855
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=0)\"}, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   856
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   857
                + "getDeclAnnoVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   858
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   859
                + "getDeclAnnosArgs = {})") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   860
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   861
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   862
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   863
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   864
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   865
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   866
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   867
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   868
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   869
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   870
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   871
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   872
                StringBuilder commonStmts = getCommonStmts(false);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   873
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   874
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   875
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   876
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   877
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   878
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   879
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   880
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   881
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   882
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   883
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   884
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   885
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   886
                @FooContainer(value = {@Foo(1), @Foo(2)}) @Foo(3)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   887
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   888
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   889
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   890
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   891
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   892
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   893
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   894
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   895
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   896
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   897
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   898
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   899
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal()
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   900
                            + "@Foo(3)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   901
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   902
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   903
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   904
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   905
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   906
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   907
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   908
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   909
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   910
                            .replace("#CN", className).replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   911
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   912
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   913
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   914
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   915
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   916
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   917
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   918
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   919
        },
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   920
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   921
        // fail with ordering issues
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   922
        SingleOnSuperContainerOnSub_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   923
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   924
                + "getAnnotationVal = \"@Foo(value=0)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   925
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   926
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   927
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   928
                + "getDeclAnnoVal = \"NULL\","
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   929
                + "getAnnosArgs = {\"@Foo(value=0)\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   930
                + "getDeclAnnosArgs = {})",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   931
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   932
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   933
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   934
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   935
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   936
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   937
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
   938
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   939
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   940
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   941
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   942
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   943
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   944
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   945
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   946
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   947
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   948
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   949
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   950
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   951
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   952
                StringBuilder commonStmts = getCommonStmts(false);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   953
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   954
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   955
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   956
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   957
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   958
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   959
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   960
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   961
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   962
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   963
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   964
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   965
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   966
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   967
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   968
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   969
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   970
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   971
                @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   972
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   973
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   974
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   975
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   976
                    //Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   977
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   978
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   979
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   980
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   981
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   982
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   983
                    //Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   984
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   985
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   986
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   987
                            .replace("#CN", className).replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   988
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   989
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   990
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   991
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   992
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   993
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   994
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   995
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   996
        },
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   997
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
   998
        // fail with ordering issues
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
   999
        SingleOnSuperContainerAndSingleOnSub_Inherited_Legacy(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1000
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1001
                + "getAnnotationVal = \"@Foo(value=3)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1002
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1003
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1004
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1005
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1006
                + "getDeclAnnoVal = \"@Foo(value=3)\","
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1007
                + "getAnnosArgs = {\"@Foo(value=3)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1008
                + "getDeclAnnosArgs = {\"@Foo(value=3)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1009
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1010
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1011
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1012
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1013
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1014
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1015
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1016
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1017
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1018
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1019
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1020
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1021
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1022
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1023
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1024
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1025
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1026
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1027
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1028
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1029
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1030
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1031
                StringBuilder commonStmts = getCommonStmts(false);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1032
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1033
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1034
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1035
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1036
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1037
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1038
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1039
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1040
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1041
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1042
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1043
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1044
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1045
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1046
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1047
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1048
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1049
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1050
                @FooContainer(value = {@Foo(1), @Foo(2)}) @Foo(3)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1051
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1052
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1053
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1054
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1055
                    //Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1056
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1057
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1058
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1059
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1060
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1061
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1062
                    //Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1063
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal()
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1064
                            + "@Foo(3)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1065
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1066
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1067
                            .replace("#CN", className).replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1068
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1069
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1070
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1071
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1072
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1073
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1074
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1075
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1076
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1077
        BasicRepeatable(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1078
        "@ExpectedBase(value=Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1079
                + "getAnnotationVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1080
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\" }, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1081
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1082
                + "getDeclAnnoVal = \"NULL\","
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1083
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1084
                + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1085
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1086
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1087
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1088
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1089
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1090
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1091
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1092
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1093
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1094
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1095
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1096
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1097
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1098
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1099
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1100
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1101
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1102
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1103
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1104
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1105
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1106
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1107
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1108
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1109
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1110
                anno = Helper.ContentVars.REPEATABLEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1111
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1112
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1113
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1114
                        .append(Helper.ContentVars.REPEATABLE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1115
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1116
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1117
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1118
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1119
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1120
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1121
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1122
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1123
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1124
                        @Foo(1) @Foo(2)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1125
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1126
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1127
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1128
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1129
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1130
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1131
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1132
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1133
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1134
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1135
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1136
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1137
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1138
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1139
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1140
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1141
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1142
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1143
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1144
                        replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1145
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1146
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1147
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1148
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1149
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1150
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1151
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1152
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1153
                        Sample testSrc for class:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1154
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1155
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1156
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1157
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1158
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1159
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1160
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1161
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1162
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1163
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1164
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1165
                        @Foo(1) @Foo(2)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1166
                        class A { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1167
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1168
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1169
                        testSrc = srcType.getTemplate().replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1170
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1171
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1172
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1173
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1174
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1175
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1176
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1177
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1178
        BasicContainerRepeatable(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1179
        "@ExpectedBase(value=Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1180
                + "getAnnotationVal = \"NULL\", "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1181
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1182
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1183
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1184
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1185
                + "getDeclAnnoVal = \"NULL\","
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1186
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1187
                + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1188
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1189
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1190
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1191
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1192
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1193
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1194
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1195
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1196
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"} )") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1197
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1198
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1199
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1200
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1201
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1202
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1203
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1204
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1205
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1206
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1207
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1208
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1209
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1210
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1211
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1212
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1213
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1214
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1215
                anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1216
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1217
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1218
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1219
                        .append(Helper.ContentVars.REPEATABLE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1220
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1221
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1222
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1223
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1224
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1225
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1226
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1227
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1228
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1229
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1230
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1231
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1232
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1233
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1234
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1235
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1236
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1237
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1238
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1239
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1240
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1241
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1242
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1243
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1244
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1245
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1246
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1247
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1248
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1249
                        replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1250
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1251
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1252
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1253
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1254
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1255
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1256
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1257
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1258
                        Sample testSrc for class:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1259
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1260
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1261
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1262
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1263
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1264
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1265
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1266
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1267
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1268
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1269
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1270
                        @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1271
                        class A { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1272
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1273
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1274
                        testSrc = srcType.getTemplate().replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1275
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1276
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1277
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1278
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1279
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1280
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1281
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1282
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1283
        BasicContainerRepeatable_Inherited(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1284
        "@ExpectedBase(value=Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1285
                + "getAnnotationVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1286
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1287
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1288
                + "getDeclAnnoVal = \"NULL\", "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1289
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1290
                + "getDeclAnnosArgs = {})",
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1291
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1292
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1293
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1294
                + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1295
                + "getDeclAnnoVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1296
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1297
                + "getDeclAnnosArgs = {})") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1298
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1299
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1300
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1301
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1302
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1303
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1304
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1305
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1306
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1307
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1308
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1309
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1310
                StringBuilder commonStmts = getCommonStmts(true);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1311
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1312
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1313
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1314
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1315
                @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1316
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1317
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1318
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1319
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1320
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1321
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1322
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1323
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1324
                @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1325
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1326
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1327
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1328
                @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1329
                class SubClass extends SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1330
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1331
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1332
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1333
                anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1334
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1335
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1336
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1337
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1338
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1339
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1340
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1341
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1342
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1343
                    replaceVal = expectedVals;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1344
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1345
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1346
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1347
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1348
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1349
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1350
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1351
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1352
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1353
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1354
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1355
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1356
        RepeatableAnnoInherited(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1357
        "@ExpectedBase(value=Foo.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1358
                + "getAnnotationVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1359
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1360
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1361
                + // ignores inherited annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1362
                "getDeclAnnoVal = \"NULL\", "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1363
                + // ignores inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1364
                "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1365
                + "getDeclAnnosArgs = {})", // ignores inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1366
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1367
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1368
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1369
                + "getDeclAnnosVals = { \"ExpectedBase\", \"ExpectedContainer\"}, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1370
                + // ignores inherited annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1371
                "getDeclAnnoVal = \"NULL\", "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1372
                + // ignores inherited
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1373
                "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1374
                + "getDeclAnnosArgs = {})") { // ignores inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1375
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1376
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1377
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1378
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1379
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1380
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1381
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1382
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1383
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1384
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1385
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1386
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1387
                StringBuilder commonStmts = getCommonStmts(true);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1388
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1389
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1390
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1391
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1392
                @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1393
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1394
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1395
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1396
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1397
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1398
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1399
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1400
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1401
                @Foo(1) @Foo(2)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1402
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1403
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1404
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1405
                @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1406
                class SubClass extends SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1407
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1408
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1409
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1410
                anno = Helper.ContentVars.REPEATABLEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1411
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1412
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1413
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1414
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1415
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1416
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1417
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1418
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1419
                    // Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1420
                    replaceVal = expectedVals;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1421
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1422
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1423
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1424
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1425
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1426
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1427
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1428
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1429
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1430
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1431
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1432
        },
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1433
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1434
        // fail with ordering issues
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1435
        SingleAnnoWithContainer(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1436
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1437
                + "getAnnotationVal = \"@Foo(value=0)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1438
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1439
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1440
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1441
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1442
                + "getDeclAnnoVal = \"@Foo(value=0)\","
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1443
                + "getAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\", \"@Foo(value=2)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1444
                + "getDeclAnnosArgs = {\"@Foo(value=0)\", \"@Foo(value=1)\",\"@Foo(value=2)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1445
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1446
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1447
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1448
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1449
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1450
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1451
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1452
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1453
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1454
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1455
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1456
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1457
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1458
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1459
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1460
                String testSrc = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1461
                String pkgInfoContents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1462
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1463
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1464
                JavaFileObject pkgFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1465
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1466
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1467
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1468
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1469
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1470
                StringBuilder commonStmts = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1471
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1472
                anno = Helper.ContentVars.BASEANNO.getVal() + " "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1473
                        + Helper.ContentVars.LEGACYCONTAINER.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1474
                commonStmts.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1475
                        .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1476
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1477
                        .append(Helper.ContentVars.REPEATABLE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1478
                        .append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1479
                        .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1480
                        .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1481
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1482
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1483
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1484
                        Sample package-info.java
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1485
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1486
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1487
                        @Foo(0) @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1488
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1489
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1490
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1491
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1492
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1493
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1494
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1495
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1496
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1497
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1498
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1499
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1500
                        package testpkg;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1501
                        class A {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1502
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1503
                        testSrc = srcType.getTemplate().replace("#CN", className);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1504
                        contents = testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1505
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1506
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1507
                        replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1508
                        pkgInfoContents = SrcType.PKGINFO.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1509
                                .replace("#REPLACE1", replaceVal)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1510
                                .replace("#REPLACE2", commonStmts);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1511
                        pkgFileObj = Helper.getFile(PKGINFONAME, pkgInfoContents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1512
                        files = Arrays.asList(pkgFileObj, srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1513
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1514
                    default:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1515
                        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1516
                        Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1517
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1518
                        @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1519
                        @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1520
                        @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1521
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1522
                        @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1523
                        @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1524
                        @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1525
                        Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1526
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1527
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1528
                        @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1529
                        @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1530
                        @Foo(0) @FooContainer(value = {@Foo(1), @Foo(2)})
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1531
                        class A { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1532
                         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1533
                        replaceVal = expectedVals + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1534
                        testSrc = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1535
                                .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1536
                                .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1537
                        contents = commonStmts + testSrc;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1538
                        srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1539
                        files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1540
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1541
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1542
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1543
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1544
        AnnoOnSuperAndSubClass_Inherited(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1545
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1546
                + "getAnnotationVal = \"@Foo(value=1)\", "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1547
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=1)\" }, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1548
                + // override every annotation on superClass
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1549
                "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=1)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1550
                + // ignores inherited annotations
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1551
                "getDeclAnnoVal = \"@Foo(value=1)\", " // ignores inherited
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1552
                + "getAnnosArgs = {\"@Foo(value=1)\"}, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1553
                + "getDeclAnnosArgs = { \"@Foo(value=1)\" })", // ignores inherited
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1554
        "@ExpectedContainer(value=FooContainer.class, "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1555
                + "getAnnotationVal = \"NULL\", "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1556
                + "getAnnotationsVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=1)\" }, "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1557
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=1)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1558
                + // ignores inherited annotations
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1559
                "getDeclAnnoVal = \"NULL\", " + // ignores inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1560
                "getAnnosArgs = {}, " + "getDeclAnnosArgs = {})") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1561
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1562
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1563
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1564
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1565
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1566
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1567
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1568
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1569
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1570
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1571
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1572
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1573
                StringBuilder commonStmts = getCommonStmts(true);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1574
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1575
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1576
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1577
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1578
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1579
                @Repeatable(FooContainer.class)
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1580
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1581
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1582
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1583
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1584
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1585
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1586
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1587
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1588
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1589
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1590
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1591
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1592
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1593
                @Foo(1)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1594
                class SubClass extends SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1595
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1596
                // @Inherited only works for classes, no switch cases for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1597
                // method, field, package
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1598
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1599
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1600
                    // Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1601
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1602
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1603
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1604
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1605
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1606
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1607
                    // Contents for SubClass that extends SuperClass
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1608
                    replaceVal = expectedVals + "\n" + "@Foo(1)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1609
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1610
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1611
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1612
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1613
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1614
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1615
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1616
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1617
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1618
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1619
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1620
        },
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1621
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1622
        // fail with ordering issues
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1623
        RepeatableOnSuperSingleOnSub_Inherited(
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1624
        "@ExpectedBase(value=Foo.class, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1625
                + "getAnnotationVal = \"@Foo(value=3)\", "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1626
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1627
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1628
                + //override every annotation on superClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1629
                "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1630
                + // ignores inherited annotations
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1631
                "getDeclAnnoVal = \"@Foo(value=3)\", " // ignores inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1632
                + "getAnnosArgs = {\"@Foo(value=3)\"}, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1633
                + "getDeclAnnosArgs = { \"@Foo(value=3)\" })", // ignores inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1634
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1635
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1636
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1637
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1638
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=3)\"}, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1639
                + // ignores inherited annotations
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1640
                "getDeclAnnoVal = \"NULL\", "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1641
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1642
                + "getDeclAnnosArgs = {}) // ignores inherited ") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1643
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1644
            @Override
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1645
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1646
                    String className) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1647
                String anno = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1648
                String replaceVal = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1649
                String contents = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1650
                JavaFileObject srcFileObj = null;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1651
                Iterable<? extends JavaFileObject> files = null;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1652
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1653
                String expectedVals = "\n" + getExpectedBase() + "\n"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1654
                        + getExpectedContainer() + "\n";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1655
                StringBuilder commonStmts = getCommonStmts(true);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1656
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1657
                /*
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1658
                 Sample testSrc:
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1659
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1660
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1661
                 @Repeatable(FooContainer.class)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1662
                 @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1663
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1664
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1665
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1666
                 @interface FooContainer {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1667
                 Foo[] value();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1668
                 }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1669
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1670
                 @Foo(1) @Foo(2)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1671
                 class SuperClass { }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1672
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1673
                 @ExpectedBase
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1674
                 @ExpectedContainer
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1675
                 @Foo(3)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1676
                 class SubClass extends SuperClass { }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1677
                 */
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1678
                //@Inherited only works for classes, no switch cases for method, field, package
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1679
                if (srcType == SrcType.CLASS) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1680
                    //Contents for SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1681
                    anno = Helper.ContentVars.REPEATABLEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1682
                    replaceVal = commonStmts + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1683
                    String superClassContents = srcType.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1684
                            .replace("#CN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1685
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1686
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1687
                    //Contents for SubClass that extends SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1688
                    anno = "@Foo(3)";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1689
                    replaceVal = expectedVals + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1690
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1691
                            .replace("#CN", className)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1692
                            .replace("#SN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1693
                            .replace("#REPLACE", replaceVal);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1694
                    contents = superClassContents + subClassContents;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1695
                    srcFileObj = Helper.getFile(className, contents);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1696
                    files = Arrays.asList(srcFileObj);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1697
                }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1698
                return files;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1699
            }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1700
        },
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1701
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1702
        // fail with ordering issues
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1703
        SingleOnSuperRepeatableOnSub_Inherited(
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1704
        "@ExpectedBase(value=Foo.class, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1705
                + "getAnnotationVal = \"@Foo(value=0)\", "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1706
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1707
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1708
                + //override every annotation on superClass
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1709
                "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1710
                + // ignores inherited annotations
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1711
                "getDeclAnnoVal = \"NULL\","// ignores inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1712
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"}, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1713
                + "getDeclAnnosArgs = { \"@Foo(value=1)\", \"@Foo(value=2)\"})",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1714
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1715
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1716
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1717
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1718
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1719
                + // ignores inherited annotations
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1720
                "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "// ignores inherited
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1721
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1722
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1723
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1724
            @Override
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1725
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1726
                    String className) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1727
                String anno = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1728
                String replaceVal = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1729
                String contents = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1730
                JavaFileObject srcFileObj = null;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1731
                Iterable<? extends JavaFileObject> files = null;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1732
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1733
                String expectedVals = "\n" + getExpectedBase() + "\n"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1734
                        + getExpectedContainer() + "\n";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1735
                StringBuilder commonStmts = getCommonStmts(true);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1736
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1737
                /*
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1738
                 Sample testSrc:
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1739
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1740
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1741
                 @Repeatable(FooContainer.class)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1742
                 @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1743
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1744
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1745
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1746
                 @interface FooContainer {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1747
                 Foo[] value();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1748
                 }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1749
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1750
                 @Foo(0)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1751
                 class SuperClass { }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1752
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1753
                 @ExpectedBase
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1754
                 @ExpectedContainer
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1755
                 @Foo(1) @Foo(2)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1756
                 class SubClass extends SuperClass { }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1757
                 */
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1758
                //@Inherited only works for classes, no switch cases for method, field, package
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1759
                if (srcType == SrcType.CLASS) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1760
                    //Contents for SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1761
                    anno = Helper.ContentVars.BASEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1762
                    replaceVal = commonStmts + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1763
                    String superClassContents = srcType.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1764
                            .replace("#CN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1765
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1766
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1767
                    //Contents for SubClass that extends SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1768
                    anno = Helper.ContentVars.REPEATABLEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1769
                    replaceVal = expectedVals + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1770
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1771
                            .replace("#CN", className)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1772
                            .replace("#SN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1773
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1774
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1775
                    contents = superClassContents + subClassContents;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1776
                    srcFileObj = Helper.getFile(className, contents);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1777
                    files = Arrays.asList(srcFileObj);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1778
                }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1779
                return files;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1780
            }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1781
        },
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1782
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1783
        // fail with ordering issues
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1784
        ContainerOnSuperSingleOnSub_Inherited(
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1785
        "@ExpectedBase(value=Foo.class, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1786
                + "getAnnotationVal = \"@Foo(value=0)\", "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1787
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1788
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1789
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1790
                + "getDeclAnnoVal = \"@Foo(value=0)\","
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1791
                + "getAnnosArgs = {\"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1792
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1793
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1794
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1795
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1796
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1797
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1798
                + "getDeclAnnoVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1799
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1800
                + "getDeclAnnosArgs = {})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1801
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1802
            @Override
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1803
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1804
                    String className) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1805
                String anno = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1806
                String replaceVal = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1807
                String contents = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1808
                JavaFileObject srcFileObj = null;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1809
                Iterable<? extends JavaFileObject> files = null;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1810
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1811
                String expectedVals = "\n" + getExpectedBase() + "\n"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1812
                        + getExpectedContainer() + "\n";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1813
                StringBuilder commonStmts = getCommonStmts(true);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1814
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1815
                /*
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1816
                 Sample testSrc:
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1817
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1818
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1819
                 @Repeatable(FooContainer.class)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1820
                 @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1821
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1822
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1823
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1824
                 @interface FooContainer {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1825
                 Foo[] value();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1826
                 }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1827
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1828
                 @FooContainer(value = {@Foo(1), @Foo(2)})
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1829
                 class SuperClass { }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1830
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1831
                 @ExpectedBase
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1832
                 @ExpectedContainer
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1833
                 @Foo(0)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1834
                 class SubClass extends SuperClass { }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1835
                 */
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1836
                //@Inherited only works for classes, no switch cases for method, field, package
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1837
                if (srcType == SrcType.CLASS) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1838
                    //Contents for SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1839
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1840
                    replaceVal = commonStmts + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1841
                    String superClassContents = srcType.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1842
                            .replace("#CN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1843
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1844
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1845
                    //Contents for SubClass that extends SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1846
                    anno = Helper.ContentVars.BASEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1847
                    replaceVal = expectedVals + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1848
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1849
                            .replace("#CN", className)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1850
                            .replace("#SN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1851
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1852
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1853
                    contents = superClassContents + subClassContents;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1854
                    srcFileObj = Helper.getFile(className, contents);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1855
                    files = Arrays.asList(srcFileObj);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1856
                }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1857
                return files;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1858
            }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1859
        },
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1860
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1861
        // fail with ordering issues
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1862
        SingleOnSuperContainerOnSub_Inherited(
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1863
        "@ExpectedBase(value=Foo.class, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1864
                + "getAnnotationVal = \"@Foo(value=0)\", "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1865
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1866
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1867
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1868
                + "getDeclAnnoVal = \"NULL\","
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1869
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1870
                + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\"})",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1871
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1872
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1873
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1874
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1875
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1876
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1877
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1878
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1879
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1880
            @Override
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1881
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1882
                     String className) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1883
                String anno = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1884
                String replaceVal = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1885
                String contents = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1886
                JavaFileObject srcFileObj = null;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1887
                Iterable<? extends JavaFileObject> files = null;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1888
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1889
                String expectedVals = "\n" + getExpectedBase() + "\n"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1890
                        + getExpectedContainer() + "\n";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1891
                StringBuilder commonStmts = getCommonStmts(true);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1892
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1893
                /*
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1894
                 Sample testSrc:
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1895
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1896
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1897
                 @Repeatable(FooContainer.class)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1898
                 @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1899
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1900
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1901
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1902
                 @interface FooContainer {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1903
                 Foo[] value();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1904
                 }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1905
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1906
                 @Foo(0)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1907
                 class SuperClass { }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1908
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1909
                 @ExpectedBase
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1910
                 @ExpectedContainer
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1911
                 @FooContainer(value = {@Foo(1), @Foo(2)})
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1912
                 class SubClass extends SuperClass { }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1913
                 */
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1914
                //@Inherited only works for classes, no switch cases for method, field, package
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1915
                if (srcType == SrcType.CLASS) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1916
                    //Contents for SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1917
                    anno = Helper.ContentVars.BASEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1918
                    replaceVal = commonStmts + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1919
                    String superClassContents = srcType.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1920
                            .replace("#CN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1921
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1922
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1923
                    //Contents for SubClass that extends SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1924
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1925
                    replaceVal = expectedVals + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1926
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1927
                            .replace("#CN", className)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1928
                            .replace("#SN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1929
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1930
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1931
                    contents = superClassContents + subClassContents;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1932
                    srcFileObj = Helper.getFile(className, contents);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1933
                    files = Arrays.asList(srcFileObj);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1934
                }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1935
                return files;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1936
            }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  1937
        },
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1938
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1939
        // fail with ordering issues
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1940
        SingleOnSuperContainerAndSingleOnSub_Inherited(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1941
        "@ExpectedBase(value=Foo.class, "
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1942
                + "getAnnotationVal = \"@Foo(value=3)\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1943
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1944
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1945
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1946
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1947
                + "getDeclAnnoVal = \"@Foo(value=3)\","
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1948
                + "getAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"},"
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1949
                + "getDeclAnnosArgs = {\"@Foo(value=1)\", \"@Foo(value=2)\", \"@Foo(value=3)\"})",
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1950
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1951
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1952
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1953
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"}, "
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1954
                + "getDeclAnnosVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1955
                +       "\"ExpectedBase\", \"ExpectedContainer\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", \"@Foo(value=3)\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1956
                + "getDeclAnnoVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\","
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1957
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  1958
                + "getDeclAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1959
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1960
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1961
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1962
                    String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1963
                String anno = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1964
                String replaceVal = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1965
                String contents = "";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1966
                JavaFileObject srcFileObj = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1967
                Iterable<? extends JavaFileObject> files = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1968
                String expectedVals = "\n" + getExpectedBase() + "\n"
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1969
                        + getExpectedContainer() + "\n";
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1970
                StringBuilder commonStmts = getCommonStmts(true);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1971
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1972
                /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1973
                Sample testSrc:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1974
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1975
                @Inherited
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1976
                @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1977
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1978
                @Retention(RetentionPolicy.RUNTIME)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1979
                @Inherited
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1980
                @Repeatable(FooContainer.class)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1981
                @interface FooContainer {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1982
                Foo[] value();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1983
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1984
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1985
                @Foo(0)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1986
                class SuperClass { }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1987
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1988
                @ExpectedBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1989
                @ExpectedContainer
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  1990
                @FooContainer(value = {@Foo(1), @Foo(2)}) @Foo(3)
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1991
                class SubClass extends SuperClass {}
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1992
                 */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1993
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1994
                if (srcType == SrcType.CLASS) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1995
                    //Contents for SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1996
                    anno = Helper.ContentVars.BASEANNO.getVal();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1997
                    replaceVal = commonStmts + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1998
                    String superClassContents = srcType.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  1999
                            .replace("#CN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2000
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2001
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2002
                    //Contents for SubClass that extends SuperClass
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2003
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal()
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2004
                            + "@Foo(3)";
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2005
                    replaceVal = expectedVals + "\n" + anno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2006
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2007
                            .replace("#CN", className)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2008
                            .replace("#SN", SUPERCLASS)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2009
                            .replace("#REPLACE", replaceVal);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2010
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2011
                    contents = superClassContents + subClassContents;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2012
                    srcFileObj = Helper.getFile(className, contents);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2013
                    files = Arrays.asList(srcFileObj);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2014
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2015
                return files;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2016
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2017
        },
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2018
        // @ignore 8025924: Several test cases in repeatingAnnotations/combo/ReflectionTest
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2019
        // fail with ordering issues
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2020
        ContainerAndSingleOnSuperSingleOnSub_Inherited(
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2021
        "@ExpectedBase(value=Foo.class, "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2022
                + "getAnnotationVal = \"@Foo(value=0)\", "
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2023
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  2024
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2025
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2026
                + "getDeclAnnoVal = \"@Foo(value=0)\","
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2027
                + "getAnnosArgs = {\"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2028
                + "getDeclAnnosArgs = {\"@Foo(value=0)\"})",
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2029
        "@ExpectedContainer(value=FooContainer.class, "
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  2030
                + "getAnnotationVal = \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\", "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2031
                + "getAnnotationsVals = {"
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  2032
                + "\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\", \"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"}, "
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2033
                + "getDeclAnnosVals = {\"ExpectedBase\", \"ExpectedContainer\", \"@Foo(value=0)\"},"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2034
                + "getDeclAnnoVal = \"NULL\","
40231
ba38ad2dd137 8163113: langtools repeating annotations tests depend rely on annotations toString output
darcy
parents: 30730
diff changeset
  2035
                + "getAnnosArgs = {\"@FooContainer(value={@Foo(value=1), @Foo(value=2)})\"},"
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2036
                + "getDeclAnnosArgs = {})") {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2037
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2038
            @Override
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2039
            public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2040
                    String className) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2041
                String anno = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2042
                String replaceVal = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2043
                String contents = "";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2044
                JavaFileObject srcFileObj = null;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2045
                Iterable<? extends JavaFileObject> files = null;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2046
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2047
                String expectedVals = "\n" + getExpectedBase() + "\n"
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2048
                        + getExpectedContainer() + "\n";
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2049
                StringBuilder commonStmts = getCommonStmts(true);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2050
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2051
                /*
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2052
                 Sample testSrc:
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2053
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2054
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2055
                 @Repeatable(FooContainer.class)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2056
                 @interface Foo {int value() default Integer.MAX_VALUE;}
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2057
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2058
                 @Retention(RetentionPolicy.RUNTIME)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2059
                 @Inherited
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2060
                 @interface FooContainer {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2061
                 Foo[] value();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2062
                 }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2063
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2064
                 @FooContainer(value = {@Foo(1), @Foo(2)})
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2065
                 @Foo(3)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2066
                 class SuperClass { }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2067
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2068
                 @ExpectedBase
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2069
                 @ExpectedContainer
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2070
                 @Foo(0)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2071
                 class SubClass extends SuperClass { }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2072
                 */
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2073
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2074
                //@Inherited only works for classes, no switch cases for method, field, package
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2075
                if (srcType == SrcType.CLASS) {
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2076
                    //Contents for SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2077
                    anno = Helper.ContentVars.LEGACYCONTAINER.getVal()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2078
                            + "@Foo(3)" ;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2079
                    replaceVal = commonStmts + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2080
                    String superClassContents = srcType.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2081
                            .replace("#CN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2082
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2083
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2084
                    //Contents for SubClass that extends SuperClass
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2085
                    anno = Helper.ContentVars.BASEANNO.getVal();
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2086
                    replaceVal = expectedVals + "\n" + anno;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2087
                    String subClassContents = SrcType.CLASSEXTENDS.getTemplate()
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2088
                            .replace("#CN", className)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2089
                            .replace("#SN", SUPERCLASS)
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2090
                            .replace("#REPLACE", replaceVal);
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2091
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2092
                    contents = superClassContents + subClassContents;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2093
                    srcFileObj = Helper.getFile(className, contents);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2094
                    files = Arrays.asList(srcFileObj);
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2095
                }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2096
                return files;
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2097
            }
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2098
        };
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2099
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2100
         private String expectedBase, expectedContainer;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2101
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2102
         private TestCase(String expectedBase, String expectedContainer) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2103
             this.expectedBase = expectedBase;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2104
             this.expectedContainer = expectedContainer;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2105
         }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2106
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2107
         public String getExpectedBase() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2108
             return expectedBase;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2109
         }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2110
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2111
         public String getExpectedContainer() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2112
             return expectedContainer;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2113
         }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2114
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2115
         // Each enum element should override this method
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2116
         public Iterable<? extends JavaFileObject> getTestFiles(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2117
                 String className) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2118
             return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2119
         }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2120
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2121
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2122
    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2123
     * Each srctype has its template defined used for test src generation
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2124
     * Primary src types: class, method, field, package define
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2125
     *                    getExpectedBase() and getExpectedContainer()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2126
     */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2127
    enum SrcType {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2128
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2129
        CLASS("\n#REPLACE\nclass #CN { } ") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2130
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2131
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2132
            public ExpectedBase getExpectedBase(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2133
                return c.getAnnotation(ExpectedBase.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2134
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2135
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2136
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2137
            public ExpectedContainer getExpectedContainer(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2138
                return c.getAnnotation(ExpectedContainer.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2139
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2140
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2141
        METHOD("class #CN  {\n" + "   " + "#REPLACE\n" + "   void "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2142
        + TESTMETHOD + "() {} \n" + "}\n") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2143
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2144
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2145
            public ExpectedBase getExpectedBase(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2146
                ExpectedBase ret = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2147
                try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2148
                    ret = c.getDeclaredMethod(TESTMETHOD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2149
                            ExpectedBase.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2150
                } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2151
                    error("Could not get " + TESTMETHOD + " for className "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2152
                            + c.getName() + " Exception:\n" + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2153
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2154
                return ret;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2155
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2156
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2157
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2158
            public ExpectedContainer getExpectedContainer(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2159
                ExpectedContainer ret = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2160
                try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2161
                    ret = c.getDeclaredMethod(TESTMETHOD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2162
                            ExpectedContainer.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2163
                } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2164
                    error("Could not get " + TESTMETHOD + " for className "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2165
                            + c.getName() + " Exception:\n" + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2166
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2167
                return ret;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2168
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2169
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2170
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2171
        FIELD("class #CN  {\n" + "   " + "#REPLACE\n" + "   int " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2172
        + " = 0; \n" + "}\n") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2173
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2174
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2175
            public ExpectedBase getExpectedBase(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2176
                ExpectedBase ret = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2177
                try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2178
                    ret = c.getDeclaredField(TESTFIELD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2179
                            ExpectedBase.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2180
                } catch (NoSuchFieldException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2181
                    error("Could not get " + TESTFIELD + " for className "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2182
                            + c.getName() + " Exception:\n" + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2183
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2184
                return ret;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2185
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2186
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2187
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2188
            public ExpectedContainer getExpectedContainer(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2189
                ExpectedContainer ret = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2190
                try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2191
                    ret = c.getDeclaredField(TESTFIELD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2192
                            ExpectedContainer.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2193
                } catch (NoSuchFieldException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2194
                    error("Could not get " + TESTFIELD + " for className "
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2195
                            + c.getName() + " Exception:\n" + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2196
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2197
                return ret;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2198
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2199
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2200
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2201
        PACKAGE("package " + TESTPKG + "; \n" + "class #CN {}") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2202
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2203
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2204
            public ExpectedBase getExpectedBase(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2205
                return c.getPackage().getAnnotation(ExpectedBase.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2206
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2207
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2208
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2209
            public ExpectedContainer getExpectedContainer(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2210
                return c.getPackage().getAnnotation(ExpectedContainer.class);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2211
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2212
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2213
        PKGINFO("#REPLACE1\npackage " + TESTPKG + "; \n" + "#REPLACE2"),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2214
        INTERFACE("#REPLACE\ninterface #IN { } "),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2215
        INTERFACEIMPL("#REPLACE\nclass #CN implements #IN {}"),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2216
        CLASSEXTENDS("#REPLACE\nclass #CN extends #SN {}");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2217
        String template;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2218
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2219
        private SrcType(String template) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2220
            this.template = template;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2221
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2222
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2223
        public String getTemplate() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2224
            return template;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2225
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2226
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2227
        // Elements should override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2228
        public ExpectedBase getExpectedBase(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2229
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2230
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2231
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2232
        public ExpectedContainer getExpectedContainer(Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2233
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2234
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2235
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2236
        /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2237
         * Returns only primary src types ;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2238
         */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2239
        public static SrcType[] getSrcTypes() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2240
            return new SrcType[]{CLASS, PACKAGE, METHOD, FIELD};
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2241
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2242
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2243
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2244
    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2245
     * Each enum constant is one of the 6 methods from AnnotatedElement interface
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2246
     * that needs to be tested.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2247
     * Each enum constant overrides these 4 methods:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2248
     * - getActualAnnoBase(SrcType srcType, Class<?> c)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2249
     * - getActualAnnoContainer(SrcType srcType, Class<?> c)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2250
     * - getExpectedAnnoBase(SrcType srcType, Class<?> c)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2251
     * - getExpectedAnnoContainer(SrcType srcType, Class<?> c)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2252
     */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2253
    enum TestMethod {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2254
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2255
        GET_ANNO("getAnnotation") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2256
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2257
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2258
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2259
                Annotation[] actualAnno = new Annotation[1];
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2260
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2261
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2262
                        actualAnno[0] = c.getAnnotation(srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2263
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2264
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2265
                        actualAnno[0] = c.getPackage().getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2266
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2267
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2268
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2269
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2270
                            actualAnno[0] = c.getDeclaredMethod(TESTMETHOD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2271
                                    srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2272
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2273
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2274
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2275
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2276
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2277
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2278
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2279
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2280
                            actualAnno[0] = c.getDeclaredField(TESTFIELD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2281
                                    srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2282
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2283
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2284
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2285
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2286
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2287
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2288
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2289
                return actualAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2290
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2291
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2292
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2293
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2294
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2295
                Annotation[] actualAnno = new Annotation[1];
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2296
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2297
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2298
                        actualAnno[0] = c.getAnnotation(srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2299
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2300
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2301
                        actualAnno[0] = c.getPackage().getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2302
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2303
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2304
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2305
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2306
                            actualAnno[0] = c.getDeclaredMethod(TESTMETHOD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2307
                                    srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2308
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2309
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2310
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2311
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2312
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2313
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2314
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2315
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2316
                            actualAnno[0] = c.getDeclaredField(TESTFIELD).getAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2317
                                    srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2318
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2319
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2320
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2321
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2322
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2323
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2324
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2325
                return actualAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2326
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2327
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2328
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2329
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2330
                String[] expAnno = {srcType.getExpectedBase(c).getAnnotationVal()};
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2331
                return expAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2332
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2333
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2334
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2335
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2336
                String[] expAnno = {srcType.getExpectedContainer(c).getAnnotationVal()};
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2337
                return expAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2338
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2339
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2340
        GET_ANNOS("getAnnotations") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2341
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2342
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2343
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2344
                Annotation[] actualAnnos = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2345
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2346
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2347
                        actualAnnos = c.getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2348
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2349
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2350
                        actualAnnos = c.getPackage().getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2351
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2352
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2353
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2354
                            actualAnnos = c.getDeclaredMethod(TESTMETHOD).getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2355
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2356
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2357
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2358
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2359
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2360
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2361
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2362
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2363
                            actualAnnos = c.getDeclaredField(TESTFIELD).getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2364
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2365
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2366
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2367
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2368
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2369
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2370
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2371
                return actualAnnos;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2372
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2373
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2374
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2375
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2376
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2377
                Annotation[] actualAnnos = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2378
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2379
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2380
                        actualAnnos = c.getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2381
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2382
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2383
                        actualAnnos = c.getPackage().getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2384
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2385
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2386
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2387
                            actualAnnos = c.getDeclaredMethod(TESTMETHOD).getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2388
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2389
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2390
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2391
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2392
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2393
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2394
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2395
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2396
                            actualAnnos = c.getDeclaredField(TESTFIELD).getAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2397
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2398
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2399
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2400
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2401
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2402
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2403
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2404
                return actualAnnos;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2405
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2406
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2407
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2408
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2409
                return srcType.getExpectedBase(c).getAnnotationsVals();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2410
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2411
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2412
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2413
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2414
                return srcType.getExpectedContainer(c).getAnnotationsVals();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2415
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2416
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2417
        GET_DECL_ANNOS("getDeclaredAnnotations") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2418
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2419
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2420
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2421
                Annotation[] actualDeclAnnos = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2422
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2423
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2424
                        actualDeclAnnos = c.getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2425
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2426
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2427
                        actualDeclAnnos = c.getPackage().getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2428
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2429
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2430
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2431
                            actualDeclAnnos = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2432
                                    .getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2433
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2434
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2435
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2436
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2437
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2438
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2439
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2440
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2441
                            actualDeclAnnos = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2442
                                    .getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2443
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2444
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2445
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2446
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2447
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2448
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2449
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2450
                return actualDeclAnnos;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2451
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2452
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2453
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2454
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2455
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2456
                Annotation[] actualDeclAnnos = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2457
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2458
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2459
                        actualDeclAnnos = c.getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2460
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2461
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2462
                        actualDeclAnnos = c.getPackage().getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2463
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2464
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2465
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2466
                            actualDeclAnnos = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2467
                                    .getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2468
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2469
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2470
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2471
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2472
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2473
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2474
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2475
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2476
                            actualDeclAnnos = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2477
                                    .getDeclaredAnnotations();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2478
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2479
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2480
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2481
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2482
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2483
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2484
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2485
                return actualDeclAnnos;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2486
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2487
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2488
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2489
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2490
                return srcType.getExpectedBase(c).getDeclAnnosVals();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2491
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2492
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2493
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2494
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2495
                return srcType.getExpectedContainer(c).getDeclAnnosVals();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2496
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2497
        },
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2498
        GET_DECL_ANNO("getDeclaredAnnotation") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2499
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2500
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2501
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2502
                Annotation[] actualDeclAnno = new Annotation[1];
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2503
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2504
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2505
                        actualDeclAnno[0] = c.getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2506
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2507
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2508
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2509
                        actualDeclAnno[0] = c.getPackage().getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2510
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2511
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2512
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2513
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2514
                            actualDeclAnno[0] = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2515
                                    .getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2516
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2517
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2518
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2519
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2520
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2521
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2522
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2523
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2524
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2525
                            actualDeclAnno[0] = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2526
                                    .getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2527
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2528
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2529
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2530
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2531
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2532
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2533
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2534
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2535
                return actualDeclAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2536
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2537
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2538
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2539
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2540
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2541
                Annotation[] actualDeclAnno = new Annotation[1];
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2542
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2543
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2544
                        actualDeclAnno[0] = c.getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2545
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2546
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2547
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2548
                        actualDeclAnno[0] = c.getPackage().getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2549
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2550
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2551
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2552
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2553
                            actualDeclAnno[0] = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2554
                                    .getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2555
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2556
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2557
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2558
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2559
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2560
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2561
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2562
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2563
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2564
                            actualDeclAnno[0] = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2565
                                    .getDeclaredAnnotation(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2566
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2567
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2568
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2569
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2570
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2571
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2572
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2573
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2574
                return actualDeclAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2575
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2576
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2577
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2578
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2579
                String[] expAnno = {srcType.getExpectedBase(c).getDeclAnnoVal()};
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2580
                return expAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2581
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2582
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2583
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2584
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2585
                String[] expAnno = {srcType.getExpectedContainer(c).getDeclAnnoVal()};
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2586
                return expAnno;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2587
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2588
        }, // new
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2589
        GET_ANNOS_ARG("getAnnotationsArg") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2590
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2591
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2592
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2593
                Annotation[] actualAnnoArgs = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2594
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2595
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2596
                        actualAnnoArgs = c.getAnnotationsByType(srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2597
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2598
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2599
                        actualAnnoArgs = c.getPackage().getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2600
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2601
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2602
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2603
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2604
                            actualAnnoArgs = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2605
                                    .getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2606
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2607
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2608
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2609
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2610
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2611
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2612
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2613
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2614
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2615
                            actualAnnoArgs = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2616
                                    .getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2617
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2618
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2619
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2620
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2621
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2622
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2623
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2624
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2625
                return actualAnnoArgs;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2626
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2627
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2628
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2629
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2630
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2631
                Annotation[] actualAnnoArgs = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2632
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2633
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2634
                        actualAnnoArgs = c.getAnnotationsByType(srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2635
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2636
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2637
                        actualAnnoArgs = c.getPackage().getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2638
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2639
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2640
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2641
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2642
                            actualAnnoArgs = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2643
                                    .getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2644
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2645
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2646
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2647
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2648
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2649
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2650
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2651
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2652
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2653
                            actualAnnoArgs = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2654
                                    .getAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2655
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2656
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2657
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2658
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2659
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2660
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2661
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2662
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2663
                return actualAnnoArgs;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2664
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2665
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2666
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2667
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2668
                return srcType.getExpectedBase(c).getAnnosArgs();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2669
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2670
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2671
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2672
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2673
                return srcType.getExpectedContainer(c).getAnnosArgs();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2674
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2675
        }, // new
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2676
        GET_DECL_ANNOS_ARG("getDeclAnnosArg") {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2677
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2678
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2679
            public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2680
                Annotation[] actualDeclAnnosArgs = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2681
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2682
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2683
                        actualDeclAnnosArgs = c.getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2684
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2685
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2686
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2687
                        actualDeclAnnosArgs = c.getPackage().getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2688
                                srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2689
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2690
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2691
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2692
                            actualDeclAnnosArgs = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2693
                                    .getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2694
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2695
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2696
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2697
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2698
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2699
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2700
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2701
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2702
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2703
                            actualDeclAnnosArgs = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2704
                                    .getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2705
                                        srcType.getExpectedBase(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2706
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2707
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2708
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2709
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2710
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2711
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2712
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2713
                return actualDeclAnnosArgs;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2714
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2715
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2716
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2717
            public Annotation[] getActualAnnoContainer(SrcType srcType,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2718
                    Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2719
                Annotation[] actualDeclAnnosArgs = null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2720
                switch (srcType) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2721
                    case CLASS:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2722
                        actualDeclAnnosArgs = c.getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2723
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2724
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2725
                    case PACKAGE:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2726
                        actualDeclAnnosArgs = c.getPackage().getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2727
                                srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2728
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2729
                    case METHOD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2730
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2731
                            actualDeclAnnosArgs = c.getDeclaredMethod(TESTMETHOD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2732
                                    .getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2733
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2734
                        } catch (NoSuchMethodException nme) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2735
                            error("Could not get " + TESTMETHOD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2736
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2737
                                    + "Exception = " + nme);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2738
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2739
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2740
                    case FIELD:
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2741
                        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2742
                            actualDeclAnnosArgs = c.getDeclaredField(TESTFIELD)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2743
                                   .getDeclaredAnnotationsByType(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2744
                                        srcType.getExpectedContainer(c).value());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2745
                        } catch (NoSuchFieldException nfe) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2746
                            error("Could not get " + TESTFIELD
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2747
                                    + " for className = " + c.getName()
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2748
                                    + "Exception = " + nfe);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2749
                        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2750
                        break;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2751
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2752
                return actualDeclAnnosArgs;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2753
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2754
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2755
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2756
            public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2757
                return srcType.getExpectedBase(c).getDeclAnnosArgs();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2758
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2759
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2760
            @Override
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2761
            public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2762
                return srcType.getExpectedContainer(c).getDeclAnnosArgs();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2763
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2764
        }; // new
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2765
        String name;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2766
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2767
        private TestMethod(String name) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2768
            this.name = name;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2769
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2770
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2771
        public Annotation[] getActualAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2772
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2773
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2774
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2775
        public Annotation[] getActualAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2776
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2777
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2778
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2779
        public String[] getExpectedAnnoBase(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2780
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2781
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2782
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2783
        public String[] getExpectedAnnoContainer(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2784
            return null;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2785
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2786
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2787
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2788
    /*
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2789
     * For a given srcType and class object, compare expectedBase and actualBase
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2790
     * annotations as well as expectedContainer and actualContainer annotations.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2791
     *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2792
     * Return true if both comparisons are true else return false.
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2793
     *
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2794
     */
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2795
    protected static void checkAnnoValues(SrcType srcType, Class<?> c) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2796
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2797
        // Load @ExpectedBase and @ExpectedContainer
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2798
        ExpectedBase eb = srcType.getExpectedBase(c);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2799
        ExpectedContainer ec = srcType.getExpectedContainer(c);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2800
        if (eb == null) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2801
            error("Did not find ExpectedBase Annotation, Test will exit");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2802
            throw new RuntimeException();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2803
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2804
        if (ec == null) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2805
            error("Did not find ExpectedContainer Annotation, Test will exit");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2806
            throw new RuntimeException();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2807
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2808
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2809
        for (TestMethod testMethod : TestMethod.values()) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2810
            debugPrint("---------------------------------------------");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2811
            debugPrint("Test method = " + testMethod);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2812
            boolean isBasePass = true;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2813
            boolean isConPass = true;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2814
            // ExpectedBase = Annotation, no annotation is defined, skip comparison
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2815
            if (!eb.value().getSimpleName().equalsIgnoreCase("Annotation")) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2816
                isBasePass = compareAnnotations(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2817
                        testMethod.getActualAnnoBase(srcType, c),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2818
                        testMethod.getExpectedAnnoBase(srcType, c));
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2819
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2820
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2821
            // ExpectedContainer = Annotation, no annotation is defined, skip comparison
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2822
            if (!ec.value().getSimpleName().equalsIgnoreCase("Annotation")) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2823
                isConPass = compareAnnotations(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2824
                        testMethod.getActualAnnoContainer(srcType, c),
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2825
                        testMethod.getExpectedAnnoContainer(srcType, c));
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2826
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2827
            if (isBasePass && isConPass) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2828
                debugPrint("Testcase passed for " + testMethod +
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2829
                        " for className = " + c.getName());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2830
            } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2831
                debugPrint("Testcase failed for " + testMethod +
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2832
                        " for className = " + c.getName());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2833
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2834
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2835
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2836
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2837
    // Annotation comparison: Length should be same and all expected values
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2838
    // should be present in actualAnno[].
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2839
    private static boolean compareAnnotations(Annotation[] actualAnnos,
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2840
            String[] expectedAnnos) {
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2841
        boolean compOrder = false;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2842
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2843
        // Length is different
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2844
        if (actualAnnos.length != expectedAnnos.length) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2845
            error("Length not same, Actual length = " + actualAnnos.length
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2846
                    + " Expected length = " + expectedAnnos.length);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2847
            printArrContents(actualAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2848
            printArrContents(expectedAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2849
            return false;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2850
        } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2851
            int i = 0;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2852
            // Length is same and 0
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2853
            if (actualAnnos.length == 0) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2854
                // Expected/actual lengths already checked for
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2855
                // equality; no more checks do to
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2856
                return true;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2857
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2858
            // Expected annotation should be NULL
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2859
            if (actualAnnos[0] == null) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2860
                if (expectedAnnos[0].equals("NULL")) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2861
                    debugPrint("Arr values are NULL as expected");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2862
                    return true;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2863
                } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2864
                    error("Array values are not NULL");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2865
                    printArrContents(actualAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2866
                    printArrContents(expectedAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2867
                    return false;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2868
                }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2869
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2870
            // Lengths are same, compare array contents
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2871
            String[] actualArr = new String[actualAnnos.length];
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2872
            for (Annotation a : actualAnnos) {
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2873
                if (a.annotationType().getSimpleName().contains("Expected"))
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2874
                actualArr[i++] = a.annotationType().getSimpleName();
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2875
                 else if (a.annotationType().getName().contains(TESTPKG)) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2876
                    String replaced = a.toString().replaceAll(Pattern.quote("testpkg."),"");
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2877
                    actualArr[i++] = replaced;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2878
                } else
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2879
                    actualArr[i++] = a.toString();
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2880
            }
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2881
            List<String> actualList = new ArrayList<String>(Arrays.asList(actualArr));
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2882
            List<String> expectedList = new ArrayList<String>(Arrays.asList(expectedAnnos));
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2883
            if (!actualList.containsAll(expectedList)) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2884
                error("Array values are not same");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2885
                printArrContents(actualAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2886
                printArrContents(expectedAnnos);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2887
                return false;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2888
            } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2889
                debugPrint("Arr values are same as expected");
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2890
                if (CHECKORDERING) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2891
                    debugPrint("Checking if annotation ordering is as expected..");
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2892
                    compOrder = compareOrdering(actualList, expectedList);
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2893
                    if (compOrder)
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2894
                        debugPrint("Arr values ordering is as expected");
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2895
                    else
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2896
                        error("Arr values ordering is not as expected! actual values: "
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2897
                            + actualList + " expected values: " + expectedList);
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2898
                } else
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2899
                    compOrder = true;
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2900
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2901
        }
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2902
        return compOrder;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2903
    }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2904
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2905
    // Annotation ordering comparison
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2906
    private static boolean compareOrdering(List<String> actualList, List<String> expectedList) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2907
        boolean order = true;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2908
        // Discarding Expected* annotations before comparison of ordering
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2909
        actualList = iterateList(actualList);
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2910
        expectedList = iterateList(expectedList);
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2911
        // Length is different
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2912
        if (actualList.size() != expectedList.size()) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2913
            error("Length not same, Actual list length = " + actualList.size()
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2914
                    + " Expected list length = " + expectedList.size());
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2915
            return false;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2916
        } else {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2917
            if (actualList.isEmpty() && expectedList.isEmpty()) {
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2918
        return true;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2919
    }
21045
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2920
            boolean tmp = true;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2921
            for (int i = 0; i < actualList.size(); i++) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2922
                // Checking ordering
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2923
                if (order) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2924
                    if (!actualList.get(i).equals(expectedList.get(i))) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2925
                        tmp = false;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2926
                        debugPrint("Odering is false");
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2927
                        debugPrint("actualList values: " + actualList
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2928
                                + " expectedList values: " + expectedList);
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2929
                    }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2930
                }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2931
            }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2932
            order = tmp;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2933
        }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2934
        return order;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2935
    }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2936
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2937
    private static List<String> iterateList(List<String> list) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2938
        Iterator<String> iter = list.iterator();
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2939
        while (iter.hasNext()) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2940
            String anno = iter.next();
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2941
            if (anno.contains("Expected")) {
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2942
                iter.remove();
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2943
            }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2944
        }
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2945
        return list;
a7a1562c97be 8008192: Better ordering checks needed in repeatingAnnotations/combo/ReflectionTest
mnunez
parents: 16289
diff changeset
  2946
    }
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2947
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2948
    private static void printArrContents(Annotation[] actualAnnos) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2949
        System.out.print("Actual Arr Values: ");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2950
        for (Annotation a : actualAnnos) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2951
            if (a != null && a.annotationType() != null) {
22684
024ba5e57e0b 8027477: Enable repeating annotations test cases since JDK-8004912 is fixed
sogoel
parents: 21045
diff changeset
  2952
                System.out.print("[" + a.toString() + "]");
16289
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2953
            } else {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2954
                System.out.println("[null]");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2955
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2956
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2957
        System.out.println();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2958
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2959
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2960
    private static void printArrContents(String[] expectedAnnos) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2961
        System.out.print("Expected Arr Values: ");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2962
        for (String s : expectedAnnos) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2963
            System.out.print("[" + s + "]");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2964
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2965
        System.out.println();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2966
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2967
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2968
    private ClassLoader getLoader() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2969
        return getClass().getClassLoader();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2970
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2971
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2972
    private static Class<?> loadClass(String className, ClassLoader parentClassLoader, File... destDirs) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2973
        try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2974
            List<URL> list = new ArrayList<>();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2975
            for (File f : destDirs) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2976
                list.add(new URL("file:" + f.toString().replace("\\", "/") + "/"));
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2977
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2978
            return Class.forName(className, true, new URLClassLoader(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2979
                    list.toArray(new URL[list.size()]), parentClassLoader));
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2980
        } catch (ClassNotFoundException | MalformedURLException e) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2981
            throw new RuntimeException("Error loading class " + className, e);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2982
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2983
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2984
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2985
    private static void printTestSrc(Iterable<? extends JavaFileObject> files) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2986
        for (JavaFileObject f : files) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2987
            System.out.println("Test file " + f.getName() + ":");
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2988
            try {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2989
                System.out.println("" + f.getCharContent(true));
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2990
            } catch (IOException e) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2991
                throw new RuntimeException(
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2992
                        "Exception when printing test src contents for class " +
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2993
                                f.getName(), e);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2994
            }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2995
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2996
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2997
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2998
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  2999
    public static StringBuilder getCommonStmts(boolean isRepeatable) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3000
        StringBuilder sb = new StringBuilder();
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3001
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3002
        sb.append(Helper.ContentVars.IMPORTEXPECTED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3003
          .append(Helper.ContentVars.IMPORTSTMTS.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3004
          .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3005
          .append(Helper.ContentVars.INHERITED.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3006
        if(isRepeatable) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3007
            sb.append(Helper.ContentVars.REPEATABLE.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3008
        }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3009
        sb.append(Helper.ContentVars.BASE.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3010
          .append(Helper.ContentVars.RETENTIONRUNTIME.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3011
          .append(Helper.ContentVars.INHERITED.getVal())
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3012
          .append(Helper.ContentVars.CONTAINER.getVal());
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3013
        return sb;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3014
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3015
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3016
    private static int getNumErrors() {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3017
        return errors;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3018
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3019
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3020
    private static void error(String msg) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3021
        System.out.println("error: " + msg);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3022
        errors++;
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3023
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3024
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3025
    private static void debugPrint(String string) {
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3026
        if(DEBUG)
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3027
            System.out.println(string);
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3028
    }
8bf9d5ba7dc6 8001457: New tests needed for library-side changes for repeating annotations
darcy
parents:
diff changeset
  3029
}