1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.server.sdksandbox.helpers;
18 
19 import com.google.common.truth.Expect;
20 
21 import org.junit.Rule;
22 import org.junit.Test;
23 
24 public class StringHelperUnitTest {
25 
26     @Rule(order = 0)
27     public final Expect mExpect = Expect.create();
28 
29     @Test
testWildcardPatternMatch()30     public void testWildcardPatternMatch() {
31         String pattern1 = "abcd*";
32         verifyPatternMatch(pattern1, "abcd", /*matchOnNullInput=*/ false, true);
33         verifyPatternMatch(pattern1, "abcdef", /*matchOnNullInput=*/ false, true);
34         verifyPatternMatch(pattern1, "abcdabcd", /*matchOnNullInput=*/ false, true);
35         verifyPatternMatch(pattern1, "efgh", /*matchOnNullInput=*/ false, false);
36         verifyPatternMatch(pattern1, "efgabcd", /*matchOnNullInput=*/ false, false);
37         verifyPatternMatch(pattern1, "abc", /*matchOnNullInput=*/ false, false);
38 
39         String pattern2 = "*";
40         verifyPatternMatch(pattern2, "", /*matchOnNullInput=*/ false, true);
41         verifyPatternMatch(pattern2, "abcd", /*matchOnNullInput=*/ false, true);
42 
43         String pattern3 = "abcd*efgh*";
44         verifyPatternMatch(pattern3, "abcdefgh", /*matchOnNullInput=*/ false, true);
45         verifyPatternMatch(pattern3, "abcdrefghij", /*matchOnNullInput=*/ false, true);
46         verifyPatternMatch(pattern3, "abcd", /*matchOnNullInput=*/ false, false);
47         verifyPatternMatch(pattern3, "abcdteffgh", /*matchOnNullInput=*/ false, false);
48 
49         String pattern4 = "*abcd";
50         verifyPatternMatch(pattern4, "abcdabcd", /*matchOnNullInput=*/ false, true);
51         verifyPatternMatch(pattern4, "abcdabcdabcd", /*matchOnNullInput=*/ false, true);
52         verifyPatternMatch(pattern4, "efgabcd", /*matchOnNullInput=*/ false, true);
53         verifyPatternMatch(pattern4, "abcd", /*matchOnNullInput=*/ false, true);
54         verifyPatternMatch(pattern4, "abcde", /*matchOnNullInput=*/ false, false);
55 
56         String pattern5 = "abcd*e";
57         verifyPatternMatch(pattern5, "abcde", /*matchOnNullInput=*/ false, true);
58         verifyPatternMatch(pattern5, "abcdee", /*matchOnNullInput=*/ false, true);
59         verifyPatternMatch(pattern5, "abcdef", /*matchOnNullInput=*/ false, false);
60 
61         String pattern6 = "";
62         verifyPatternMatch(pattern6, "", /*matchOnNullInput=*/ false, true);
63         verifyPatternMatch(pattern6, "ab", /*matchOnNullInput=*/ false, false);
64 
65         String pattern7 = "*abcd*";
66         verifyPatternMatch(pattern7, "abcdabcdabcd", /*matchOnNullInput=*/ false, true);
67 
68         String pattern8 = "a*a";
69         verifyPatternMatch(pattern8, "aa", /*matchOnNullInput=*/ false, true);
70         verifyPatternMatch(pattern8, "a", /*matchOnNullInput=*/ false, false);
71 
72         String pattern9 = "abcd";
73         verifyPatternMatch(pattern9, "abcd", /*matchOnNullInput=*/ false, true);
74         verifyPatternMatch(pattern9, "a", /*matchOnNullInput=*/ false, false);
75 
76         verifyPatternMatch("*aab", "aaaab", /*matchOnNullInput=*/ false, true);
77         verifyPatternMatch("a", "ab", /*matchOnNullInput=*/ false, false);
78 
79         verifyPatternMatch("*", null, /*matchOnNullInput=*/ false, false);
80         verifyPatternMatch("*", null, /*matchOnNullInput=*/ true, true);
81     }
82 
verifyPatternMatch( String pattern, String input, boolean matchOnNullInput, boolean shouldMatch)83     private void verifyPatternMatch(
84             String pattern, String input, boolean matchOnNullInput, boolean shouldMatch) {
85         mExpect.that(StringHelper.doesInputMatchWildcardPattern(pattern, input, matchOnNullInput))
86                 .isEqualTo(shouldMatch);
87     }
88 }
89