diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-21 19:56:55 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-04-21 19:56:55 +0000 |
commit | ddd0cff3eb5acdc581c8f6f5b36b1bf8b90c8bed (patch) | |
tree | 77daebc4c4c41dae651a3425504a52dd1ccc21b1 /tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java | |
parent | cad0938b23a933110df171fb7c9f96721f606cd2 (diff) | |
parent | 1879ee137ede0d62b88cd16da3d46138ca540dfa (diff) | |
download | ImsMedia-ddd0cff3eb5acdc581c8f6f5b36b1bf8b90c8bed.tar.gz |
Snap for 9989322 from 1879ee137ede0d62b88cd16da3d46138ca540dfa to mainline-rkpd-release
Change-Id: I35046c7ba53f650c5d42314f226f1df5b7cd8dc1
Diffstat (limited to 'tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java')
-rw-r--r-- | tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java b/tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java new file mode 100644 index 00000000..759e6f32 --- /dev/null +++ b/tests/unit/src/com/android/telephony/imsmedia/ImsMediaTest.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.telephony.imsmedia; + +import static org.junit.Assert.fail; + +import android.testing.TestableLooper; + +import org.junit.After; +import org.junit.Before; + +import java.util.ArrayList; +import java.util.List; + +public class ImsMediaTest { + protected List<TestableLooper> mTestableLoopers = new ArrayList<>(); + protected TestableLooper mTestableLooper; + protected Object mTestClass; + + @Before + public void setUp() { + mTestableLooper = TestableLooper.get(mTestClass); + if (mTestableLooper != null) { + monitorTestableLooper(mTestableLooper); + } + } + + @After + public void tearDown() throws Exception { + if (!mTestableLoopers.isEmpty()) { + for (TestableLooper looper : mTestableLoopers) { + looper.getLooper().quit(); + } + } + // Unmonitor TestableLooper for ImsMediaTest class + if (mTestableLooper != null) { + unmonitorTestableLooper(mTestableLooper); + } + // Destroy all newly created TestableLoopers so they can be reused + for (TestableLooper looper : mTestableLoopers) { + looper.destroy(); + } + TestableLooper.remove(mTestClass); + + } + + private void monitorTestableLooper(TestableLooper looper) { + if (!mTestableLoopers.contains(looper)) { + mTestableLoopers.add(looper); + } + } + + private void unmonitorTestableLooper(TestableLooper looper) { + if (mTestableLoopers.contains(looper)) { + mTestableLoopers.remove(looper); + } + } + + private boolean areAllTestableLoopersIdle() { + for (TestableLooper looper : mTestableLoopers) { + if (!looper.getLooper().getQueue().isIdle()) return false; + } + return true; + } + + public void processAllMessages() { + if (mTestableLoopers.isEmpty()) { + fail("mTestableLoopers is empty. Please make sure to add @RunWithLooper annotation"); + } + while (!areAllTestableLoopersIdle()) { + for (TestableLooper looper : mTestableLoopers) looper.processAllMessages(); + } + } +} |