//===-- clang-doc/GeneratorTest.cpp ---------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "ClangDocTest.h" #include "Generators.h" #include "Representation.h" #include "Serialize.h" #include "gtest/gtest.h" namespace clang { namespace doc { TEST(GeneratorTest, emitIndex) { Index Idx; auto InfoA = std::make_unique(); InfoA->Name = "A"; InfoA->USR = serialize::hashUSR("1"); Generator::addInfoToIndex(Idx, InfoA.get()); auto InfoC = std::make_unique(); InfoC->Name = "C"; InfoC->USR = serialize::hashUSR("3"); Reference RefB = Reference("B"); RefB.USR = serialize::hashUSR("2"); InfoC->Namespace = {std::move(RefB)}; Generator::addInfoToIndex(Idx, InfoC.get()); auto InfoD = std::make_unique(); InfoD->Name = "D"; InfoD->USR = serialize::hashUSR("4"); auto InfoF = std::make_unique(); InfoF->Name = "F"; InfoF->USR = serialize::hashUSR("6"); Reference RefD = Reference("D"); RefD.USR = serialize::hashUSR("4"); Reference RefE = Reference("E"); RefE.USR = serialize::hashUSR("5"); InfoF->Namespace = {std::move(RefE), std::move(RefD)}; Generator::addInfoToIndex(Idx, InfoF.get()); auto InfoG = std::make_unique(InfoType::IT_namespace); Generator::addInfoToIndex(Idx, InfoG.get()); Index ExpectedIdx; Index IndexA; IndexA.Name = "A"; ExpectedIdx.Children.emplace_back(std::move(IndexA)); Index IndexB; IndexB.Name = "B"; Index IndexC; IndexC.Name = "C"; IndexB.Children.emplace_back(std::move(IndexC)); ExpectedIdx.Children.emplace_back(std::move(IndexB)); Index IndexD; IndexD.Name = "D"; Index IndexE; IndexE.Name = "E"; Index IndexF; IndexF.Name = "F"; IndexE.Children.emplace_back(std::move(IndexF)); IndexD.Children.emplace_back(std::move(IndexE)); ExpectedIdx.Children.emplace_back(std::move(IndexD)); Index IndexG; IndexG.Name = "GlobalNamespace"; IndexG.RefType = InfoType::IT_namespace; ExpectedIdx.Children.emplace_back(std::move(IndexG)); CheckIndex(ExpectedIdx, Idx); } TEST(GeneratorTest, sortIndex) { Index Idx; Idx.Children.emplace_back("b"); Idx.Children.emplace_back("aA"); Idx.Children.emplace_back("aa"); Idx.Children.emplace_back("A"); Idx.Children.emplace_back("a"); Idx.sort(); Index ExpectedIdx; ExpectedIdx.Children.emplace_back("a"); ExpectedIdx.Children.emplace_back("A"); ExpectedIdx.Children.emplace_back("aa"); ExpectedIdx.Children.emplace_back("aA"); ExpectedIdx.Children.emplace_back("b"); CheckIndex(ExpectedIdx, Idx); } } // namespace doc } // namespace clang