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