1 /*
2  * Copyright (C) 2020 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 
18 package com.android.settings.panel;
19 
20 import static com.google.common.truth.Truth.assertThat;
21 
22 import android.content.Context;
23 import android.net.Uri;
24 
25 import androidx.test.core.app.ApplicationProvider;
26 import androidx.test.ext.junit.runners.AndroidJUnit4;
27 
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.junit.runner.RunWith;
31 
32 @Deprecated(forRemoval = true)
33 @RunWith(AndroidJUnit4.class)
34 public class PanelSlicesLoaderCountdownLatchTest {
35 
36     private Context mContext;
37     private PanelSlicesLoaderCountdownLatch mSliceCountdownLatch;
38 
39     private static final Uri[] URIS = new Uri[] {
40       Uri.parse("content://testUri"),
41       Uri.parse("content://wowUri"),
42       Uri.parse("content://boxTurtle")
43     };
44 
45     @Before
setUp()46     public void setUp() {
47         mContext = ApplicationProvider.getApplicationContext();
48         mSliceCountdownLatch = new PanelSlicesLoaderCountdownLatch(URIS.length);
49     }
50 
51 
52     @Test
hasLoaded_newObject_returnsFalse()53     public void hasLoaded_newObject_returnsFalse() {
54         assertThat(mSliceCountdownLatch.isSliceLoaded(URIS[0])).isFalse();
55     }
56 
57     @Test
hasLoaded_markSliceLoaded_returnsTrue()58     public void hasLoaded_markSliceLoaded_returnsTrue() {
59         mSliceCountdownLatch.markSliceLoaded(URIS[0]);
60 
61         assertThat(mSliceCountdownLatch.isSliceLoaded(URIS[0])).isTrue();
62     }
63 
64     @Test
markSliceLoaded_onlyCountsDownUniqueUris()65     public void markSliceLoaded_onlyCountsDownUniqueUris() {
66         for (int i = 0; i < URIS.length; i++) {
67             mSliceCountdownLatch.markSliceLoaded(URIS[0]);
68         }
69 
70         assertThat(mSliceCountdownLatch.isPanelReadyToLoad()).isFalse();
71     }
72 
73     @Test
areSlicesReadyToLoad_allSlicesLoaded_returnsTrue()74     public void areSlicesReadyToLoad_allSlicesLoaded_returnsTrue() {
75         for (int i = 0; i < URIS.length; i++) {
76             mSliceCountdownLatch.markSliceLoaded(URIS[i]);
77         }
78 
79         assertThat(mSliceCountdownLatch.isPanelReadyToLoad()).isTrue();
80     }
81 
82     @Test
areSlicesReadyToLoad_onlyReturnsTrueOnce()83     public void areSlicesReadyToLoad_onlyReturnsTrueOnce() {
84         for (int i = 0; i < URIS.length; i++) {
85             mSliceCountdownLatch.markSliceLoaded(URIS[i]);
86         }
87 
88         // Verify that it returns true once
89         assertThat(mSliceCountdownLatch.isPanelReadyToLoad()).isTrue();
90         // Verify the second call returns false without external state change
91         assertThat(mSliceCountdownLatch.isPanelReadyToLoad()).isFalse();
92     }
93 }
94