RegexTest.cpp 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //===- llvm/unittest/Support/RegexTest.cpp - Regex tests --===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #include "gtest/gtest.h"
  10. #include "llvm/Support/Regex.h"
  11. #include "llvm/ADT/SmallVector.h"
  12. #include <cstring>
  13. using namespace llvm;
  14. namespace {
  15. class RegexTest : public ::testing::Test {
  16. };
  17. TEST_F(RegexTest, Basics) {
  18. Regex r1("^[0-9]+$");
  19. EXPECT_TRUE(r1.match("916"));
  20. EXPECT_TRUE(r1.match("9"));
  21. EXPECT_FALSE(r1.match("9a"));
  22. SmallVector<StringRef, 1> Matches;
  23. Regex r2("[0-9]+", Regex::Sub);
  24. EXPECT_TRUE(r2.match("aa216b", &Matches));
  25. EXPECT_EQ(1u, Matches.size());
  26. EXPECT_EQ("216", Matches[0].str());
  27. Regex r3("[0-9]+([a-f])?:([0-9]+)", Regex::Sub);
  28. EXPECT_TRUE(r3.match("9a:513b", &Matches));
  29. EXPECT_EQ(3u, Matches.size());
  30. EXPECT_EQ("9a:513", Matches[0].str());
  31. EXPECT_EQ("a", Matches[1].str());
  32. EXPECT_EQ("513", Matches[2].str());
  33. EXPECT_TRUE(r3.match("9:513b", &Matches));
  34. EXPECT_EQ(3u, Matches.size());
  35. EXPECT_EQ("9:513", Matches[0].str());
  36. EXPECT_EQ("", Matches[1].str());
  37. EXPECT_EQ("513", Matches[2].str());
  38. Regex r4("a[^b]+b", Regex::Sub);
  39. std::string String="axxb";
  40. String[2] = '\0';
  41. EXPECT_FALSE(r4.match("abb"));
  42. EXPECT_TRUE(r4.match(String, &Matches));
  43. EXPECT_EQ(1u, Matches.size());
  44. EXPECT_EQ(String, Matches[0].str());
  45. std::string NulPattern="X[0-9]+X([a-f])?:([0-9]+)";
  46. String="YX99a:513b";
  47. NulPattern[7] = '\0';
  48. Regex r5(NulPattern, Regex::Sub);
  49. EXPECT_FALSE(r5.match(String));
  50. EXPECT_FALSE(r5.match("X9"));
  51. String[3]='\0';
  52. EXPECT_TRUE(r5.match(String));
  53. }
  54. }