From 952eddef9aff85b1e92626e89baaf7a360e2ac85 Mon Sep 17 00:00:00 2001 From: dim Date: Sun, 22 Dec 2013 00:07:40 +0000 Subject: Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3): https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841 --- unittests/AST/ASTTypeTraitsTest.cpp | 114 ++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 unittests/AST/ASTTypeTraitsTest.cpp (limited to 'unittests/AST/ASTTypeTraitsTest.cpp') diff --git a/unittests/AST/ASTTypeTraitsTest.cpp b/unittests/AST/ASTTypeTraitsTest.cpp new file mode 100644 index 0000000..dd73b52 --- /dev/null +++ b/unittests/AST/ASTTypeTraitsTest.cpp @@ -0,0 +1,114 @@ +//===- unittest/AST/ASTTypeTraits.cpp - AST type traits unit tests ------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===--------------------------------------------------------------------===// + + +#include "clang/AST/ASTTypeTraits.h" +#include "gtest/gtest.h" +#include "MatchVerifier.h" + +using namespace clang::ast_matchers; + +namespace clang { +namespace ast_type_traits { + +TEST(ASTNodeKind, NoKind) { + EXPECT_FALSE(ASTNodeKind().isBaseOf(ASTNodeKind())); + EXPECT_FALSE(ASTNodeKind().isSame(ASTNodeKind())); +} + +template static ASTNodeKind DNT() { + return ASTNodeKind::getFromNodeKind(); +} + +TEST(ASTNodeKind, Bases) { + EXPECT_TRUE(DNT().isBaseOf(DNT())); + EXPECT_FALSE(DNT().isSame(DNT())); + EXPECT_FALSE(DNT().isBaseOf(DNT())); + + EXPECT_TRUE(DNT().isSame(DNT())); +} + +TEST(ASTNodeKind, SameBase) { + EXPECT_TRUE(DNT().isBaseOf(DNT())); + EXPECT_TRUE(DNT().isBaseOf(DNT())); + EXPECT_FALSE(DNT().isBaseOf(DNT())); + EXPECT_FALSE(DNT().isBaseOf(DNT())); +} + +TEST(ASTNodeKind, DiffBase) { + EXPECT_FALSE(DNT().isBaseOf(DNT())); + EXPECT_FALSE(DNT().isBaseOf(DNT())); + EXPECT_FALSE(DNT().isSame(DNT())); +} + +struct Foo {}; + +TEST(ASTNodeKind, UnknownKind) { + // We can construct one, but it is nowhere in the hierarchy. + EXPECT_FALSE(DNT().isSame(DNT())); +} + +TEST(ASTNodeKind, Name) { + EXPECT_EQ("Decl", DNT().asStringRef()); + EXPECT_EQ("CallExpr", DNT().asStringRef()); + EXPECT_EQ("ConstantArrayType", DNT().asStringRef()); + EXPECT_EQ("", ASTNodeKind().asStringRef()); +} + +TEST(DynTypedNode, DeclSourceRange) { + RangeVerifier Verifier; + Verifier.expectRange(1, 1, 1, 11); + EXPECT_TRUE(Verifier.match("void f() {}", decl())); +} + +TEST(DynTypedNode, StmtSourceRange) { + RangeVerifier Verifier; + Verifier.expectRange(1, 10, 1, 11); + EXPECT_TRUE(Verifier.match("void f() {}", stmt())); +} + +TEST(DynTypedNode, TypeLocSourceRange) { + RangeVerifier Verifier; + Verifier.expectRange(1, 1, 1, 8); + EXPECT_TRUE(Verifier.match("void f() {}", typeLoc(loc(functionType())))); +} + +TEST(DynTypedNode, NNSLocSourceRange) { + RangeVerifier Verifier; + Verifier.expectRange(1, 33, 1, 34); + EXPECT_TRUE(Verifier.match("namespace N { typedef void T; } N::T f() {}", + nestedNameSpecifierLoc())); +} + +TEST(DynTypedNode, DeclDump) { + DumpVerifier Verifier; + Verifier.expectSubstring("FunctionDecl"); + EXPECT_TRUE(Verifier.match("void f() {}", functionDecl())); +} + +TEST(DynTypedNode, StmtDump) { + DumpVerifier Verifier; + Verifier.expectSubstring("CompoundStmt"); + EXPECT_TRUE(Verifier.match("void f() {}", stmt())); +} + +TEST(DynTypedNode, DeclPrint) { + PrintVerifier Verifier; + Verifier.expectString("void f() {\n}\n\n"); + EXPECT_TRUE(Verifier.match("void f() {}", functionDecl())); +} + +TEST(DynTypedNode, StmtPrint) { + PrintVerifier Verifier; + Verifier.expectString("{\n}\n"); + EXPECT_TRUE(Verifier.match("void f() {}", stmt())); +} + +} // namespace ast_type_traits +} // namespace clang -- cgit v1.1