======== #1 configuration test - 1 ========

ALIASES = {
  'english=\if english'
  'endenglish=\endif'
  'dutch=\if dutch'
  'enddutch=\endif'
}
dutch =
  '\if dutch'
enddutch =
  '\endif'
endenglish =
  '\endif'
english =
  '\if english'

======== #2 configuration test - 2 ========

ALIASES = {
  'english="\if english"'
  'endenglish="\endif"'
  'dutch="\if dutch"'
  'enddutch="\endif"'
}
dutch =
  '\if dutch'
enddutch =
  '\endif'
endenglish =
  '\endif'
english =
  '\if english'
----
  @if{section_label:line}
    'english'
    ----
    '*  This is English.\n*  '
  @endif{}
  [
    '*  '
  ]
  @if{section_label:line}
    'dutch'
    ----
    '*  Dit is Nederlands.\n*  '
  @endif{}

======== #3 elem properties ========

command:@param     #0  first
command:@param     #1 
command:@param     #2 
command:@param     #3 
command:@param     #4  last
text               #0  first last
command:@param     #0  first
command:@param     #1 
command:@param     #2 
command:@param     #3  last

======== #1 blank block comment ========
--end--

======== #2 blank line comment ========
--end--

======== #3 simple doxygen block ========
----
----
----
  [
    'test1\n'
  ]
----
  [
    'test1\n'
  ]
----
  [
    'test2\n'
  ]
----
  [
    'test2\n'
  ]
----
  [
    'test3 '
  ]
----
  [
    'test3 '
  ]
--end--

======== #4 simple doxygen line ========
----
----
----
  [
    'test1\n'
  ]
----
  [
    'test2\n'
  ]
--end--

======== #5 multiline ========
----
  [
    'line.1\nline.2\nline.3\n'
  ]
--end--

======== #6 blank line test ========
----
  [
    'abcdefg\nhijklmn\n\nopqrstu\n'
  ]
--end--

======== #7 split comments ========
----
  [
    'abcdef\n'
  ]
----
  [
    'ghijkl\n'
  ]
----
  [
    'mnopqr\n'
  ]
----
  [
    'stuvwxyz\n'
  ]
--end--

======== #8 punctuation ========
----
  [
    @a{word:word}
      '1st.2nd'
    ' '
    @a{word:word}
      '1st'
    '. 2nd\n'
    @a{word:word}
      '1st,2nd'
    ' '
    @a{word:word}
      '1st'
    ', 2nd\n'
    @a{word:word}
      '1st;2nd'
    ' '
    @a{word:word}
      '1st'
    '; 2nd\n'
    @a{word:word}
      '1st?2nd'
    ' '
    @a{word:word}
      '1st'
    '? 2nd\n'
    @a{word:word}
      '1st!2nd'
    ' '
    @a{word:word}
      '1st'
    '! 2nd\n'
  ]
--end--

======== #9 quotation ========
----
  [
    @a{word:word}
      'word'
    '\n'
    @a{word:word}
      'word'
    '\n'
    @a{word:word}
      'multi words'
    '\n'
  ]
--end--

======== #10 various styles of comment block ========
----
  [
    '... /** style, asterisk at each line ...\nline1\nline2\n  line3\nline4\n'
  ]
----
  [
    '... /*! style, asterisk at each line  ...\nline1\nline2\n  line3\nline4\n'
  ]
----
  [
    '... /** style, no asterisk at each line ...\nline1\nline2\n  line3\nline4\n'
  ]
----
  [
    '... /*! style, no asterisk at each line ...\nline1\nline2\n  line3\nline4\n'
  ]
----
  [
    '... /// style ...\nline1\nline2\nline3\nline4\n'
  ]
----
  [
    '... //! style ...\nline1\nline2\nline3\nline4\n'
  ]
----
  [
    '... /** style, surrounded by a series of asterisks ...\nline1\nline2\n  line3\nline4\n'
  ]
----
  [
    '... /// style, surrounded by a series of slashes ...\nline1\nline2\nline3\nline4\n'
  ]
--end--

======== #11 test of @addtogroup ========
----
  @addtogroup{name:word, title:line?}
    'mygrp'
    -
  [
    "Additional documentation for group 'mygrp'\n"
  ]
----
  [
    'A function\n'
  ]
----
  [
    'Another function '
  ]
--end--

======== #12 test of @class ========
----
  @class{name:word, header_file:word?, header_name:word?}
    'Test'
    'class.h'
    'inc/class.h'
  @brief{description:para}
    'This is a test class.\n'
  [
    'Some details about the Test class.\n'
  ]
--end--

======== #13 test of @def ========
----
  @file{name:word?}
    'define.h'
  @brief{description:para}
    'testing defines\n'
  [
    'This is to test the documentation of defines.\n'
  ]
----
  @def{name:word}
    'MAX(x,y)'
  [
    'Computes the maximum of '
    @a{word:word}
      'x'
    ' and '
    @a{word:word}
      'y'
    '.\n'
  ]
----
  [
    'Computes the absolute value of its argument '
    @a{word:word}
      'x'
    '.\n'
  ]
----
  [
    'Computes the minimum of '
    @a{word:word}
      'x'
    ' and '
    @a{word:word}
      'y'
    '. '
  ]
--end--

======== #14 test of @enum ========
----
  @class{name:word, header_file:word?, header_name:word?}
    'Enum_Test'
    -
    -
  [
    'The class description.\n'
  ]
----
  @enum{name:word}
    'Enum_Test::TEnum'
  [
    'A description of the enum type.\n'
  ]
