chiark / gitweb /
doxygen: split out tests that depend on unreleased Doxygen features.
authorVladimír Vondruš <mosra@centrum.cz>
Mon, 11 Dec 2017 13:46:12 +0000 (14:46 +0100)
committerVladimír Vondruš <mosra@centrum.cz>
Mon, 11 Dec 2017 13:47:56 +0000 (14:47 +0100)
38 files changed:
doxygen/test/__init__.py
doxygen/test/compound_detailed/File.h
doxygen/test/compound_detailed/namespaceType.html
doxygen/test/compound_detailed/structTemplate.html
doxygen/test/compound_listing/Directory/File.h
doxygen/test/compound_listing/Directory/Sub/Class.h
doxygen/test/compound_listing/classRoot_1_1Directory_1_1Sub_1_1Class.html
doxygen/test/compound_listing/input.dox
doxygen/test/compound_listing/namespaceRoot_1_1Directory.html
doxygen/test/contents_code/index.html
doxygen/test/contents_code/input.dox
doxygen/test/contents_code/warnings.html
doxygen/test/contents_code_language/Doxyfile [new file with mode: 0644]
doxygen/test/contents_code_language/ansi.html [new file with mode: 0644]
doxygen/test/contents_code_language/code.sh [new file with mode: 0644]
doxygen/test/contents_code_language/index.html [new file with mode: 0644]
doxygen/test/contents_code_language/input.dox [new file with mode: 0644]
doxygen/test/contents_code_language/snippet.cpp [moved from doxygen/test/contents_code/snippet.cpp with 100% similarity]
doxygen/test/contents_code_language/warnings.html [new file with mode: 0644]
doxygen/test/cpp_enum_class/Doxyfile [new file with mode: 0644]
doxygen/test/cpp_enum_class/File.h [new file with mode: 0644]
doxygen/test/cpp_enum_class/File_8h.html [new file with mode: 0644]
doxygen/test/cpp_template_alias/Doxyfile [new file with mode: 0644]
doxygen/test/cpp_template_alias/File.h [new file with mode: 0644]
doxygen/test/cpp_template_alias/File_8h.html [new file with mode: 0644]
doxygen/test/cpp_template_alias/structTemplate.html [new file with mode: 0644]
doxygen/test/page_brief/Doxyfile [moved from doxygen/test/page_duplicated_brief/Doxyfile with 100% similarity]
doxygen/test/page_brief/input.dox [moved from doxygen/test/page_duplicated_brief/input.dox with 100% similarity]
doxygen/test/page_brief/page-a.html [moved from doxygen/test/page_duplicated_brief/page-a.html with 100% similarity]
doxygen/test/page_brief/page-b.html [moved from doxygen/test/page_duplicated_brief/page-b.html with 100% similarity]
doxygen/test/page_brief/pages.html [new file with mode: 0644]
doxygen/test/page_toc/Doxyfile [new file with mode: 0644]
doxygen/test/page_toc/input.dox [new file with mode: 0644]
doxygen/test/page_toc/page-toc.html [moved from doxygen/test/compound_listing/page-toc.html with 100% similarity]
doxygen/test/test_compound.py
doxygen/test/test_contents.py
doxygen/test/test_cpp.py [new file with mode: 0644]
doxygen/test/test_page.py

index 1ec23d5f62ac92dfb8b7f4bd7939042c5336617a..96dc7b4f0b5089a9776a4e7f9da4c5d72ed57a3a 100644 (file)
@@ -6,6 +6,9 @@ import xml.etree.ElementTree as ET
 
 from dox2html5 import run, default_templates, default_wildcard, default_index_pages
 
+def doxygen_version():
+    return subprocess.check_output(['doxygen', '-v']).decode('utf-8').strip()
+
 class IntegrationTestCase(unittest.TestCase):
     def __init__(self, path, dir, *args, **kwargs):
         unittest.TestCase.__init__(self, *args, **kwargs)
