1 /*
2 * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include <gtest/gtest.h>
17
18 #include "patterns_matcher.h"
19
20 using namespace testing::ext;
21 using namespace OHOS::AAFwk;
22 using OHOS::Parcel;
23
24 namespace OHOS {
25 namespace AAFwk {
26 class PatternsMatcherBaseTest : public testing::Test {
27 public:
PatternsMatcherBaseTest()28 PatternsMatcherBaseTest()
29 {}
~PatternsMatcherBaseTest()30 ~PatternsMatcherBaseTest()
31 {}
32 static void SetUpTestCase(void);
33 static void TearDownTestCase(void);
34 void SetUp();
35 void TearDown();
36 std::shared_ptr<PatternsMatcher> PatternsMatcherIn_ = nullptr;
37 std::shared_ptr<PatternsMatcher> PatternsMatcherOut_ = nullptr;
38 };
39
SetUpTestCase(void)40 void PatternsMatcherBaseTest::SetUpTestCase(void)
41 {}
42
TearDownTestCase(void)43 void PatternsMatcherBaseTest::TearDownTestCase(void)
44 {}
45
SetUp(void)46 void PatternsMatcherBaseTest::SetUp(void)
47 {
48 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>();
49 PatternsMatcherOut_ = std::make_shared<PatternsMatcher>();
50 }
51
TearDown(void)52 void PatternsMatcherBaseTest::TearDown(void)
53 {}
54
55 /**
56 * @tc.number: AaFwk_PatternsMatcher_Parcelable_0100
57 * @tc.name: Marshalling/Unmarshalling
58 * @tc.desc: marshalling PatternMatcher, and then check result.
59 */
60 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Parcelable_0100, Function | MediumTest | Level1)
61 {
62 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("1234", MatchType::DEFAULT);
63 if (PatternsMatcherIn_ != nullptr) {
64 Parcel in;
65 PatternsMatcherIn_->Marshalling(in);
66 std::shared_ptr<PatternsMatcher> PatternsMatcherOut_(PatternsMatcher::Unmarshalling(in));
67 if (PatternsMatcherOut_ != nullptr) {
68 EXPECT_EQ(PatternsMatcherIn_->GetPattern(), (PatternsMatcherOut_->GetPattern()));
69 EXPECT_EQ(PatternsMatcherIn_->GetType(), (PatternsMatcherOut_->GetType()));
70 }
71 }
72 }
73
74 /**
75 * @tc.number: AaFwk_PatternsMatcher_Parcelable_0200
76 * @tc.name: Marshalling/Unmarshalling
77 * @tc.desc: marshalling PatternMatcher, and then check result.
78 */
79 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Parcelable_0200, Function | MediumTest | Level1)
80 {
81 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("@#¥#3243adsafdf_中文", MatchType::PREFIX);
82 if (PatternsMatcherIn_ != nullptr) {
83 Parcel in;
84 PatternsMatcherIn_->Marshalling(in);
85 std::shared_ptr<PatternsMatcher> PatternsMatcherOut_(PatternsMatcher::Unmarshalling(in));
86 if (PatternsMatcherOut_ != nullptr) {
87 EXPECT_EQ(PatternsMatcherIn_->GetPattern(), (PatternsMatcherOut_->GetPattern()));
88 EXPECT_EQ(PatternsMatcherIn_->GetType(), (PatternsMatcherOut_->GetType()));
89 }
90 }
91 }
92
93 /**
94 * @tc.number: AaFwk_PatternsMatcher_Parcelable_0300
95 * @tc.name: Marshalling/Unmarshalling
96 * @tc.desc: marshalling PatternMatcher, and then check result.
97 */
98 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Parcelable_0300, Function | MediumTest | Level1)
99 {
100 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("", MatchType::GLOBAL);
101 if (PatternsMatcherIn_ != nullptr) {
102 Parcel in;
103 PatternsMatcherIn_->Marshalling(in);
104 std::shared_ptr<PatternsMatcher> PatternsMatcherOut_(PatternsMatcher::Unmarshalling(in));
105 if (PatternsMatcherOut_ != nullptr) {
106 EXPECT_EQ(PatternsMatcherIn_->GetPattern(), (PatternsMatcherOut_->GetPattern()));
107 EXPECT_EQ(PatternsMatcherIn_->GetType(), (PatternsMatcherOut_->GetType()));
108 }
109 }
110 }
111
112 /**
113 * @tc.number: AaFwk_PatternsMatcher_Match_0100
114 * @tc.name: Match
115 * @tc.desc: Match this PatternsMatcher against an Pattern's data, and then check result.
116 */
117 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Match_0100, Function | MediumTest | Level1)
118 {
119 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("abcdefg", MatchType::DEFAULT);
120 if (PatternsMatcherIn_ != nullptr) {
121 EXPECT_EQ(PatternsMatcherIn_->match("abcdefg"), true);
122 EXPECT_EQ(PatternsMatcherIn_->match("Abcdefg"), false);
123 }
124 }
125
126 /**
127 * @tc.number: AaFwk_PatternsMatcher_Match_0200
128 * @tc.name: Match
129 * @tc.desc: Match this PatternsMatcher against an Pattern's data, and then check result.
130 */
131 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Match_0200, Function | MediumTest | Level1)
132 {
133 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("abcdefg", MatchType::PREFIX);
134 if (PatternsMatcherIn_ != nullptr) {
135 EXPECT_EQ(PatternsMatcherIn_->match("abcdefgABCDEFG"), true);
136 EXPECT_EQ(PatternsMatcherIn_->match("AbcdefgABCDEFG"), false);
137 }
138 }
139
140 /**
141 * @tc.number: AaFwk_PatternsMatcher_Match_0300
142 * @tc.name: Match
143 * @tc.desc: Match this PatternsMatcher against an Pattern's data, and then check result.
144 */
145 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Match_0300, Function | MediumTest | Level1)
146 {
147 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("abc*defg.", MatchType::PATTERN);
148 if (PatternsMatcherIn_ != nullptr) {
149 EXPECT_EQ(PatternsMatcherIn_->match("abcdefgG"), true);
150 EXPECT_EQ(PatternsMatcherIn_->match("abcccccdefgG"), true);
151 EXPECT_EQ(PatternsMatcherIn_->match("abcdefg"), false);
152 EXPECT_EQ(PatternsMatcherIn_->match("ABCDEFG"), false);
153 }
154 }
155
156 /**
157 * @tc.number: AaFwk_PatternsMatcher_Match_0400
158 * @tc.name: Match
159 * @tc.desc: Match this PatternsMatcher against an Pattern's data, and then check result.
160 */
161 HWTEST_F(PatternsMatcherBaseTest, AaFwk_PatternsMatcher_Match_0400, Function | MediumTest | Level1)
162 {
163 PatternsMatcherIn_ = std::make_shared<PatternsMatcher>("abc*ABC*123", MatchType::GLOBAL);
164 if (PatternsMatcherIn_ != nullptr) {
165 EXPECT_EQ(PatternsMatcherIn_->match("abcABC123"), true);
166 EXPECT_EQ(PatternsMatcherIn_->match("abcdefgABCDEFG123"), true);
167 EXPECT_EQ(PatternsMatcherIn_->match("000abcdefg000ABCDEFG000123"), true);
168 EXPECT_EQ(PatternsMatcherIn_->match("aBc123"), false);
169 EXPECT_EQ(PatternsMatcherIn_->match("AbC123"), false);
170 EXPECT_EQ(PatternsMatcherIn_->match("abcABC12345"), false);
171 }
172 }
173 } // namespace AAFwk
174 } // namespace OHOS
175