1 /*
   2  * Copyright (c) 2019, 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      8214126
  27  * @summary  Method signatures not formatted correctly in browser
  28  * @library  ../../lib/
  29  * @modules jdk.javadoc/jdk.javadoc.internal.tool
  30  * @build javadoc.tester.*
  31  * @run main TestMethodSignature
  32  */
  33 
  34 import javadoc.tester.JavadocTester;
  35 
  36 public class TestMethodSignature extends JavadocTester {
  37 
  38     public static void main(String... args) throws Exception {
  39         TestMethodSignature tester = new TestMethodSignature();
  40         tester.runTests();
  41     }
  42 
  43     @Test
  44     public void test() {
  45         javadoc("-d", "out",
  46                 "-sourcepath", testSrc,
  47                 "pkg");
  48         checkExit(Exit.OK);
  49 
  50         checkOutput("pkg/C.html", true,
  51                 "<div class=\"memberSignature\"><span class=\"annotations\">"
  52                 + "@Generated(\"GeneratedConstructor\")\n"
  53                 + "</span><span class=\"modifiers\">public</span>&nbsp;"
  54                 + "<span class=\"memberName\">C</span>()</div>",
  55 
  56                 "<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>"
  57                 + "&nbsp;<span class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">"
  58                 + "simpleMethod</span>​(<span class=\"arguments\">int&nbsp;i,\n"
  59                 + "java.lang.String&nbsp;s,\nboolean&nbsp;b)</span></div>",
  60 
  61                 "<div class=\"memberSignature\"><span class=\"annotations\">@Generated"
  62                 + "(value=\"SomeGeneratedName\",\n           date=\"a date\",\n"
  63                 + "           comments=\"some comment about the method below\")\n"
  64                 + "</span><span class=\"modifiers\">public static</span>&nbsp;<span "
  65                 + "class=\"returnType\">void</span>&nbsp;<span class=\"memberName\">annotatedMethod"
  66                 + "</span>​(<span class=\"arguments\">int&nbsp;i,\n"
  67                 + "java.lang.String&nbsp;s,\nboolean&nbsp;b)</span></div>",
  68 
  69                 "<div class=\"memberSignature\"><span class=\"modifiers\">public static</span>"
  70                 + "&nbsp;<span class=\"typeParametersLong\">&lt;T1 extends java.lang.AutoCloseable,​\n"
  71                 + "T2 extends java.lang.AutoCloseable,​\n"
  72                 + "T3 extends java.lang.AutoCloseable,​\n"
  73                 + "T4 extends java.lang.AutoCloseable,​\n"
  74                 + "T5 extends java.lang.AutoCloseable,​\n"
  75                 + "T6 extends java.lang.AutoCloseable,​\n"
  76                 + "T7 extends java.lang.AutoCloseable,​\n"
  77                 + "T8 extends java.lang.AutoCloseable&gt;</span>\n"
  78                 + "<span class=\"returnType\"><a href=\"C.With8Types.html\" "
  79                 + "title=\"class in pkg\">C.With8Types</a>&lt;T1,​T2,​T3,"
  80                 + "​T4,​T5,​T6,​T7,​T8&gt;</span>&nbsp;"
  81                 + "<span class=\"memberName\">bigGenericMethod</span>​("
  82                 + "<span class=\"arguments\"><a href=\"C.F0.html\" "
  83                 + "title=\"interface in pkg\">C.F0</a>&lt;? extends T1&gt;&nbsp;t1,\n"
  84                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  85                 + "C.F0</a>&lt;? extends T2&gt;&nbsp;t2,\n"
  86                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  87                 + "C.F0</a>&lt;? extends T3&gt;&nbsp;t3,\n"
  88                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  89                 + "C.F0</a>&lt;? extends T4&gt;&nbsp;t4,\n"
  90                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  91                 + "C.F0</a>&lt;? extends T5&gt;&nbsp;t5,\n"
  92                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  93                 + "C.F0</a>&lt;? extends T6&gt;&nbsp;t6,\n"
  94                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  95                 + "C.F0</a>&lt;? extends T7&gt;&nbsp;t7,\n"
  96                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
  97                 + "C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>\n"
  98                 + "                                                "
  99                 + "throws <span class=\"exceptions\">java.lang.IllegalArgumentException,\n"
 100                 + "java.lang.IllegalStateException</span></div>",
 101 
 102                 "<div class=\"memberSignature\"><span class=\"annotations\">"
 103                 + "@Generated(value=\"SomeGeneratedName\",\n"
 104                 + "           date=\"a date\",\n"
 105                 + "           comments=\"some comment about the method below\")\n"
 106                 + "</span><span class=\"modifiers\">public static</span>&nbsp;"
 107                 + "<span class=\"typeParametersLong\">"
 108                 + "&lt;T1 extends java.lang.AutoCloseable,​\n"
 109                 + "T2 extends java.lang.AutoCloseable,​\n"
 110                 + "T3 extends java.lang.AutoCloseable,​\n"
 111                 + "T4 extends java.lang.AutoCloseable,​\n"
 112                 + "T5 extends java.lang.AutoCloseable,​\n"
 113                 + "T6 extends java.lang.AutoCloseable,​\n"
 114                 + "T7 extends java.lang.AutoCloseable,​\n"
 115                 + "T8 extends java.lang.AutoCloseable&gt;</span>\n"
 116                 + "<span class=\"returnType\"><a href=\"C.With8Types.html\" "
 117                 + "title=\"class in pkg\">C.With8Types</a>&lt;T1,​T2,​T3,"
 118                 + "​T4,​T5,​T6,​T7,​T8&gt;</span>&nbsp;"
 119                 + "<span class=\"memberName\">bigGenericAnnotatedMethod</span>​("
 120                 + "<span class=\"arguments\"><a href=\"C.F0.html\" "
 121                 + "title=\"interface in pkg\">C.F0</a>&lt;? extends T1&gt;&nbsp;t1,\n"
 122                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 123                 + "C.F0</a>&lt;? extends T2&gt;&nbsp;t2,\n"
 124                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 125                 + "C.F0</a>&lt;? extends T3&gt;&nbsp;t3,\n"
 126                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 127                 + "C.F0</a>&lt;? extends T4&gt;&nbsp;t4,\n"
 128                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 129                 + "C.F0</a>&lt;? extends T5&gt;&nbsp;t5,\n"
 130                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 131                 + "C.F0</a>&lt;? extends T6&gt;&nbsp;t6,\n"
 132                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 133                 + "C.F0</a>&lt;? extends T7&gt;&nbsp;t7,\n"
 134                 + "<a href=\"C.F0.html\" title=\"interface in pkg\">"
 135                 + "C.F0</a>&lt;? extends T8&gt;&nbsp;t8)</span>\n"
 136                 + "                                                         "
 137                 + "throws <span class=\"exceptions\">java.lang.IllegalArgumentException,\n"
 138                 + "java.lang.IllegalStateException</span></div>\n"
 139                 + "<div class=\"block\">Generic method with eight type args and annotation.</div>");
 140 
 141     }
 142 }