xref: /llvm-project/clang-tools-extra/test/clang-doc/enum.cpp (revision eab37384c151c7eabbffb65e5a053b58f88c8b5d)
1*eab37384SPeterChou1 // RUN: rm -rf %t && mkdir -p %t
2*eab37384SPeterChou1 // RUN: clang-doc --format=html --doxygen --output=%t --executor=standalone %s
3*eab37384SPeterChou1 // RUN: clang-doc --format=md --doxygen --output=%t --executor=standalone %s
4*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.html --check-prefix=HTML-INDEX-LINE
5*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.html --check-prefix=HTML-INDEX
6*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.html --check-prefix=HTML-ANIMAL-LINE
7*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.html --check-prefix=HTML-ANIMAL
8*eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.html --check-prefix=HTML-VEHICLES-LINE
9*eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.html --check-prefix=HTML-VEHICLES
10*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX-LINE
11*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX
12*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL-LINE
13*eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL
14*eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES-LINE
15*eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES
16*eab37384SPeterChou1 
17*eab37384SPeterChou1 
18*eab37384SPeterChou1 /**
19*eab37384SPeterChou1  * @brief For specifying RGB colors
20*eab37384SPeterChou1  */
21*eab37384SPeterChou1 enum Color {
22*eab37384SPeterChou1 // MD-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
23*eab37384SPeterChou1 // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
24*eab37384SPeterChou1   Red, ///< Red
25*eab37384SPeterChou1   Green, ///< Green
26*eab37384SPeterChou1   Blue ///< Blue
27*eab37384SPeterChou1 };
28*eab37384SPeterChou1 
29*eab37384SPeterChou1 // MD-INDEX: ## Enums
30*eab37384SPeterChou1 // MD-INDEX: | enum Color |
31*eab37384SPeterChou1 // MD-INDEX: --
32*eab37384SPeterChou1 // MD-INDEX: | Red |
33*eab37384SPeterChou1 // MD-INDEX: | Green |
34*eab37384SPeterChou1 // MD-INDEX: | Blue |
35*eab37384SPeterChou1 // MD-INDEX: **brief** For specifying RGB colors
36*eab37384SPeterChou1 
37*eab37384SPeterChou1 // HTML-INDEX: <h2 id="Enums">Enums</h2>
38*eab37384SPeterChou1 // HTML-INDEX: <h3 id="{{([0-9A-F]{40})}}">enum Color</h3>
39*eab37384SPeterChou1 // HTML-INDEX: <li>Red</li>
40*eab37384SPeterChou1 // HTML-INDEX: <li>Green</li>
41*eab37384SPeterChou1 // HTML-INDEX: <li>Blue</li>
42*eab37384SPeterChou1 
43*eab37384SPeterChou1 /**
44*eab37384SPeterChou1  * @brief Shape Types
45*eab37384SPeterChou1  */
46*eab37384SPeterChou1 enum class Shapes {
47*eab37384SPeterChou1 // MD-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
48*eab37384SPeterChou1 // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
49*eab37384SPeterChou1   /// Circle
50*eab37384SPeterChou1   Circle,
51*eab37384SPeterChou1   /// Rectangle
52*eab37384SPeterChou1   Rectangle,
53*eab37384SPeterChou1   /// Triangle
54*eab37384SPeterChou1   Triangle
55*eab37384SPeterChou1 };
56*eab37384SPeterChou1 // MD-INDEX: | enum class Shapes |
57*eab37384SPeterChou1 // MD-INDEX: --
58*eab37384SPeterChou1 // MD-INDEX: | Circle |
59*eab37384SPeterChou1 // MD-INDEX: | Rectangle |
60*eab37384SPeterChou1 // MD-INDEX: | Triangle |
61*eab37384SPeterChou1 // MD-INDEX: **brief** Shape Types
62*eab37384SPeterChou1 
63*eab37384SPeterChou1 // HTML-INDEX: <h3 id="{{([0-9A-F]{40})}}">enum class Shapes</h3>
64*eab37384SPeterChou1 // HTML-INDEX: <li>Circle</li>
65*eab37384SPeterChou1 // HTML-INDEX: <li>Rectangle</li>
66*eab37384SPeterChou1 // HTML-INDEX: <li>Triangle</li>
67*eab37384SPeterChou1 
68*eab37384SPeterChou1 
69*eab37384SPeterChou1 class Animals {
70*eab37384SPeterChou1 // MD-ANIMAL-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
71*eab37384SPeterChou1 // HTML-ANIMAL-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
72*eab37384SPeterChou1 public:
73*eab37384SPeterChou1       /**
74*eab37384SPeterChou1        * @brief specify what animal the class is
75*eab37384SPeterChou1        */
76*eab37384SPeterChou1       enum AnimalType {
77*eab37384SPeterChou1 // MD-ANIMAL-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
78*eab37384SPeterChou1 // HTML-ANIMAL-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
79*eab37384SPeterChou1           Dog, /// Man's best friend
80*eab37384SPeterChou1           Cat, /// Man's other best friend
81*eab37384SPeterChou1           Iguana /// A lizard
82*eab37384SPeterChou1       };
83*eab37384SPeterChou1 };
84*eab37384SPeterChou1 
85*eab37384SPeterChou1 // HTML-ANIMAL: <h1>class Animals</h1>
86*eab37384SPeterChou1 // HTML-ANIMAL: <h2 id="Enums">Enums</h2>
87*eab37384SPeterChou1 // HTML-ANIMAL: <h3 id="{{([0-9A-F]{40})}}">enum AnimalType</h3>
88*eab37384SPeterChou1 // HTML-ANIMAL: <li>Dog</li>
89*eab37384SPeterChou1 // HTML-ANIMAL: <li>Cat</li>
90*eab37384SPeterChou1 // HTML-ANIMAL: <li>Iguana</li>
91*eab37384SPeterChou1 
92*eab37384SPeterChou1 // MD-ANIMAL: # class Animals
93*eab37384SPeterChou1 // MD-ANIMAL: ## Enums
94*eab37384SPeterChou1 // MD-ANIMAL: | enum AnimalType |
95*eab37384SPeterChou1 // MD-ANIMAL: --
96*eab37384SPeterChou1 // MD-ANIMAL: | Dog |
97*eab37384SPeterChou1 // MD-ANIMAL: | Cat |
98*eab37384SPeterChou1 // MD-ANIMAL: | Iguana |
99*eab37384SPeterChou1 // MD-ANIMAL: **brief** specify what animal the class is
100*eab37384SPeterChou1 
101*eab37384SPeterChou1 
102*eab37384SPeterChou1 namespace Vehicles {
103*eab37384SPeterChou1     /**
104*eab37384SPeterChou1      * @brief specify type of car
105*eab37384SPeterChou1      */
106*eab37384SPeterChou1     enum Car {
107*eab37384SPeterChou1 // MD-VEHICLES-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
108*eab37384SPeterChou1 // HTML-VEHICLES-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
109*eab37384SPeterChou1        Sedan, /// Sedan
110*eab37384SPeterChou1        SUV, /// SUV
111*eab37384SPeterChou1        Pickup, /// Pickup
112*eab37384SPeterChou1        Hatchback /// Hatchback
113*eab37384SPeterChou1     };
114*eab37384SPeterChou1 }
115*eab37384SPeterChou1 
116*eab37384SPeterChou1 // MD-VEHICLES: # namespace Vehicles
117*eab37384SPeterChou1 // MD-VEHICLES: ## Enums
118*eab37384SPeterChou1 // MD-VEHICLES: | enum Car |
119*eab37384SPeterChou1 // MD-VEHICLES: --
120*eab37384SPeterChou1 // MD-VEHICLES: | Sedan |
121*eab37384SPeterChou1 // MD-VEHICLES: | SUV |
122*eab37384SPeterChou1 // MD-VEHICLES: | Pickup |
123*eab37384SPeterChou1 // MD-VEHICLES: | Hatchback |
124*eab37384SPeterChou1 // MD-VEHICLES: **brief** specify type of car
125*eab37384SPeterChou1 
126*eab37384SPeterChou1 // HTML-VEHICLES: <h1>namespace Vehicles</h1>
127*eab37384SPeterChou1 // HTML-VEHICLES: <h2 id="Enums">Enums</h2>
128*eab37384SPeterChou1 // HTML-VEHICLES: <h3 id="{{([0-9A-F]{40})}}">enum Car</h3>
129*eab37384SPeterChou1 // HTML-VEHICLES: <li>Sedan</li>
130*eab37384SPeterChou1 // HTML-VEHICLES: <li>SUV</li>
131*eab37384SPeterChou1 // HTML-VEHICLES: <li>Pickup</li>
132*eab37384SPeterChou1 // HTML-VEHICLES: <li>Hatchback</li>