diff options
author | Samuel Benzaquen <sbenza@google.com> | 2014-04-14 13:51:21 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2014-04-14 13:51:21 +0000 |
commit | f434c4fa3f86cacb7a9cee2f9ca827caf933fc0c (patch) | |
tree | 84b9047319abbb2cb0305ba05173ccf1e39616ce /clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp | |
parent | db2860f49e32bffd2c9159f0b7f6bd22050d4804 (diff) | |
download | bcm5719-llvm-f434c4fa3f86cacb7a9cee2f9ca827caf933fc0c.tar.gz bcm5719-llvm-f434c4fa3f86cacb7a9cee2f9ca827caf933fc0c.zip |
Add support for named values in the parser.
Summary: Add support for named values in the parser.
Reviewers: pcc
CC: cfe-commits, klimek
Differential Revision: http://llvm-reviews.chandlerc.com/D3276
llvm-svn: 206176
Diffstat (limited to 'clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp')
-rw-r--r-- | clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp index e62a4645f75..524b73dc524 100644 --- a/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp +++ b/clang/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp @@ -26,6 +26,7 @@ TEST(VariantValueTest, Unsigned) { EXPECT_TRUE(Value.isUnsigned()); EXPECT_EQ(kUnsigned, Value.getUnsigned()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isString()); EXPECT_FALSE(Value.isMatcher()); } @@ -38,6 +39,7 @@ TEST(VariantValueTest, String) { EXPECT_EQ(kString, Value.getString()); EXPECT_EQ("String", Value.getTypeAsString()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isMatcher()); } @@ -45,6 +47,7 @@ TEST(VariantValueTest, String) { TEST(VariantValueTest, DynTypedMatcher) { VariantValue Value = VariantMatcher::SingleMatcher(stmt()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isString()); @@ -74,11 +77,13 @@ TEST(VariantValueTest, Assignment) { VariantValue Value = std::string("A"); EXPECT_TRUE(Value.isString()); EXPECT_EQ("A", Value.getString()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isMatcher()); EXPECT_EQ("String", Value.getTypeAsString()); Value = VariantMatcher::SingleMatcher(recordDecl()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isString()); EXPECT_TRUE(Value.isMatcher()); @@ -89,16 +94,36 @@ TEST(VariantValueTest, Assignment) { Value = 17; EXPECT_TRUE(Value.isUnsigned()); EXPECT_EQ(17U, Value.getUnsigned()); + EXPECT_TRUE(Value.hasValue()); EXPECT_FALSE(Value.isMatcher()); EXPECT_FALSE(Value.isString()); Value = VariantValue(); + EXPECT_FALSE(Value.hasValue()); EXPECT_FALSE(Value.isUnsigned()); EXPECT_FALSE(Value.isString()); EXPECT_FALSE(Value.isMatcher()); EXPECT_EQ("Nothing", Value.getTypeAsString()); } +TEST(VariantValueTest, ImplicitBool) { + VariantValue Value; + bool IfTrue = false; + if (Value) { + IfTrue = true; + } + EXPECT_FALSE(IfTrue); + EXPECT_TRUE(!Value); + + Value = std::string(); + IfTrue = false; + if (Value) { + IfTrue = true; + } + EXPECT_TRUE(IfTrue); + EXPECT_FALSE(!Value); +} + TEST(VariantValueTest, Matcher) { EXPECT_TRUE(matches("class X {};", VariantValue(VariantMatcher::SingleMatcher( recordDecl(hasName("X")))) |