1 //===-- clang-doc/GeneratorTest.cpp ---------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 #include "ClangDocTest.h"
10 #include "Generators.h"
11 #include "Representation.h"
12 #include "Serialize.h"
13 #include "gtest/gtest.h"
14
15 namespace clang {
16 namespace doc {
17
TEST(GeneratorTest,emitIndex)18 TEST(GeneratorTest, emitIndex) {
19 Index Idx;
20 auto InfoA = std::make_unique<Info>();
21 InfoA->Name = "A";
22 InfoA->USR = serialize::hashUSR("1");
23 Generator::addInfoToIndex(Idx, InfoA.get());
24 auto InfoC = std::make_unique<Info>();
25 InfoC->Name = "C";
26 InfoC->USR = serialize::hashUSR("3");
27 Reference RefB = Reference("B");
28 RefB.USR = serialize::hashUSR("2");
29 InfoC->Namespace = {std::move(RefB)};
30 Generator::addInfoToIndex(Idx, InfoC.get());
31 auto InfoD = std::make_unique<Info>();
32 InfoD->Name = "D";
33 InfoD->USR = serialize::hashUSR("4");
34 auto InfoF = std::make_unique<Info>();
35 InfoF->Name = "F";
36 InfoF->USR = serialize::hashUSR("6");
37 Reference RefD = Reference("D");
38 RefD.USR = serialize::hashUSR("4");
39 Reference RefE = Reference("E");
40 RefE.USR = serialize::hashUSR("5");
41 InfoF->Namespace = {std::move(RefE), std::move(RefD)};
42 Generator::addInfoToIndex(Idx, InfoF.get());
43 auto InfoG = std::make_unique<Info>(InfoType::IT_namespace);
44 Generator::addInfoToIndex(Idx, InfoG.get());
45
46 Index ExpectedIdx;
47 Index IndexA;
48 IndexA.Name = "A";
49 ExpectedIdx.Children.emplace_back(std::move(IndexA));
50 Index IndexB;
51 IndexB.Name = "B";
52 Index IndexC;
53 IndexC.Name = "C";
54 IndexB.Children.emplace_back(std::move(IndexC));
55 ExpectedIdx.Children.emplace_back(std::move(IndexB));
56 Index IndexD;
57 IndexD.Name = "D";
58 Index IndexE;
59 IndexE.Name = "E";
60 Index IndexF;
61 IndexF.Name = "F";
62 IndexE.Children.emplace_back(std::move(IndexF));
63 IndexD.Children.emplace_back(std::move(IndexE));
64 ExpectedIdx.Children.emplace_back(std::move(IndexD));
65 Index IndexG;
66 IndexG.Name = "GlobalNamespace";
67 IndexG.RefType = InfoType::IT_namespace;
68 ExpectedIdx.Children.emplace_back(std::move(IndexG));
69
70 CheckIndex(ExpectedIdx, Idx);
71 }
72
TEST(GeneratorTest,sortIndex)73 TEST(GeneratorTest, sortIndex) {
74 Index Idx;
75 Idx.Children.emplace_back("b");
76 Idx.Children.emplace_back("aA");
77 Idx.Children.emplace_back("aa");
78 Idx.Children.emplace_back("A");
79 Idx.Children.emplace_back("a");
80 Idx.sort();
81
82 Index ExpectedIdx;
83 ExpectedIdx.Children.emplace_back("a");
84 ExpectedIdx.Children.emplace_back("A");
85 ExpectedIdx.Children.emplace_back("aa");
86 ExpectedIdx.Children.emplace_back("aA");
87 ExpectedIdx.Children.emplace_back("b");
88
89 CheckIndex(ExpectedIdx, Idx);
90 }
91
92 } // namespace doc
93 } // namespace clang
94