//===-- ContextTests.cpp - Context tests ------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "Context.h" #include "gtest/gtest.h" namespace clang { namespace clangd { TEST(ContextTests, Simple) { Key IntParam; Key ExtraIntParam; Context Ctx = Context::empty().derive(IntParam, 10).derive(ExtraIntParam, 20); EXPECT_EQ(*Ctx.get(IntParam), 10); EXPECT_EQ(*Ctx.get(ExtraIntParam), 20); } TEST(ContextTests, MoveOps) { Key> Param; Context Ctx = Context::empty().derive(Param, llvm::make_unique(10)); EXPECT_EQ(**Ctx.get(Param), 10); Context NewCtx = std::move(Ctx); EXPECT_EQ(**NewCtx.get(Param), 10); } TEST(ContextTests, Builders) { Key ParentParam; Key ParentAndChildParam; Key ChildParam; Context ParentCtx = Context::empty().derive(ParentParam, 10).derive(ParentAndChildParam, 20); Context ChildCtx = ParentCtx.derive(ParentAndChildParam, 30).derive(ChildParam, 40); EXPECT_EQ(*ParentCtx.get(ParentParam), 10); EXPECT_EQ(*ParentCtx.get(ParentAndChildParam), 20); EXPECT_EQ(ParentCtx.get(ChildParam), nullptr); EXPECT_EQ(*ChildCtx.get(ParentParam), 10); EXPECT_EQ(*ChildCtx.get(ParentAndChildParam), 30); EXPECT_EQ(*ChildCtx.get(ChildParam), 40); } } // namespace clangd } // namespace clang