1/*
2 * Copyright (c) 2012, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24/*
25 * @test
26 * @bug      8005092 6469562
27 * @summary  Test repeated annotations output.
28 * @author   bpatel
29 * @library  ../lib
30 * @modules jdk.javadoc/jdk.javadoc.internal.tool
31 * @build    JavadocTester
32 * @run main TestRepeatedAnnotations
33 */
34
35public class TestRepeatedAnnotations extends JavadocTester {
36
37    public static void main(String... args) throws Exception {
38        TestRepeatedAnnotations tester = new TestRepeatedAnnotations();
39        tester.runTests();
40    }
41
42    @Test
43    void test() {
44        javadoc("-d", "out",
45                "-sourcepath", testSrc,
46                "pkg", "pkg1");
47        checkExit(Exit.OK);
48
49        checkOutput("pkg/C.html", true,
50                "<a href=\"../pkg/ContaineeSynthDoc.html\" "
51                + "title=\"annotation in pkg\">@ContaineeSynthDoc</a> "
52                + "<a href=\"../pkg/ContaineeSynthDoc.html\" "
53                + "title=\"annotation in pkg\">@ContaineeSynthDoc</a>",
54                "<a href=\"../pkg/ContaineeRegDoc.html\" "
55                + "title=\"annotation in pkg\">@ContaineeRegDoc</a> "
56                + "<a href=\"../pkg/ContaineeRegDoc.html\" "
57                + "title=\"annotation in pkg\">@ContaineeRegDoc</a>",
58                "<a href=\"../pkg/RegContainerDoc.html\" "
59                + "title=\"annotation in pkg\">@RegContainerDoc</a>"
60                + "({"
61                + "<a href=\"../pkg/RegContaineeNotDoc.html\" "
62                + "title=\"annotation in pkg\">@RegContaineeNotDoc</a>,"
63                + "<a href=\"../pkg/RegContaineeNotDoc.html\" "
64                + "title=\"annotation in pkg\">@RegContaineeNotDoc</a>})");
65
66        checkOutput("pkg/D.html", true,
67                "<a href=\"../pkg/RegDoc.html\" title=\"annotation in pkg\">@RegDoc</a>"
68                + "(<a href=\"../pkg/RegDoc.html#x--\">x</a>=1)",
69                "<a href=\"../pkg/RegArryDoc.html\" title=\"annotation in pkg\">@RegArryDoc</a>"
70                + "(<a href=\"../pkg/RegArryDoc.html#y--\">y</a>=1)",
71                "<a href=\"../pkg/RegArryDoc.html\" title=\"annotation in pkg\">@RegArryDoc</a>"
72                + "(<a href=\"../pkg/RegArryDoc.html#y--\">y</a>={1,2})",
73                "<a href=\"../pkg/NonSynthDocContainer.html\" "
74                + "title=\"annotation in pkg\">@NonSynthDocContainer</a>"
75                + "("
76                + "<a href=\"../pkg/RegArryDoc.html\" title=\"annotation in pkg\">@RegArryDoc</a>"
77                + "(<a href=\"../pkg/RegArryDoc.html#y--\">y</a>=1))");
78
79        checkOutput("pkg1/C.html", true,
80                "<a href=\"../pkg1/RegContainerValDoc.html\" "
81                + "title=\"annotation in pkg1\">@RegContainerValDoc</a>"
82                + "(<a href=\"../pkg1/RegContainerValDoc.html#value--\">value</a>={"
83                + "<a href=\"../pkg1/RegContaineeNotDoc.html\" "
84                + "title=\"annotation in pkg1\">@RegContaineeNotDoc</a>,"
85                + "<a href=\"../pkg1/RegContaineeNotDoc.html\" "
86                + "title=\"annotation in pkg1\">@RegContaineeNotDoc</a>},"
87                + "<a href=\"../pkg1/RegContainerValDoc.html#y--\">y</a>=3)",
88                "<a href=\"../pkg1/ContainerValDoc.html\" "
89                + "title=\"annotation in pkg1\">@ContainerValDoc</a>"
90                + "(<a href=\"../pkg1/ContainerValDoc.html#value--\">value</a>={"
91                + "<a href=\"../pkg1/ContaineeNotDoc.html\" "
92                + "title=\"annotation in pkg1\">@ContaineeNotDoc</a>,"
93                + "<a href=\"../pkg1/ContaineeNotDoc.html\" "
94                + "title=\"annotation in pkg1\">@ContaineeNotDoc</a>},"
95                + "<a href=\"../pkg1/ContainerValDoc.html#x--\">x</a>=1)");
96
97        checkOutput("pkg/C.html", false,
98                "<a href=\"../pkg/RegContaineeDoc.html\" "
99                + "title=\"annotation in pkg\">@RegContaineeDoc</a> "
100                + "<a href=\"../pkg/RegContaineeDoc.html\" "
101                + "title=\"annotation in pkg\">@RegContaineeDoc</a>",
102                "<a href=\"../pkg/RegContainerNotDoc.html\" "
103                + "title=\"annotation in pkg\">@RegContainerNotDoc</a>"
104                + "(<a href=\"../pkg/RegContainerNotDoc.html#value--\">value</a>={"
105                + "<a href=\"../pkg/RegContaineeNotDoc.html\" "
106                + "title=\"annotation in pkg\">@RegContaineeNotDoc</a>,"
107                + "<a href=\"../pkg/RegContaineeNotDoc.html\" "
108                + "title=\"annotation in pkg\">@RegContaineeNotDoc</a>})");
109
110        checkOutput("pkg1/C.html", false,
111                "<a href=\"../pkg1/ContaineeSynthDoc.html\" "
112                + "title=\"annotation in pkg1\">@ContaineeSynthDoc</a> "
113                + "<a href=\"../pkg1/ContaineeSynthDoc.html\" "
114                + "title=\"annotation in pkg1\">@ContaineeSynthDoc</a>",
115                "<a href=\"../pkg1/RegContainerValNotDoc.html\" "
116                + "title=\"annotation in pkg1\">@RegContainerValNotDoc</a>"
117                + "(<a href=\"../pkg1/RegContainerValNotDoc.html#value--\">value</a>={"
118                + "<a href=\"../pkg1/RegContaineeDoc.html\" "
119                + "title=\"annotation in pkg1\">@RegContaineeDoc</a>,"
120                + "<a href=\"../pkg1/RegContaineeDoc.html\" "
121                + "title=\"annotation in pkg1\">@RegContaineeDoc</a>},"
122                + "<a href=\"../pkg1/RegContainerValNotDoc.html#y--\">y</a>=4)",
123                "<a href=\"../pkg1/ContainerValNotDoc.html\" "
124                + "title=\"annotation in pkg1\">@ContainerValNotDoc</a>"
125                + "(<a href=\"../pkg1/ContainerValNotDoc.html#value--\">value</a>={"
126                + "<a href=\"../pkg1/ContaineeNotDoc.html\" "
127                + "title=\"annotation in pkg1\">@ContaineeNotDoc</a>,"
128                + "<a href=\"../pkg1/ContaineeNotDoc.html\" "
129                + "title=\"annotation in pkg1\">@ContaineeNotDoc</a>},"
130                + "<a href=\"../pkg1/ContainerValNotDoc.html#x--\">x</a>=2)",
131                "<a href=\"../pkg1/ContainerSynthNotDoc.html\" "
132                + "title=\"annotation in pkg1\">@ContainerSynthNotDoc</a>("
133                + "<a href=\"../pkg1/ContainerSynthNotDoc.html#value--\">value</a>="
134                + "<a href=\"../pkg1/ContaineeSynthDoc.html\" "
135                + "title=\"annotation in pkg1\">@ContaineeSynthDoc</a>)");
136    }
137}
138