--- /dev/null
+INPUT = file1.h file2.h file3.h
+QUIET = YES
+GENERATE_HTML = NO
+GENERATE_LATEX = NO
+GENERATE_XML = YES
+XML_PROGRAMLISTING = NO
+XML_NS_MEMB_FILE_SCOPE = YES
+
+##! M_PAGE_FINE_PRINT =
+##! M_THEME_COLOR =
+##! M_FAVICON =
+##! M_LINKS_NAVBAR1 =
+##! M_LINKS_NAVBAR2 =
+##! M_SEARCH_DISABLED = YES
--- /dev/null
+/** @file
+ * @brief Include file for group 1
+ */
+
+/**
+@brief A namespace
+
+This is a namespace. It is spread across two files.
+*/
+namespace Namespace {
+
+/**
+ * @defgroup group1 First group
+ * @brief The first group, containing two functions
+ * @{
+ */
+
+/**
+@brief A function
+
+With detailed description.
+*/
+void function1();
+
+/**
+@brief Another function
+
+Also with detailed description.
+*/
+void function2();
+
+/**
+@brief A typedef
+
+With details.
+*/
+typedef int FooBar;
+
+/**
+@brief A variable
+
+Detailed description.
+*/
+constexpr FooBar FizzBuzz = 5;
+
+/*@}*/
+
+}
--- /dev/null
+/** @file
+ * @brief Include file for group 2
+ */
+
+namespace Namespace {
+
+/** @defgroup group2 Second group
+ * @brief The second group, containing some more functions
+ * @{
+ */
+
+/**
+@brief Yet another function
+
+With detailed description.
+*/
+void function3();
+
+/**
+@brief And even more functions
+
+Also with detailed description.
+*/
+void function4();
+
+/**
+@brief An enum
+
+With details.
+*/
+enum Enum {};
+
+/*@}*/
+
+}
--- /dev/null
+/** @file
+ * @brief Include file with some stuff that belongs to group 1 and group 2
+ */
+
+namespace Namespace {
+
+/** @ingroup group2
+@brief Lets define yet another function
+
+Also with detailed description.
+*/
+void anotherFunction();
+
+/** @ingroup group1
+@brief And another function here
+
+Also with detailed description.
+*/
+void moreFunction();
+
+/** @ingroup group2
+@brief A define
+
+With details.
+*/
+#define A_DEFINE
+
+}
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>file3.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+documentation.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</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-8 m-col-m-none m-left-m">My Project</a>
+ </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>
+ file3.h <span class="m-thin">file</span>
+ </h1>
+ <p>Include file with some stuff that belongs to group 1 and group 2.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#namespaces">Namespaces</a></li>
+ <li><a href="#func-members">Functions</a></li>
+ <li><a href="#defines">Defines</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <section id="namespaces">
+ <h2><a href="#namespaces">Namespaces</a></h2>
+ <dl class="m-doc">
+ <dt>namespace <a href="namespaceNamespace.html" class="m-doc">Namespace</a></dt>
+ <dd>A namespace.</dd>
+ </dl>
+ </section>
+ <section id="func-members">
+ <h2><a href="#func-members">Functions</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group2.html#ga3e0357312208b84559d72f37bd9b79f0" class="m-doc">anotherFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Lets define yet another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group1.html#ga798ec32244c2be015eb9cc416de7ccfa" class="m-doc">moreFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>And another function here.</dd>
+ </dl>
+ </section>
+ <section id="define-members">
+ <h2><a href="#define-members">Defines</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">#define <a href="group__group2.html#ga144a2a84c08d05de76f6a4a245584810" class="m-doc">A_DEFINE</a></span>
+ </dt>
+ <dd>A define.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>First group module | 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+documentation.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</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-8 m-col-m-none m-left-m">My Project</a>
+ </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>
+ First group <span class="m-thin">module</span></h1>
+ <p>The first group, containing two functions.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#typedef-members">Typedefs</a></li>
+ <li><a href="#func-members">Functions</a></li>
+ <li><a href="#var-members">Variables</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <section id="typedef-members">
+ <h2><a href="#typedef-members">Typedefs</a></h2>
+ <dl class="m-doc">
+ <dt>
+ using <a href="#gae839df3a126d4d7aac509698b665478b" class="m-doc">FooBar</a> = int
+ </dt>
+ <dd>A typedef.</dd>
+ </dl>
+ </section>
+ <section id="func-members">
+ <h2><a href="#func-members">Functions</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#ga2269ee6439b4e304afc9bf25fbf8bc62" class="m-doc">function1</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>A function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#gaa824c0bcc0944837651c7d8d3e06be83" class="m-doc">function2</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#ga798ec32244c2be015eb9cc416de7ccfa" class="m-doc">moreFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>And another function here.</dd>
+ </dl>
+ </section>
+ <section id="var-members">
+ <h2><a href="#var-members">Variables</a></h2>
+ <dl class="m-doc">
+ <dt>
+ FooBar <a href="#ga7ba5217f6fa9fca03d32e35161c57da4" class="m-doc">FizzBuzz</a> <span class="m-label m-flat m-primary">constexpr</span>
+ </dt>
+ <dd>A variable.</dd>
+ </dl>
+ </section>
+ <section>
+ <h2>Typedef documentation</h2>
+ <section class="m-doc-details" id="gae839df3a126d4d7aac509698b665478b"><div>
+ <h3>
+ typedef int <a href="#gae839df3a126d4d7aac509698b665478b" class="m-doc-self">FooBar</a>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file1_8h.html"><file1.h></a></div>
+ </h3>
+ <p>A typedef.</p>
+<p>With details.</p>
+ </div></section>
+ </section>
+ <section>
+ <h2>Function documentation</h2>
+ <section class="m-doc-details" id="ga2269ee6439b4e304afc9bf25fbf8bc62"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ga2269ee6439b4e304afc9bf25fbf8bc62" class="m-doc-self">function1</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file1_8h.html"><file1.h></a></div>
+ </h3>
+ <p>A function.</p>
+<p>With detailed description.</p>
+ </div></section>
+ <section class="m-doc-details" id="gaa824c0bcc0944837651c7d8d3e06be83"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#gaa824c0bcc0944837651c7d8d3e06be83" class="m-doc-self">function2</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file1_8h.html"><file1.h></a></div>
+ </h3>
+ <p>Another function.</p>
+<p>Also with detailed description.</p>
+ </div></section>
+ <section class="m-doc-details" id="ga798ec32244c2be015eb9cc416de7ccfa"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ga798ec32244c2be015eb9cc416de7ccfa" class="m-doc-self">moreFunction</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file3_8h.html"><file3.h></a></div>
+ </h3>
+ <p>And another function here.</p>
+<p>Also with detailed description.</p>
+ </div></section>
+ </section>
+ <section>
+ <h2>Variable documentation</h2>
+ <section class="m-doc-details" id="ga7ba5217f6fa9fca03d32e35161c57da4"><div>
+ <h3>
+ FooBar <a href="#ga7ba5217f6fa9fca03d32e35161c57da4" class="m-doc-self">FizzBuzz</a> <span class="m-label m-primary">constexpr</span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file1_8h.html"><file1.h></a></div>
+ </h3>
+ <p>A variable.</p>
+<p>Detailed description.</p>
+ </div></section>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>Second group module | 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+documentation.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</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-8 m-col-m-none m-left-m">My Project</a>
+ </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>
+ Second group <span class="m-thin">module</span></h1>
+ <p>The second group, containing some more functions.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#enum-members">Enums</a></li>
+ <li><a href="#func-members">Functions</a></li>
+ <li><a href="#defines">Defines</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <section id="enum-members">
+ <h2><a href="#enum-members">Enums</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">enum <a href="#gadd172b93283b1ab7612c3ca6cc5dcfea" class="m-doc">Enum</a> { </span><span class="m-doc-wrap"> }</span>
+ </dt>
+ <dd>An enum.</dd>
+ </dl>
+ </section>
+ <section id="func-members">
+ <h2><a href="#func-members">Functions</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#ga6d1a4d6f4c7744c3a412aed630a29146" class="m-doc">function3</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Yet another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#gae6cfc39e4e1614a2ac85ec2b980fec10" class="m-doc">function4</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>And even more functions.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="#ga3e0357312208b84559d72f37bd9b79f0" class="m-doc">anotherFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Lets define yet another function.</dd>
+ </dl>
+ </section>
+ <section id="define-members">
+ <h2><a href="#define-members">Defines</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">#define <a href="#ga144a2a84c08d05de76f6a4a245584810" class="m-doc">A_DEFINE</a></span>
+ </dt>
+ <dd>A define.</dd>
+ </dl>
+ </section>
+ <section>
+ <h2>Enum documentation</h2>
+ <section class="m-doc-details" id="gadd172b93283b1ab7612c3ca6cc5dcfea"><div>
+ <h3>
+ enum <a href="#gadd172b93283b1ab7612c3ca6cc5dcfea" class="m-doc-self">Enum</a>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file2_8h.html"><file2.h></a></div>
+ </h3>
+ <p>An enum.</p>
+<p>With details.</p>
+ </div></section>
+ </section>
+ <section>
+ <h2>Function documentation</h2>
+ <section class="m-doc-details" id="ga6d1a4d6f4c7744c3a412aed630a29146"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ga6d1a4d6f4c7744c3a412aed630a29146" class="m-doc-self">function3</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file2_8h.html"><file2.h></a></div>
+ </h3>
+ <p>Yet another function.</p>
+<p>With detailed description.</p>
+ </div></section>
+ <section class="m-doc-details" id="gae6cfc39e4e1614a2ac85ec2b980fec10"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#gae6cfc39e4e1614a2ac85ec2b980fec10" class="m-doc-self">function4</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file2_8h.html"><file2.h></a></div>
+ </h3>
+ <p>And even more functions.</p>
+<p>Also with detailed description.</p>
+ </div></section>
+ <section class="m-doc-details" id="ga3e0357312208b84559d72f37bd9b79f0"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">void </span><span class="m-doc-wrap"><span class="m-doc-wrap-bumper"><a href="#ga3e0357312208b84559d72f37bd9b79f0" class="m-doc-self">anotherFunction</a>(</span><span class="m-doc-wrap">)</span></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file3_8h.html"><file3.h></a></div>
+ </h3>
+ <p>Lets define yet another function.</p>
+<p>Also with detailed description.</p>
+ </div></section>
+ </section>
+ <section>
+ <h2>Define documentation</h2>
+ <section class="m-doc-details" id="ga144a2a84c08d05de76f6a4a245584810"><div>
+ <h3>
+ <span class="m-doc-wrap-bumper">#define <a href="#ga144a2a84c08d05de76f6a4a245584810" class="m-doc-self">A_DEFINE</a></span>
+ <div class="m-doc-include m-code m-inverted m-text-right"><span class="cp">#include</span> <a class="cpf" href="file3_8h.html"><file3.h></a></div>
+ </h3>
+ <p>A define.</p>
+<p>With details.</p>
+ </div></section>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
--- /dev/null
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8" />
+ <title>Namespace namespace | 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+documentation.compiled.css" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+</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-8 m-col-m-none m-left-m">My Project</a>
+ </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>
+ Namespace <span class="m-thin">namespace</span>
+ </h1>
+ <p>A namespace.</p>
+ <div class="m-block m-default">
+ <h3>Contents</h3>
+ <ul>
+ <li>
+ Reference
+ <ul>
+ <li><a href="#enum-members">Enums</a></li>
+ <li><a href="#typedef-members">Typedefs</a></li>
+ <li><a href="#func-members">Functions</a></li>
+ <li><a href="#var-members">Variables</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+<p>This is a namespace. It is spread across two files.</p>
+ <section id="enum-members">
+ <h2><a href="#enum-members">Enums</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">enum <a href="group__group2.html#gadd172b93283b1ab7612c3ca6cc5dcfea" class="m-doc">Enum</a> { </span><span class="m-doc-wrap"> }</span>
+ </dt>
+ <dd>An enum.</dd>
+ </dl>
+ </section>
+ <section id="typedef-members">
+ <h2><a href="#typedef-members">Typedefs</a></h2>
+ <dl class="m-doc">
+ <dt>
+ using <a href="group__group1.html#gae839df3a126d4d7aac509698b665478b" class="m-doc">FooBar</a> = int
+ </dt>
+ <dd>A typedef.</dd>
+ </dl>
+ </section>
+ <section id="func-members">
+ <h2><a href="#func-members">Functions</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group1.html#ga2269ee6439b4e304afc9bf25fbf8bc62" class="m-doc">function1</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>A function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group1.html#gaa824c0bcc0944837651c7d8d3e06be83" class="m-doc">function2</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group2.html#ga6d1a4d6f4c7744c3a412aed630a29146" class="m-doc">function3</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Yet another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group2.html#gae6cfc39e4e1614a2ac85ec2b980fec10" class="m-doc">function4</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>And even more functions.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group2.html#ga3e0357312208b84559d72f37bd9b79f0" class="m-doc">anotherFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>Lets define yet another function.</dd>
+ <dt>
+ <span class="m-doc-wrap-bumper">void <a href="group__group1.html#ga798ec32244c2be015eb9cc416de7ccfa" class="m-doc">moreFunction</a>(</span><span class="m-doc-wrap">)</span>
+ </dt>
+ <dd>And another function here.</dd>
+ </dl>
+ </section>
+ <section id="var-members">
+ <h2><a href="#var-members">Variables</a></h2>
+ <dl class="m-doc">
+ <dt>
+ <a href="group__group1.html#gae839df3a126d4d7aac509698b665478b" class="m-doc">FooBar</a> <a href="group__group1.html#ga7ba5217f6fa9fca03d32e35161c57da4" class="m-doc">FizzBuzz</a> <span class="m-label m-flat m-primary">constexpr</span>
+ </dt>
+ <dd>A variable.</dd>
+ </dl>
+ </section>
+ </div>
+ </div>
+ </div>
+</article></main>
+</body>
+</html>
self.assertEqual(*self.actual_expected_contents('group__subgroup.html'))
self.assertEqual(*self.actual_expected_contents('modules.html'))
+class ModulesInNamespace(IntegrationTestCase):
+ def __init__(self, *args, **kwargs):
+ super().__init__(__file__, 'modules_in_namespace', *args, **kwargs)
+
+ def test(self):
+ self.run_doxygen(wildcard='*.xml')
+ self.assertEqual(*self.actual_expected_contents('group__group1.html'))
+ self.assertEqual(*self.actual_expected_contents('group__group2.html'))
+ self.assertEqual(*self.actual_expected_contents('namespaceNamespace.html'))
+ self.assertEqual(*self.actual_expected_contents('file3_8h.html'))
+
class Deprecated(IntegrationTestCase):
def __init__(self, *args, **kwargs):
super().__init__(__file__, 'deprecated', *args, **kwargs)