GlobPatternTest.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. //===- llvm/unittest/Support/GlobPatternTest.cpp --------------------------===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. #include "llvm/Support/GlobPattern.h"
  9. #include "gtest/gtest.h"
  10. using namespace llvm;
  11. namespace {
  12. class GlobPatternTest : public ::testing::Test {};
  13. TEST_F(GlobPatternTest, Basics) {
  14. Expected<GlobPattern> Pat1 = GlobPattern::create("");
  15. EXPECT_TRUE((bool)Pat1);
  16. EXPECT_TRUE(Pat1->match(""));
  17. EXPECT_FALSE(Pat1->match("a"));
  18. Expected<GlobPattern> Pat2 = GlobPattern::create("ab*c*def");
  19. EXPECT_TRUE((bool)Pat2);
  20. EXPECT_TRUE(Pat2->match("abcdef"));
  21. EXPECT_TRUE(Pat2->match("abxcxdef"));
  22. EXPECT_FALSE(Pat2->match(""));
  23. EXPECT_FALSE(Pat2->match("xabcdef"));
  24. EXPECT_FALSE(Pat2->match("abcdefx"));
  25. Expected<GlobPattern> Pat3 = GlobPattern::create("a??c");
  26. EXPECT_TRUE((bool)Pat3);
  27. EXPECT_TRUE(Pat3->match("axxc"));
  28. EXPECT_FALSE(Pat3->match("axxx"));
  29. EXPECT_FALSE(Pat3->match(""));
  30. Expected<GlobPattern> Pat4 = GlobPattern::create("[abc-fy-z]");
  31. EXPECT_TRUE((bool)Pat4);
  32. EXPECT_TRUE(Pat4->match("a"));
  33. EXPECT_TRUE(Pat4->match("b"));
  34. EXPECT_TRUE(Pat4->match("c"));
  35. EXPECT_TRUE(Pat4->match("d"));
  36. EXPECT_TRUE(Pat4->match("e"));
  37. EXPECT_TRUE(Pat4->match("f"));
  38. EXPECT_TRUE(Pat4->match("y"));
  39. EXPECT_TRUE(Pat4->match("z"));
  40. EXPECT_FALSE(Pat4->match("g"));
  41. EXPECT_FALSE(Pat4->match(""));
  42. Expected<GlobPattern> Pat5 = GlobPattern::create("[^abc-fy-z]");
  43. EXPECT_TRUE((bool)Pat5);
  44. EXPECT_TRUE(Pat5->match("g"));
  45. EXPECT_FALSE(Pat5->match("a"));
  46. EXPECT_FALSE(Pat5->match("b"));
  47. EXPECT_FALSE(Pat5->match("c"));
  48. EXPECT_FALSE(Pat5->match("d"));
  49. EXPECT_FALSE(Pat5->match("e"));
  50. EXPECT_FALSE(Pat5->match("f"));
  51. EXPECT_FALSE(Pat5->match("y"));
  52. EXPECT_FALSE(Pat5->match("z"));
  53. EXPECT_FALSE(Pat5->match(""));
  54. }
  55. TEST_F(GlobPatternTest, Invalid) {
  56. Expected<GlobPattern> Pat1 = GlobPattern::create("[");
  57. EXPECT_FALSE((bool)Pat1);
  58. handleAllErrors(Pat1.takeError(), [&](ErrorInfoBase &EIB) {});
  59. }
  60. TEST_F(GlobPatternTest, ExtSym) {
  61. Expected<GlobPattern> Pat1 = GlobPattern::create("a*\xFF");
  62. EXPECT_TRUE((bool)Pat1);
  63. EXPECT_TRUE(Pat1->match("axxx\xFF"));
  64. Expected<GlobPattern> Pat2 = GlobPattern::create("[\xFF-\xFF]");
  65. EXPECT_TRUE((bool)Pat2);
  66. EXPECT_TRUE(Pat2->match("\xFF"));
  67. }
  68. }