index f6249770ada32cbd4715b489a9eebaddf4928ace..71cd3f1b75c14a6aa0c167b90b2fcdbf949a811c 100644 (file)
@@ -32,7 +32,7 @@ template<class T, class U = void, class = int> struct Template {
         * Should have just one template with _3 for unnamed parameter. Should
         * also have the `protected` label in the details.
         */
-        enum class Bar {};
+        enum Bar {};
 
         /**
          * @brief Typedef
@@ -44,12 +44,13 @@ template<class T, class U = void, class = int> struct Template {
 
         /**
          * @brief Template alias
-         * @tparam V Well, this is V as well
          *
-         * Should include both template lists, with _3 for unnamed parameter.
-         * Should also have the `protected` label in the details.
+         * Should have just one template with _3 for unnamed parameter. Should
+         * also have the `protected` label in the details. Template parameters
+         * are tested in `cpp_template_aliases` test as they need newer
+         * Doxygen.
          */
-        template<class V, bool = false> using Foo = Buuu<V, false>;
+        using Foo = Buuu<U, false>;
 
         /**
         * @brief Function
@@ -138,12 +139,6 @@ enum {
 
 namespace Type {
 
-/**
-@brief A templated type with just template details
-@tparam T Template param
-*/
-template<class T, typename = void> using Foo = Bar<T, int>;
-
 /**
 @brief Another typedef
 
index 8de1fbd839ed507d85cd5aa1050a476632ec1218..9898c2256e24454768e3acf19707cb59fc11a8cd 100644 (file)
         <section id="typedef-members">
           <h2><a href="#typedef-members">Typedefs</a></h3>
           <dl class="m-dox">
-            <dt>
-              <div class="m-dox-template">template&lt;class T, typename = void&gt;</div>
-              using <a href="#a9d12414d1c73eed4c413440b95cca46b" class="m-dox">Foo</a> = Bar&lt;T, int&gt;
-            </dt>
-            <dd>A templated type with just template details.</dd>
             <dt>
               using <a href="#a60126d739e81aaae3b1222f38582b9fe" class="m-dox">Ugly</a> = Me
             </dt>
         </section>
         <section>
           <h2>Typedef documentation</h2>
-          <section class="m-dox-details" id="a9d12414d1c73eed4c413440b95cca46b"><div>
-            <h3>
-              <div class="m-dox-template">
-                template&lt;class T, typename = void&gt;
-              </div>
-              using Type::<wbr /><a href="#a9d12414d1c73eed4c413440b95cca46b" class="m-dox-self">Foo</a> = Bar&lt;T, int&gt;
-            </h3>
-            <p>A templated type with just template details.</p>
-            <table class="m-table m-fullwidth m-flat">
-              <thead>
-                <tr><th colspan="2">Template parameters</th></tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td style="width: 1%">T</td>
-                  <td>Template param</td>
-                </tr>
-              </tbody>
-            </table>
-          </div></section>
           <section class="m-dox-details" id="a60126d739e81aaae3b1222f38582b9fe"><div>
             <h3>
               typedef Me Type::<wbr /><a href="#a60126d739e81aaae3b1222f38582b9fe" class="m-dox-self">Ugly</a>
index 44052a8a9391e3e5388967092ed8191a032cb9af..bf2418f2b76292e88b399d8dc215f291920f90a0 100644 (file)
@@ -82,7 +82,7 @@
           <h2><a href="#pro-types">Protected types</a></h3>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#a78bd618022079b3efbf1db104e058c8a" class="m-dox">Bar</a> { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a78bd618022079b3efbf1db104e058c8a" class="m-dox">Bar</a> { </span><span class="m-dox-wrap"> }</span>
             </dt>
             <dd>Enum.</dd>
             <dt>
@@ -90,8 +90,7 @@
             </dt>
             <dd>Typedef.</dd>
             <dt>
-              <div class="m-dox-template">template&lt;class V, bool = false&gt;</div>
-              using <a href="#a6b37f78f11b281740b9daf07f695c0fa" class="m-dox">Foo</a> = Buuu&lt;V, false&gt;
+              using <a href="#a94438a80326daae3500ce76ff0048c5e" class="m-dox">Foo</a> = Buuu&lt;U, false&gt;
             </dt>
             <dd>Template alias.</dd>
           </dl>
               <div class="m-dox-template">
                 template&lt;class T, class U, class _3&gt;
               </div>
-              enum class Template&lt;T, U, _3&gt;::<wbr /><a href="#a78bd618022079b3efbf1db104e058c8a" class="m-dox-self">Bar</a> <span class="m-label m-warning">protected</span>
+              enum Template&lt;T, U, _3&gt;::<wbr /><a href="#a78bd618022079b3efbf1db104e058c8a" class="m-dox-self">Bar</a> <span class="m-label m-warning">protected</span>
             </h3>
             <p>Enum.</p>
 <p>Should have just one template with _3 for unnamed parameter. Should also have the <code>protected</code> label in the details.</p>
             <p>Typedef.</p>
 <p>Should have just one template with _3 for unnamed parameter. Should also have the <code>protected</code> label in the details.</p>
           </div></section>
-          <section class="m-dox-details" id="a6b37f78f11b281740b9daf07f695c0fa"><div>
+          <section class="m-dox-details" id="a94438a80326daae3500ce76ff0048c5e"><div>
             <h3>
               <div class="m-dox-template">
                 template&lt;class T, class U, class _3&gt;
-                template&lt;class V, bool = false&gt;
               </div>
-              using Template&lt;T, U, _3&gt;::<wbr /><a href="#a6b37f78f11b281740b9daf07f695c0fa" class="m-dox-self">Foo</a> = Buuu&lt;V, false&gt; <span class="m-label m-warning">protected</span>
+              using Template&lt;T, U, _3&gt;::<wbr /><a href="#a94438a80326daae3500ce76ff0048c5e" class="m-dox-self">Foo</a> = Buuu&lt;U, false&gt; <span class="m-label m-warning">protected</span>
             </h3>
             <p>Template alias.</p>
-            <table class="m-table m-fullwidth m-flat">
-              <thead>
-                <tr><th colspan="2">Template parameters</th></tr>
-              </thead>
-              <tbody>
-                <tr>
-                  <td style="width: 1%">V</td>
-                  <td>Well, this is V as well</td>
-                </tr>
-              </tbody>
-            </table>
-<p>Should include both template lists, with _3 for unnamed parameter. Should also have the <code>protected</code> label in the details.</p>
+<p>Should have just one template with _3 for unnamed parameter. Should also have the <code>protected</code> label in the details. Template parameters are tested in <code>cpp_template_aliases</code> test as they need newer Doxygen.</p>
           </div></section>
         </section>
         <section>
index bdbbadba5da7398106b88fa1e7237d819bdfea7d..d86f907c1be05f2e28da78c48c03d163b7a61d3a 100644 (file)
@@ -14,7 +14,7 @@ struct Struct {};
 union Union {};
 
 /** @brief An enum */
-enum class Enum: int {};
+enum Enum {};
 
 /** @brief A typedef */
 typedef int Int;
@@ -31,7 +31,7 @@ void foo();
 /** @{ @name A group */
 
 /** @brief Flag in a group */
-enum class Flag {};
+enum Flag {};
 
 /** @brief Alias in a group */
 using Main = void;
index e91c2ed4129f96a3a39c80408caacd380225b5cf..52d468e5769e93104518eb85591ef82d3d38745b 100644 (file)
@@ -29,7 +29,7 @@ class Class {
         typedef void(*Deleter)(int, void*);
 
         /** @brief A enum value */
-        enum E: int { FooBar = 3 };
+        enum E { FooBar = 3 };
 
         /** @brief A public static var */
         constexpr static int Size = 0;
@@ -66,7 +66,7 @@ class Class {
         using Type = double;
 
         /** @brief Protected enum */
-        enum class Boolean {
+        enum Boolean {
             True, False, FileNotFound
         };
 
@@ -88,7 +88,7 @@ class Class {
         /** @{ @name Group full of non-public stuff which should be marked as such */
 
         /** @brief Protected flag in a group */
-        enum class Flag {};
+        enum Flag {};
 
         /** @brief Protected alias in a group */
         using Main = void;
@@ -121,7 +121,7 @@ class Class {
 /** @relatedalso Class
  * @brief An enum
  */
-enum class Enum: int {};
+enum Enum {};
 
 /** @relatedalso Class
  * @brief A typedef
index 3959daeb0b64d356832b58904410e9e887e26547..cbf20449b62302fa4c40a9d5e6174655d70755c3 100644 (file)
@@ -84,7 +84,7 @@
             </dt>
             <dd>A public subclass.</dd>
             <dt>
-              <span class="m-dox-wrap-bumper">enum <a href="#a691ffcb6faf21c021ded037101d5414f" class="m-dox-self" name="a691ffcb6faf21c021ded037101d5414f">E</a>: int { </span><span class="m-dox-wrap"><a href="#a691ffcb6faf21c021ded037101d5414fab40890227c995cba62c5ba928fa05797" class="m-dox">FooBar</a> = 3 }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a5436ccacac4eb56e594b3c8f20a78a95" class="m-dox-self" name="a5436ccacac4eb56e594b3c8f20a78a95">E</a> { </span><span class="m-dox-wrap"><a href="#a5436ccacac4eb56e594b3c8f20a78a95ab40890227c995cba62c5ba928fa05797" class="m-dox">FooBar</a> = 3 }</span>
             </dt>
             <dd>A enum value.</dd>
             <dt>
             </dt>
             <dd>A protected subclass.</dd>
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#a0d7a4c92456263a36bd0819d9f26c996" class="m-dox-self" name="a0d7a4c92456263a36bd0819d9f26c996">Boolean</a> { </span><span class="m-dox-wrap"><a href="#a0d7a4c92456263a36bd0819d9f26c996af827cf462f62848df37c5e1e94a4da74" class="m-dox">True</a>,
-              <a href="#a0d7a4c92456263a36bd0819d9f26c996af8320b26d30ab433c5a54546d21f414c" class="m-dox">False</a>,
-              <a href="#a0d7a4c92456263a36bd0819d9f26c996a2767828026039e8ba7b38973cbb701f2" class="m-dox">FileNotFound</a> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a0d7a4c92456263a36bd0819d9f26c996" class="m-dox-self" name="a0d7a4c92456263a36bd0819d9f26c996">Boolean</a> { </span><span class="m-dox-wrap"><a href="#a0d7a4c92456263a36bd0819d9f26c996ac8702eedbc992251f82e762161e1abf7" class="m-dox">True</a>,
+              <a href="#a0d7a4c92456263a36bd0819d9f26c996ac3788e41d3959f1e2592b2789b2c2651" class="m-dox">False</a>,
+              <a href="#a0d7a4c92456263a36bd0819d9f26c996a584feb009cffeb8f24c00613b65189dd" class="m-dox">FileNotFound</a> }</span>
             </dt>
             <dd>Protected enum.</dd>
             <dt>
           <h2><a href="#group-full-of-non-public-stuff-which-should-be-marked-as-such">Group full of non-public stuff which should be marked as such</a></h2>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#a82511584183fc6aa5505e0e4ce811580" class="m-dox-self" name="a82511584183fc6aa5505e0e4ce811580">Flag</a> { </span><span class="m-dox-wrap"> } <span class="m-label m-flat m-warning">protected</span></span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a82511584183fc6aa5505e0e4ce811580" class="m-dox-self" name="a82511584183fc6aa5505e0e4ce811580">Flag</a> { </span><span class="m-dox-wrap"> } <span class="m-label m-flat m-warning">protected</span></span>
             </dt>
             <dd>Protected flag in a group.</dd>
             <dt>
           <h2><a href="#related">Related</a></h3>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#af7cffe8dae198e7cb01579ec6417a637" class="m-dox-self" name="af7cffe8dae198e7cb01579ec6417a637">Enum</a>: int { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#a8150b7776c2a1749101acf22e868d091" class="m-dox-self" name="a8150b7776c2a1749101acf22e868d091">Enum</a> { </span><span class="m-dox-wrap"> }</span>
             </dt>
             <dd>An enum.</dd>
             <dt>
index 8aeef79574fb7eae10e099194e00d29e287bb495..dc3beeaeb62c0e8d9659801930dfa04b579f6d6e 100644 (file)
  * @brief Another namespace
  */
 
-/** @page page-toc Page with TOC
-
-@tableofcontents
-
-@section section A section
-
-Text.
-
-@subsection sub-section Subsection
-
-@subsection sub-section2 Subsection 2
-
-@subsubsection sub-section3 Subsection 3
-
-@section section2 Section 2
-
-*/
-
 /** @page page-no-toc Page without TOC
 
 @section section-notoc A section that doesn't go into TOC
index ce4ac51c4ba661866eaa00cea99d3854f14e358c..03d219b45c537cee2659288e4d992507c00be6a9 100644 (file)
@@ -81,7 +81,7 @@
           <h2><a href="#enum-members">Enums</a></h3>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#a5927d5ad68391bd75c1f43b1ccb957b1" class="m-dox-self" name="a5927d5ad68391bd75c1f43b1ccb957b1">Enum</a>: int { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#afdcca564079156feb9314ad46e0ec20d" class="m-dox-self" name="afdcca564079156feb9314ad46e0ec20d">Enum</a> { </span><span class="m-dox-wrap"> }</span>
             </dt>
             <dd>An enum.</dd>
           </dl>
           <h2><a href="#a-group">A group</a></h2>
           <dl class="m-dox">
             <dt>
-              <span class="m-dox-wrap-bumper">enum class <a href="#ad48cec404dd0ac98a7cb35cde9b80ef7" class="m-dox-self" name="ad48cec404dd0ac98a7cb35cde9b80ef7">Flag</a> { </span><span class="m-dox-wrap"> }</span>
+              <span class="m-dox-wrap-bumper">enum <a href="#ad48cec404dd0ac98a7cb35cde9b80ef7" class="m-dox-self" name="ad48cec404dd0ac98a7cb35cde9b80ef7">Flag</a> { </span><span class="m-dox-wrap"> }</span>
             </dt>
             <dd>Flag in a group.</dd>
             <dt>
index 53b29554b919fe346b2bb816beaf53d156ae8376..6f05c43a3d1786e166e62be9c4fdf2734d15b726 100644 (file)
           My Project
         </h1>
 <pre class="m-code"><span class="c1">// A code block.</span>
-<span class="c1">// Spanning multiple lines.</span></pre><pre class="m-code"><span class="c1">// Special handling of some extensions</span></pre><p><code class="m-code"><span class="na">Inline</span><span class="o">=</span><span class="s">code</span></code> at the start of a line. Then a code that is inside of <code class="m-code"><span class="nb">cd</span> dir</code> a text, should be delimited by spaces. But not when it is in (<code class="m-code"><span class="nx">alert</span><span class="p">(</span><span class="s1">&#39;www&#39;</span><span class="p">);</span></code>) parentheses.</p><pre class="m-console">!<span class="g g-AnsiBlue">[</span><span class="g g-AnsiBrightWhite">mosra@don-perverzo </span><span class="g g-AnsiWhite">m.css</span><span class="g g-AnsiBlue">]</span><span class="g g-AnsiBrightCyan">$ </span></pre><pre class="m-code"><span class="p">{</span>
+<span class="c1">// Spanning multiple lines.</span></pre><p><code class="m-code"><span class="n">Inline</span><span class="o">=</span><span class="n">code</span><span class="p">;</span></code> at the start of a line. Then a code that is inside of <code class="m-code"><span class="nb">true</span> <span class="o">||</span> <span class="nb">false</span></code> a text, should be delimited by spaces. But not when it is in (<code class="m-code"><span class="n">std</span><span class="o">::</span><span class="n">exit</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span></code>) parentheses.</p><pre class="m-code"><span class="p">{</span>
     <span class="c1">// a block</span>
         <span class="c1">// that is indented</span>
     <span class="c1">// but has a lot of trailing whitespace which should be removed</span>
-<span class="p">}</span></pre><p>Look:</p><pre class="m-code"><span class="kt">void</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>A paragraph following a one line snippet should not be merged with it.</p><pre class="m-code"><span class="kt">void</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>This one also not.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
-
-<span class="kt">void</span> <span class="nf">bar</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>And this should not produce a warning.</p><p>Another paragraph.</p><p>Code block inside a list (has to be done using HTML):</p><ul><li><p>A paragraph.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;os&gt;</span><span class="cp"></span></pre></li><li><p>Another paragraph.</p><p>Yet another</p></li><li>A single paragraph, rendered without the wrapping tag</li></ul>
+<span class="p">}</span></pre><p>Code block inside a list (has to be done using HTML):</p><ul><li><p>A paragraph.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;os&gt;</span><span class="cp"></span></pre></li><li><p>Another paragraph.</p><p>Yet another</p></li><li>A single paragraph, rendered without the wrapping tag</li></ul>
       </div>
     </div>
   </div>
index e4cab6c167d54d38be97ddea51d5995f183d342d..76aa4b63fcea0f84686bfe7687d2606b23d8ca22 100644 (file)
@@ -5,17 +5,9 @@
 // Spanning multiple lines.
 @endcode
 
-@code{.glsl}
-// Special handling of some extensions
-@endcode
-
-@code{.ini} Inline=code @endcode at the start of a line. Then a code that
-is inside of @code{.sh} cd dir @endcode a text, should be delimited by spaces.
-But not when it is in (@code{.js} alert('www'); @endcode) parentheses.
-
-@code{.ansi}
-!\e[0;34m[\e[1;37mmosra@don-perverzo \e[0;37mm.css\e[0;34m]\e[1;36m$ \e[0m
-@endcode
+@code{.cpp} Inline=code; @endcode at the start of a line. Then a code that
+is inside of @code{.cpp} true || false @endcode a text, should be delimited by
+spaces. But not when it is in (@code{.cpp} std::exit(2); @endcode) parentheses.
 
 @code{.cpp}
     {
@@ -29,23 +21,6 @@ But not when it is in (@code{.js} alert('www'); @endcode) parentheses.
 
 @endcode
 
-Look:
-
-@snippet snippet.cpp 0
-
-A paragraph following a one line snippet should not be merged with it.
-
-@snippet snippet.cpp 0
-<p>
-
-This one also not.
-
-@snippet snippet.cpp 1
-
-And this should not produce a warning.
-
-Another paragraph.
-
 Code block inside a list (has to be done using HTML):
 
 <ul>
@@ -74,13 +49,9 @@ Code block inside a list (has to be done using HTML):
 @endcode
 
 A paragraph.
-@code{.ini}
-Multi=line
-code=that is a part of a paragraph.
-@endcode
-
-@code{.whatthehell}
-Code that has unrecognizable format.
+@code{.cpp}
+multi=line;
+code="that is a part of a paragraph.";
 @endcode
 
 Improper code block inside a list that needs to be extracted out:
index f8af16be4462416a14c9be630a8f94bf387aa038..414b27462e1e315353adbd3eec3af25cb62e62c5 100644 (file)
@@ -38,8 +38,8 @@
           Code that produces warnings
         </h1>
 <pre class="m-code"><span class="c1">// Code without language</span>
-<span class="c1">// description</span></pre><p>A paragraph.</p><pre class="m-code"><span class="na">Multi</span><span class="o">=</span><span class="s">line</span>
-<span class="na">code</span><span class="o">=</span><span class="s">that is a part of a paragraph.</span></pre><pre class="m-code">Code that has unrecognizable format.</pre><p>Improper code block inside a list that needs to be extracted out:</p><ul><li><p>A paragraph.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;os&gt;</span><span class="cp"></span>
+<span class="c1">// description</span></pre><p>A paragraph.</p><pre class="m-code"><span class="n">multi</span><span class="o">=</span><span class="n">line</span><span class="p">;</span>
+<span class="n">code</span><span class="o">=</span><span class="s">&quot;that is a part of a paragraph.&quot;</span><span class="p">;</span></pre><p>Improper code block inside a list that needs to be extracted out:</p><ul><li><p>A paragraph.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;os&gt;</span><span class="cp"></span>
 <span class="c1">// hello again</span></pre></li></ul>
       </div>
     </div>
diff --git a/doxygen/test/contents_code_language/Doxyfile b/doxygen/test/contents_code_language/Doxyfile
new file mode 100644 (file)
index 0000000..a316231
--- /dev/null
@@ -0,0 +1,8 @@
+INPUT                   = input.dox
+EXAMPLE_PATH            = .
+QUIET                   = YES
+GENERATE_HTML           = NO
+GENERATE_LATEX          = NO
+GENERATE_XML            = YES
+
+M_SHOW_DOXYGEN_VERSION  = NO
diff --git a/doxygen/test/contents_code_language/ansi.html b/doxygen/test/contents_code_language/ansi.html
new file mode 100644 (file)
index 0000000..ae7854f
--- /dev/null
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>ANSI color escape code highlighting | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html" id="m-navbar-current">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          ANSI color escape code highlighting
+        </h1>
+<pre class="m-console">!<span class="g g-AnsiBlue">[</span><span class="g g-AnsiBrightWhite">mosra@don-perverzo </span><span class="g g-AnsiWhite">m.css</span><span class="g g-AnsiBlue">]</span><span class="g g-AnsiBrightCyan">$ </span></pre>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
diff --git a/doxygen/test/contents_code_language/code.sh b/doxygen/test/contents_code_language/code.sh
new file mode 100644 (file)
index 0000000..36fc52d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+if [ -d '/user' ]; then echo "Hello"; fi
+false
diff --git a/doxygen/test/contents_code_language/index.html b/doxygen/test/contents_code_language/index.html
new file mode 100644 (file)
index 0000000..454e18a
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>My Project | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html" id="m-navbar-current">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          My Project
+        </h1>
+<pre class="m-code"><span class="c1">// Special handling of some extensions</span></pre><p><code class="m-code"><span class="na">Inline</span><span class="o">=</span><span class="s">code</span></code> of different <code class="m-code"><span class="nb">cd</span> dir</code> languages.</p><p>Code file with a custom language:</p><pre class="m-code"><span class="ch">#!/bin/bash</span>
+
+<span class="k">if</span> <span class="o">[</span> -d <span class="s1">&#39;/user&#39;</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span> <span class="nb">echo</span> <span class="s2">&quot;Hello&quot;</span><span class="p">;</span> <span class="k">fi</span>
+<span class="nb">false</span></pre><p>Look:</p><pre class="m-code"><span class="kt">void</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>A paragraph following a one line snippet should not be merged with it.</p><pre class="m-code"><span class="kt">void</span> <span class="nf">foo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>This one also not.</p><pre class="m-code"><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
+
+<span class="kt">void</span> <span class="nf">bar</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span><span class="p">;</span> <span class="p">}</span></pre><p>And this should not produce a warning.</p><p>Another paragraph.</p>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
diff --git a/doxygen/test/contents_code_language/input.dox b/doxygen/test/contents_code_language/input.dox
new file mode 100644 (file)
index 0000000..12e1982
--- /dev/null
@@ -0,0 +1,53 @@
+/** @mainpage
+
+@code{.glsl}
+// Special handling of some extensions
+@endcode
+
+@code{.ini} Inline=code @endcode of different @code{.sh} cd dir @endcode
+languages.
+
+Code file with a custom language:
+
+@include code.sh
+
+Look:
+
+@snippet snippet.cpp 0
+
+A paragraph following a one line snippet should not be merged with it.
+
+@snippet snippet.cpp 0
+<p>
+
+This one also not.
+
+@snippet snippet.cpp 1
+
+And this should not produce a warning.
+
+Another paragraph.
+
+*/
+
+/** @page ansi ANSI color escape code highlighting
+
+@code{.ansi}
+!\e[0;34m[\e[1;37mmosra@don-perverzo \e[0;37mm.css\e[0;34m]\e[1;36m$ \e[0m
+@endcode
+
+*/
+
+/** @page warnings Code that produces warnings
+
+@code
+// Code without language
+// description
+@endcode
+
+@code{.whatthehell}
+Code that has unrecognizable format.
+@endcode
+
+*/
+
diff --git a/doxygen/test/contents_code_language/warnings.html b/doxygen/test/contents_code_language/warnings.html
new file mode 100644 (file)
index 0000000..0aaeaed
--- /dev/null
@@ -0,0 +1,56 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>Code that produces warnings | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html" id="m-navbar-current">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          Code that produces warnings
+        </h1>
+<pre class="m-code"><span class="c1">// Code without language</span>
+<span class="c1">// description</span></pre><pre class="m-code">Code that has unrecognizable format.</pre>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/doxygen/test/cpp_enum_class/Doxyfile b/doxygen/test/cpp_enum_class/Doxyfile
new file mode 100644 (file)
index 0000000..29eb753
--- /dev/null
@@ -0,0 +1,8 @@
+INPUT                   = File.h
+AUTOLINK_SUPPORT        = NO
+QUIET                   = YES
+GENERATE_HTML           = NO
+GENERATE_LATEX          = NO
+GENERATE_XML            = YES
+
+M_SHOW_DOXYGEN_VERSION  = NO
diff --git a/doxygen/test/cpp_enum_class/File.h b/doxygen/test/cpp_enum_class/File.h
new file mode 100644 (file)
index 0000000..2b19e5f
--- /dev/null
@@ -0,0 +1,18 @@
+/** @file
+ * @brief A file.
+ */
+
+/** @brief Strongly-typed enum */
+enum class Boolean: unsigned char {
+    True = 7,           /**< True. */
+    False,              /**< False? */
+    FileNotFound = -1   /**< Haha. */
+};
+
+/** @brief Typed enum */
+enum E: int {
+    Value = 42 /**< Value */
+};
+
+/** @brief Strong implicitly typed enum */
+enum class F {};
diff --git a/doxygen/test/cpp_enum_class/File_8h.html b/doxygen/test/cpp_enum_class/File_8h.html
new file mode 100644 (file)
index 0000000..09347bc
--- /dev/null
@@ -0,0 +1,123 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>File.h file | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html" id="m-navbar-current">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          File.h <span class="m-thin">file</span>
+        </h1>
+        <p>A file.</p>
+        <section id="enum-members">
+          <h2><a href="#enum-members">Enums</a></h3>
+          <dl class="m-dox">
+            <dt>
+              <span class="m-dox-wrap-bumper">enum class <a href="#adc1e732190c7fc8fff26792c5a6cee5d" class="m-dox">Boolean</a>: unsigned char { </span><span class="m-dox-wrap"><a href="#adc1e732190c7fc8fff26792c5a6cee5daf827cf462f62848df37c5e1e94a4da74" class="m-dox">True</a> = 7,
+              <a href="#adc1e732190c7fc8fff26792c5a6cee5daf8320b26d30ab433c5a54546d21f414c" class="m-dox">False</a>,
+              <a href="#adc1e732190c7fc8fff26792c5a6cee5da2767828026039e8ba7b38973cbb701f2" class="m-dox">FileNotFound</a> = -1 }</span>
+            </dt>
+            <dd>Strongly-typed enum.</dd>
+            <dt>
+              <span class="m-dox-wrap-bumper">enum <a href="#a24aaac6b6062996acca336e09ffbbffb" class="m-dox">E</a>: int { </span><span class="m-dox-wrap"><a href="#a24aaac6b6062996acca336e09ffbbffba050889cfb2c606473596b8f70f702769" class="m-dox">Value</a> = 42 }</span>
+            </dt>
+            <dd>Typed enum.</dd>
+            <dt>
+              <span class="m-dox-wrap-bumper">enum class <a href="#a1fd406685cbdee605d0a7bebed56fdb0" class="m-dox-self" name="a1fd406685cbdee605d0a7bebed56fdb0">F</a> { </span><span class="m-dox-wrap"> }</span>
+            </dt>
+            <dd>Strong implicitly typed enum.</dd>
+          </dl>
+        </section>
+        <section>
+          <h2>Enum documentation</h2>
+          <section class="m-dox-details" id="adc1e732190c7fc8fff26792c5a6cee5d"><div>
+            <h3>
+              enum class <a href="#adc1e732190c7fc8fff26792c5a6cee5d" class="m-dox-self">Boolean</a>: unsigned char
+            </h3>
+            <p>Strongly-typed enum.</p>
+            <table class="m-table m-fullwidth m-flat m-dox">
+              <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
+              <tbody>
+                <tr>
+                  <td><a href="#adc1e732190c7fc8fff26792c5a6cee5daf827cf462f62848df37c5e1e94a4da74" class="m-dox-self" name="adc1e732190c7fc8fff26792c5a6cee5daf827cf462f62848df37c5e1e94a4da74">True</a></td>
+                  <td>
+<p>True.</p>
+                  </td>
+                </tr>
+                <tr>
+                  <td><a href="#adc1e732190c7fc8fff26792c5a6cee5daf8320b26d30ab433c5a54546d21f414c" class="m-dox-self" name="adc1e732190c7fc8fff26792c5a6cee5daf8320b26d30ab433c5a54546d21f414c">False</a></td>
+                  <td>
+<p>False?</p>
+                  </td>
+                </tr>
+                <tr>
+                  <td><a href="#adc1e732190c7fc8fff26792c5a6cee5da2767828026039e8ba7b38973cbb701f2" class="m-dox-self" name="adc1e732190c7fc8fff26792c5a6cee5da2767828026039e8ba7b38973cbb701f2">FileNotFound</a></td>
+                  <td>
+<p>Haha.</p>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div></section>
+          <section class="m-dox-details" id="a24aaac6b6062996acca336e09ffbbffb"><div>
+            <h3>
+              enum <a href="#a24aaac6b6062996acca336e09ffbbffb" class="m-dox-self">E</a>: int
+            </h3>
+            <p>Typed enum.</p>
+            <table class="m-table m-fullwidth m-flat m-dox">
+              <thead><tr><th style="width: 1%">Enumerators</th><th></th></tr></thead>
+              <tbody>
+                <tr>
+                  <td><a href="#a24aaac6b6062996acca336e09ffbbffba050889cfb2c606473596b8f70f702769" class="m-dox-self" name="a24aaac6b6062996acca336e09ffbbffba050889cfb2c606473596b8f70f702769">Value</a></td>
+                  <td>
+<p>Value</p>
+                  </td>
+                </tr>
+              </tbody>
+            </table>
+          </div></section>
+        </section>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/doxygen/test/cpp_template_alias/Doxyfile b/doxygen/test/cpp_template_alias/Doxyfile
new file mode 100644 (file)
index 0000000..29eb753
--- /dev/null
@@ -0,0 +1,8 @@
+INPUT                   = File.h
+AUTOLINK_SUPPORT        = NO
+QUIET                   = YES
+GENERATE_HTML           = NO
+GENERATE_LATEX          = NO
+GENERATE_XML            = YES
+
+M_SHOW_DOXYGEN_VERSION  = NO
diff --git a/doxygen/test/cpp_template_alias/File.h b/doxygen/test/cpp_template_alias/File.h
new file mode 100644 (file)
index 0000000..5d25f17
--- /dev/null
@@ -0,0 +1,20 @@
+/** @file
+ * @brief A file.
+ */
+
+/** @brief Class with template parameters */
+template<class T, class U = void, class = int> struct Template {
+    /**
+     * @brief Template alias
+     * @tparam V Well, this is V as well
+     *
+     * Should include both template lists, with _3 for unnamed parameter.
+     */
+    template<class V, bool = false> using Foo = Buuu<V, false>;
+};
+
+/**
+@brief A templated type with just template details
+@tparam T Template param
+*/
+template<class T, typename = void> using Foo = Bar<T, int>;
diff --git a/doxygen/test/cpp_template_alias/File_8h.html b/doxygen/test/cpp_template_alias/File_8h.html
new file mode 100644 (file)
index 0000000..00b3d23
--- /dev/null
@@ -0,0 +1,110 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>File.h file | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html" id="m-navbar-current">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          File.h <span class="m-thin">file</span>
+        </h1>
+        <p>A file.</p>
+        <div class="m-block m-default">
+          <h3>Contents</h3>
+          <ul>
+            <li>
+              Reference
+              <ul>
+                <li><a href="#nested-classes">Classes</a></li>
+                <li><a href="#typedef-members">Typedefs</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div>
+        <section id="nested-classes">
+          <h2><a href="#nested-classes">Classes</a></h3>
+          <dl class="m-dox">
+            <dt>
+              <div class="m-dox-template">template&lt;class T, class U = void, class = int&gt;</div>
+              struct <a href="structTemplate.html" class="m-dox">Template</a>
+            </dt>
+            <dd>Class with template parameters.</dd>
+          </dl>
+        </section>
+        <section id="typedef-members">
+          <h2><a href="#typedef-members">Typedefs</a></h3>
+          <dl class="m-dox">
+            <dt>
+              <div class="m-dox-template">template&lt;class T, typename = void&gt;</div>
+              using <a href="#a8a7e587ba0f9fe178534e96d78ae2565" class="m-dox">Foo</a> = Bar&lt;T, int&gt;
+            </dt>
+            <dd>A templated type with just template details.</dd>
+          </dl>
+        </section>
+        <section>
+          <h2>Typedef documentation</h2>
+          <section class="m-dox-details" id="a8a7e587ba0f9fe178534e96d78ae2565"><div>
+            <h3>
+              <div class="m-dox-template">
+                template&lt;class T, typename = void&gt;
+              </div>
+              using <a href="#a8a7e587ba0f9fe178534e96d78ae2565" class="m-dox-self">Foo</a> = Bar&lt;T, int&gt;
+            </h3>
+            <p>A templated type with just template details.</p>
+            <table class="m-table m-fullwidth m-flat">
+              <thead>
+                <tr><th colspan="2">Template parameters</th></tr>
+              </thead>
+              <tbody>
+                <tr>
+                  <td style="width: 1%">T</td>
+                  <td>Template param</td>
+                </tr>
+              </tbody>
+            </table>
+          </div></section>
+        </section>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/doxygen/test/cpp_template_alias/structTemplate.html b/doxygen/test/cpp_template_alias/structTemplate.html
new file mode 100644 (file)
index 0000000..0bfeb7c
--- /dev/null
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>Template struct | My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html" id="m-navbar-current">Classes</a></li>
+            <li><a href="files.html">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>
+          <div class="m-dox-template">template&lt;class T, class U = void, class = int&gt;</div>
+          Template <span class="m-thin">struct</span>
+        </h1>
+        <p>Class with template parameters.</p>
+        <div class="m-block m-default">
+          <h3>Contents</h3>
+          <ul>
+            <li>
+              Reference
+              <ul>
+                <li><a href="#pub-types">Public types</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div>
+        <section id="pub-types">
+          <h2><a href="#pub-types">Public types</a></h3>
+          <dl class="m-dox">
+            <dt>
+              <div class="m-dox-template">template&lt;class V, bool = false&gt;</div>
+              using <a href="#a6b37f78f11b281740b9daf07f695c0fa" class="m-dox">Foo</a> = Buuu&lt;V, false&gt;
+            </dt>
+            <dd>Template alias.</dd>
+          </dl>
+        </section>
+        <section>
+          <h2>Typedef documentation</h2>
+          <section class="m-dox-details" id="a6b37f78f11b281740b9daf07f695c0fa"><div>
+            <h3>
+              <div class="m-dox-template">
+                template&lt;class T, class U, class _3&gt;
+                template&lt;class V, bool = false&gt;
+              </div>
+              using Template&lt;T, U, _3&gt;::<wbr /><a href="#a6b37f78f11b281740b9daf07f695c0fa" class="m-dox-self">Foo</a> = Buuu&lt;V, false&gt;
+            </h3>
+            <p>Template alias.</p>
+            <table class="m-table m-fullwidth m-flat">
+              <thead>
+                <tr><th colspan="2">Template parameters</th></tr>
+              </thead>
+              <tbody>
+                <tr>
+                  <td style="width: 1%">V</td>
+                  <td>Well, this is V as well</td>
+                </tr>
+              </tbody>
+            </table>
+<p>Should include both template lists, with _3 for unnamed parameter.</p>
+          </div></section>
+        </section>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/doxygen/test/page_brief/pages.html b/doxygen/test/page_brief/pages.html
new file mode 100644 (file)
index 0000000..63eac88
--- /dev/null
@@ -0,0 +1,71 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <title>My Project</title>
+  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600" />
+  <link rel="stylesheet" href="m-dark+doxygen.compiled.css" />
+  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+  <meta name="theme-color" content="#22272e" />
+</head>
+<body>
+<header><nav id="navigation">
+  <div class="m-container">
+    <div class="m-row">
+      <a href="index.html" id="m-navbar-brand" class="m-col-t-9 m-col-m-none m-left-m">My Project</a>
+      <a id="m-navbar-show" href="#navigation" title="Show navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <a id="m-navbar-hide" href="#" title="Hide navigation" class="m-col-t-3 m-hide-m m-text-right"></a>
+      <div id="m-navbar-collapse" class="m-col-t-12 m-show-m m-col-m-none m-right-m">
+        <div class="m-row">
+          <ol class="m-col-t-6 m-col-m-none">
+            <li><a href="pages.html" id="m-navbar-current">Pages</a></li>
+            <li><a href="namespaces.html">Namespaces</a></li>
+          </ol>
+          <ol class="m-col-t-6 m-col-m-none" start="3">
+            <li><a href="annotated.html">Classes</a></li>
+            <li><a href="files.html">Files</a></li>
+          </ol>
+        </div>
+      </div>
+    </div>
+  </div>
+</nav></header>
+<main><article>
+  <div class="m-container m-container-inflatable">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <h1>Pages</h2>
+        <ul class="m-dox">
+          <li><a href="page-a.html" class="m-dox">A page</a> <span class="m-dox">Brief docs for a page.</span></li>
+          <li><a href="page-b.html" class="m-dox">Page B</a> <span class="m-dox">Brief with a period.</span></li>
+        </ul>
+        <script>
+        function toggle(e) {
+            e.parentElement.className = e.parentElement.className == 'm-dox-collapsible' ?
+                'm-dox-expansible' : 'm-dox-collapsible';
+            return false;
+        }
+        /* Collapse all nodes marked as such. Doing it via JS instead of directly in
+           markup so disabling it doesn't harm usability. The list is somehow
+           regenerated on every iteration and shrinks as I change the classes. It's not
+           documented anywhere and I'm not sure if this is the same across browsers, so
+           I am going backwards in that list to be sure.  */
+        var collapsed = document.getElementsByClassName("collapsed");
+        for(var i = collapsed.length - 1; i >= 0; --i)
+            collapsed[i].className = 'm-dox-expansible';
+        </script>
+      </div>
+    </div>
+  </div>
+</article></main>
+<footer><nav>
+  <div class="m-container">
+    <div class="m-row">
+      <div class="m-col-l-10 m-push-l-1">
+        <p>My Project. Created by <a href="http://doxygen.org/">Doxygen</a> and <a href="http://mcss.mosra.cz/">m.css</a>.</p>
+      </div>
+    </div>
+  </div>
+</nav></footer>
+</body>
+</html>
\ No newline at end of file
diff --git a/doxygen/test/page_toc/Doxyfile b/doxygen/test/page_toc/Doxyfile
new file mode 100644 (file)
index 0000000..d64a238
--- /dev/null
@@ -0,0 +1,7 @@
+INPUT                   = input.dox
+QUIET                   = YES
+GENERATE_HTML           = NO
+GENERATE_LATEX          = NO
+GENERATE_XML            = YES
+
+M_SHOW_DOXYGEN_VERSION  = NO
diff --git a/doxygen/test/page_toc/input.dox b/doxygen/test/page_toc/input.dox
new file mode 100644 (file)
index 0000000..28d143d
--- /dev/null
@@ -0,0 +1,17 @@
+/** @page page-toc Page with TOC
+
+@tableofcontents
+
+@section section A section
+
+Text.
+
+@subsection sub-section Subsection
+
+@subsection sub-section2 Subsection 2
+
+@subsubsection sub-section3 Subsection 3
+
+@section section2 Section 2
+
+*/
index 971125f992eb0526fc9261d579e2f1effdbd850b..d6741019a4e0f4367e6875fdca6d1d2fefba3da2 100644 (file)
@@ -48,10 +48,6 @@ class Listing(IntegrationTestCase):
         self.run_dox2html5(wildcard='union*Bar*.xml')
         self.assertFalse(os.path.exists(os.path.join(self.path, 'html', 'unionRoot_1_1Directory_1_1Sub_1_1Class_1_1Bar.html')))
 
-    def test_page_toc(self):
-        self.run_dox2html5(wildcard='page-toc.xml')
-        self.assertEqual(*self.actual_expected_contents('page-toc.html'))
-
     def test_page_no_toc(self):
         self.run_dox2html5(wildcard='page-no-toc.xml')
         self.assertEqual(*self.actual_expected_contents('page-no-toc.html'))
index deba4b8a058cdb6b7b000c8d031df6b4a7085d28..8659939fd8ba13ce3c39162cf65128cc4a2bb1e1 100644 (file)
@@ -1,6 +1,9 @@
 import os
+import unittest
 
-from test import IntegrationTestCase
+from distutils.version import LooseVersion
+
+from test import IntegrationTestCase, doxygen_version
 
 class Typography(IntegrationTestCase):
     def __init__(self, *args, **kwargs):
@@ -38,6 +41,28 @@ class Code(IntegrationTestCase):
         self.run_dox2html5(wildcard='warnings.xml')
         self.assertEqual(*self.actual_expected_contents('warnings.html'))
 
+class CodeLanguage(IntegrationTestCase):
+    def __init__(self, *args, **kwargs):
+        super().__init__(__file__, 'code_language', *args, **kwargs)
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/621")
+    def test(self):
+        self.run_dox2html5(wildcard='indexpage.xml')
+        self.assertEqual(*self.actual_expected_contents('index.html'))
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/623")
+    def test_ansi(self):
+        self.run_dox2html5(wildcard='ansi.xml')
+        self.assertEqual(*self.actual_expected_contents('ansi.html'))
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/621")
+    def test_warnings(self):
+        self.run_dox2html5(wildcard='warnings.xml')
+        self.assertEqual(*self.actual_expected_contents('warnings.html'))
+
 class Image(IntegrationTestCase):
     def __init__(self, *args, **kwargs):
         super().__init__(__file__, 'image', *args, **kwargs)
diff --git a/doxygen/test/test_cpp.py b/doxygen/test/test_cpp.py
new file mode 100644 (file)
index 0000000..a352f31
--- /dev/null
@@ -0,0 +1,26 @@
+import unittest
+
+from distutils.version import LooseVersion
+
+from test import IntegrationTestCase, doxygen_version
+
+class EnumClass(IntegrationTestCase):
+    def __init__(self, *args, **kwargs):
+        super().__init__(__file__, 'enum_class', *args, **kwargs)
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/627")
+    def test(self):
+        self.run_dox2html5(wildcard='File_8h.xml')
+        self.assertEqual(*self.actual_expected_contents('File_8h.html'))
+
+class TemplateAlias(IntegrationTestCase):
+    def __init__(self, *args, **kwargs):
+        super().__init__(__file__, 'template_alias', *args, **kwargs)
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/626")
+    def test(self):
+        self.run_dox2html5(wildcard='*.xml')
+        self.assertEqual(*self.actual_expected_contents('File_8h.html'))
+        self.assertEqual(*self.actual_expected_contents('structTemplate.html'))
index b4cf416b24c8010ce0f575e663b0b224df20dc37..e660b792a23770945311f176f3be790028c77aa0 100644 (file)
@@ -1,4 +1,8 @@
-from test import IntegrationTestCase
+import unittest
+
+from distutils.version import LooseVersion
+
+from test import IntegrationTestCase, doxygen_version
 
 class Order(IntegrationTestCase):
     def __init__(self, *args, **kwargs):
@@ -8,11 +12,24 @@ class Order(IntegrationTestCase):
         self.run_dox2html5(index_pages=['pages'], wildcard='index.xml')
         self.assertEqual(*self.actual_expected_contents('pages.html'))
 
-class DuplicatedBrief(IntegrationTestCase):
+class Brief(IntegrationTestCase):
     def __init__(self, *args, **kwargs):
-        super().__init__(__file__, 'duplicated_brief', *args, **kwargs)
+        super().__init__(__file__, 'brief', *args, **kwargs)
 
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/624")
     def test(self):
-        self.run_dox2html5(wildcard='page-*.xml')
+        self.run_dox2html5(wildcard='*.xml')
+        self.assertEqual(*self.actual_expected_contents('pages.html'))
         self.assertEqual(*self.actual_expected_contents('page-a.html'))
         self.assertEqual(*self.actual_expected_contents('page-b.html'))
+
+class Toc(IntegrationTestCase):
+    def __init__(self, *args, **kwargs):
+        super().__init__(__file__, 'toc', *args, **kwargs)
+
+    @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.13"),
+                         "https://github.com/doxygen/doxygen/pull/625")
+    def test(self):
+        self.run_dox2html5(wildcard='page-toc.xml')
+        self.assertEqual(*self.actual_expected_contents('page-toc.html'))