Parser/Registry argument enhancements.

Summary:
 Parser/Registry argument enhancements.
  - 2 argument support.
  - unsigned values support.

Reviewers: klimek

CC: cfe-commits, revane

Differential Revision: http://llvm-reviews.chandlerc.com/D915

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183231 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp b/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
index 6c202e5..2aa0e42 100644
--- a/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
+++ b/unittests/ASTMatchers/Dynamic/VariantValueTest.cpp
@@ -19,6 +19,19 @@
 using ast_matchers::internal::DynTypedMatcher;
 using ast_matchers::internal::Matcher;
 
+TEST(VariantValueTest, Unsigned) {
+  const unsigned kUnsigned = 17;
+  VariantValue Value = kUnsigned;
+
+  EXPECT_TRUE(Value.isUnsigned());
+  EXPECT_EQ(kUnsigned, Value.getUnsigned());
+
+  EXPECT_FALSE(Value.isString());
+  EXPECT_FALSE(Value.isMatcher());
+  EXPECT_FALSE(Value.isTypedMatcher<clang::Decl>());
+  EXPECT_FALSE(Value.isTypedMatcher<clang::UnaryOperator>());
+}
+
 TEST(VariantValueTest, String) {
   const ::std::string kString = "string";
   VariantValue Value = kString;
@@ -26,6 +39,7 @@
   EXPECT_TRUE(Value.isString());
   EXPECT_EQ(kString, Value.getString());
 
+  EXPECT_FALSE(Value.isUnsigned());
   EXPECT_FALSE(Value.isMatcher());
   EXPECT_FALSE(Value.isTypedMatcher<clang::Decl>());
   EXPECT_FALSE(Value.isTypedMatcher<clang::UnaryOperator>());
@@ -34,6 +48,7 @@
 TEST(VariantValueTest, DynTypedMatcher) {
   VariantValue Value = stmt();
 
+  EXPECT_FALSE(Value.isUnsigned());
   EXPECT_FALSE(Value.isString());
 
   EXPECT_TRUE(Value.isMatcher());
@@ -59,15 +74,24 @@
   VariantValue Value = std::string("A");
   EXPECT_TRUE(Value.isString());
   EXPECT_EQ("A", Value.getString());
+  EXPECT_FALSE(Value.isUnsigned());
   EXPECT_FALSE(Value.isMatcher());
 
   Value = recordDecl();
+  EXPECT_FALSE(Value.isUnsigned());
   EXPECT_FALSE(Value.isString());
   EXPECT_TRUE(Value.isMatcher());
   EXPECT_TRUE(Value.isTypedMatcher<clang::Decl>());
   EXPECT_TRUE(Value.isTypedMatcher<clang::UnaryOperator>());
 
+  Value = 17;
+  EXPECT_TRUE(Value.isUnsigned());
+  EXPECT_EQ(17U, Value.getUnsigned());
+  EXPECT_FALSE(Value.isMatcher());
+  EXPECT_FALSE(Value.isString());
+
   Value = VariantValue();
+  EXPECT_FALSE(Value.isUnsigned());
   EXPECT_FALSE(Value.isString());
   EXPECT_FALSE(Value.isMatcher());
 }