----
  @var{declaration:line}
    'Enum_Test::TEnum Enum_Test::Val1'
  [
    'The description of the first enum value.\n'
  ]
--end--

======== #15 test of @example ========
----
  [
    'A Example_Test class.\nMore details about this class.\n'
  ]
----
  [
    'An example member function.\nMore details about this function.\n'
  ]
----
  @example{file_name:word}
    'example_test.cpp'
  [
    'This is an example of how to use the Example_Test class.\nMore details about this example.\n'
  ]
--end--

======== #16 test of @file ========
----
  @file{name:word?}
    'file.h'
  [
    'A brief file description.\nA more elaborated file description.\n'
  ]
----
  [
    'A global integer value.\nMore details about this value.\n'
  ]
--end--

======== #17 test of @fn ========
----
  @class{name:word, header_file:word?, header_name:word?}
    'Fn_Test'
    -
    -
  @brief{description:para}
    'Fn_Test class.\n'
  [
    'Details about Fn_Test.\n'
  ]
----
  @fn{declaration:line}
    'const char *Fn_Test::member(char c,int n)'
  @brief{description:para}
    'A member function.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'c'
    'a character.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'n'
    'an integer.\n'
  @exception{exception_object:word, description:para}
    'std::out_of_range'
    'parameter is out of range.\n'
  @return{description:para}
    'a character pointer.\n'
--end--

======== #18 test of @headerfile ========
----
  @headerfile{header_file:word, header_name:word?}
    'test.h'
    'test.h'
  @headerfile{header_file:word, header_name:word?}
    'test.h'
    ''
  @headerfile{header_file:word, header_name:word?}
    ''
    -
--end--

======== #19 test of @mainpage ========
----
  @mainpage{title:line?}
    'My Personal Index Page'
  @section{name:word, title:line}
    'intro_sec'
    'Introduction'
  [
    'This is the introduction.\n\n'
  ]
  @section{name:word, title:line}
    'install_sec'
    'Installation'
  @subsection{name:word, title:line}
    'step1'
    'Step 1: Opening the box'
  [
    'etc...\n'
  ]
--end--

======== #20 ========
----
  [
    'E.g. if you have two event handlers '
    @c{word:word}
      'A'
    ' and '
    @c{word:word}
      'B'
    ' and a wxWindow instance\n'
    @c{word:word}
      'W'
    ' and you call:\n'
    @code{word:brace?}
      -
      ----
      '    W->PushEventHandler(A);\n    W->PushEventHandler(B);\n'
    @endcode{}
    '\nyou will end up with the following situation:\n    '
    @image{format:word, file:word, caption:quote?, size:line?}
      'html'
      'overview_events_winstack.png'
      -
      -
  ]
--end--

======== #21 multi structures ========
----
  @file{name:word?}
    'structcmd.h'
  @brief{description:para}
    'A Documented file.\n'
  [
    'Details.\n'
  ]
----
  @def{name:word}
    'MAX(a,b)'
  @brief{description:para}
    [
      'A macro that returns the maximum of '
      @a{word:word}
        'a'
      ' and '
      @a{word:word}
        'b'
      '.\n'
    ]
  [
    'Details.\n'
  ]
----
  @var{declaration:line}
    'typedef unsigned int UINT32'
  @brief{description:para}
    'A type definition for a .\n'
  [
    'Details.\n'
  ]
----
  @var{declaration:line}
    'int errno'
  @brief{description:para}
    'Contains the last error code.\n'
  @warning{message:para}
    'Not thread safe!\n'
----
  @fn{declaration:line}
    'int open(const char *pathname,int flags)'
  @brief{description:para}
    'Opens a file descriptor.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'pathname'
    'The name of the descriptor.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'flags'
    'Opening flags.\n'
----
  @fn{declaration:line}
    'int close(int fd)'
  @brief{description:para}
    [
      'Closes the file descriptor '
      @a{word:word}
        'fd'
      '.\n'
    ]
  @param{dir:bracket, name:word, description:para}
    -
    'fd'
    'The descriptor to close.\n'
----
  @fn{declaration:line}
    'size_t write(int fd,const char *buf, size_t count)'
  @brief{description:para}
    [
      'Writes '
      @a{word:word}
        'count'
      ' bytes from '
      @a{word:word}
        'buf'
      ' to the filedescriptor '
      @a{word:word}
        'fd'
      '.\n'
    ]
  @param{dir:bracket, name:word, description:para}
    -
    'fd'
    'The descriptor to write to.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'buf'
    'The data buffer to write.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'count'
    'The number of bytes to write.\n'
----
  @fn{declaration:line}
    'int read(int fd,char *buf,size_t count)'
  @brief{description:para}
    'Read bytes from a file descriptor.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'fd'
    'The descriptor to read from.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'buf'
    'The buffer to read into.\n'
  @param{dir:bracket, name:word, description:para}
    -
    'count'
    'The number of bytes to read.\n'
--end--

======== #22 various ways to describe brief ========
----
  @brief{description:para}
    'Brief description.\n       Brief description continued.\n'
  [
    'Detailed description starts here.\n'
  ]
----
  @brief{description:para}
    'Brief description.\n'
  [
    'Detailed description. '
  ]
----
  @brief{description:para}
    'Brief description.\n'
  [
    'Detailed description. '
  ]
----
  @brief{description:para}
    'Brief description.\n'
  [
    'Detailed description \nstarts here.\n'
  ]
----
  [
    'Brief description, which is\nreally a detailed description since it spans multiple lines.\nAnother detailed description!\n'
  ]
--end--
