1 /*
2  * Copyright (C) 2024 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 package com.android.adservices.mockito;
17 
18 import android.util.Log;
19 
20 import com.android.adservices.shared.testing.mockito.MockitoHelper;
21 
22 import com.google.errorprone.annotations.FormatMethod;
23 import com.google.errorprone.annotations.FormatString;
24 
25 /** Base implementation for mockers. */
26 public abstract class AbstractMocker {
27 
28     static final String TAG = "Mocker";
29 
30     // TODO(b/338132355): pass object that gets test name on constructor
31     protected final String mTag = getClass().getSimpleName();
32 
33     @FormatMethod
logV(@ormatString String fmt, Object... args)34     protected final void logV(@FormatString String fmt, Object... args) {
35         try {
36             Log.v(TAG, mTag + ": " + String.format(fmt, args));
37         } catch (Exception e) {
38             // Typically happens when the object being passed to a mock method is mal-formed; for
39             // example, a ResolveInfo without a component name
40             Log.w(TAG, mTag + ".logV(fmt=" + fmt + ", args=...): failed to generate string: " + e);
41         }
42     }
43 
assertIsMock(String what, Object mock)44     protected void assertIsMock(String what, Object mock) {
45         if (!MockitoHelper.isMock(mock)) {
46             throw new IllegalArgumentException(what + " is not a mock: " + mock);
47         }
48     }
49 }
50