• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package org.robolectric.shadows;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 
5 import android.app.Application;
6 import android.content.res.AssetManager;
7 import android.content.res.Resources;
8 import androidx.test.ext.junit.runners.AndroidJUnit4;
9 import java.util.concurrent.atomic.AtomicLong;
10 import org.junit.FixMethodOrder;
11 import org.junit.Test;
12 import org.junit.runner.RunWith;
13 import org.junit.runners.MethodSorters;
14 import org.robolectric.RuntimeEnvironment;
15 import org.robolectric.annotation.Config;
16 import org.robolectric.annotation.ResourcesMode;
17 import org.robolectric.annotation.ResourcesMode.Mode;
18 import org.robolectric.shadow.api.Shadow;
19 import org.robolectric.versioning.AndroidVersions.P;
20 
21 @FixMethodOrder(MethodSorters.NAME_ASCENDING)
22 @RunWith(AndroidJUnit4.class)
23 @Config(minSdk = P.SDK_INT)
24 @ResourcesMode(Mode.BINARY)
25 public class AssetManagerCachingTest {
26   private static final AtomicLong systemNativePtr = new AtomicLong();
27 
28   @Test
test1_getAssetManagerPtr()29   public void test1_getAssetManagerPtr() {
30     AssetManager systemAssetManager = Resources.getSystem().getAssets();
31     systemNativePtr.set(getNativePtr(systemAssetManager));
32     assertThat(systemNativePtr.get()).isNotEqualTo(0);
33   }
34 
35   @Test
test2_verifySamePtr()36   public void test2_verifySamePtr() {
37     AssetManager systemAssetManager = Resources.getSystem().getAssets();
38     long nativePtr = getNativePtr(systemAssetManager);
39     assertThat(nativePtr).isEqualTo(systemNativePtr.get());
40   }
41 
42   @Test
test3_createApplicationAssets()43   public void test3_createApplicationAssets() {
44     AssetManager systemAssetManager = Resources.getSystem().getAssets();
45     Application application = RuntimeEnvironment.getApplication();
46     AssetManager assetManager = application.getAssets();
47     long nativePtr = getNativePtr(systemAssetManager);
48     long appNativePtr = getNativePtr(assetManager);
49     assertThat(nativePtr).isEqualTo(systemNativePtr.get());
50     assertThat(nativePtr).isNotEqualTo(appNativePtr);
51   }
52 
getNativePtr(AssetManager assetManager)53   private static long getNativePtr(AssetManager assetManager) {
54     return ((ShadowAssetManager) Shadow.extract(assetManager)).getNativePtr();
55   }
56 }
57