1 //===-- RegularExpressionTest.cpp -----------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #include "lldb/Utility/RegularExpression.h"
10 #include "llvm/ADT/SmallVector.h"
11 #include "gtest/gtest.h"
13 using namespace lldb_private
;
16 TEST(RegularExpression
, Valid
) {
17 RegularExpression
r1("^[0-9]+$");
18 cantFail(r1
.GetError());
19 EXPECT_TRUE(r1
.IsValid());
20 EXPECT_EQ("^[0-9]+$", r1
.GetText());
21 EXPECT_TRUE(r1
.Execute("916"));
24 TEST(RegularExpression
, CopyAssignment
) {
25 RegularExpression
r1("^[0-9]+$");
26 RegularExpression r2
= r1
;
27 cantFail(r2
.GetError());
28 EXPECT_TRUE(r2
.IsValid());
29 EXPECT_EQ("^[0-9]+$", r2
.GetText());
30 EXPECT_TRUE(r2
.Execute("916"));
33 TEST(RegularExpression
, Empty
) {
34 RegularExpression
r1("");
35 Error err
= r1
.GetError();
36 EXPECT_TRUE(static_cast<bool>(err
));
37 consumeError(std::move(err
));
38 EXPECT_FALSE(r1
.IsValid());
39 EXPECT_EQ("", r1
.GetText());
40 EXPECT_FALSE(r1
.Execute("916"));
43 TEST(RegularExpression
, Invalid
) {
44 RegularExpression
r1("a[b-");
45 Error err
= r1
.GetError();
46 EXPECT_TRUE(static_cast<bool>(err
));
47 consumeError(std::move(err
));
48 EXPECT_FALSE(r1
.IsValid());
49 EXPECT_EQ("a[b-", r1
.GetText());
50 EXPECT_FALSE(r1
.Execute("ab"));
53 TEST(RegularExpression
, Match
) {
54 RegularExpression
r1("[0-9]+([a-f])?:([0-9]+)");
55 cantFail(r1
.GetError());
56 EXPECT_TRUE(r1
.IsValid());
57 EXPECT_EQ("[0-9]+([a-f])?:([0-9]+)", r1
.GetText());
59 SmallVector
<StringRef
, 3> matches
;
60 EXPECT_TRUE(r1
.Execute("9a:513b", &matches
));
61 EXPECT_EQ(3u, matches
.size());
62 EXPECT_EQ("9a:513", matches
[0].str());
63 EXPECT_EQ("a", matches
[1].str());
64 EXPECT_EQ("513", matches
[2].str());