blob: 47288f973a9c6424f3002e9a423eb04f14ab4660 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Build;
import java.io.File;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
@Config(manifest = Config.NONE)
@RunWith(RobolectricTestRunner.class)
public class PathUtilsTest {
private static final String APP_DATA_PATH = "/data/data/package_name";
@Test
public void canGetFilesDir() {
Context context = mock(Context.class);
when(context.getFilesDir()).thenReturn(new File(APP_DATA_PATH + "/files"));
assertEquals(PathUtils.getFilesDir(context), APP_DATA_PATH + "/files");
}
@Test
public void canOnlyGetFilesPathWhenDiskFullAndFilesDirNotCreated() {
Context context = mock(Context.class);
when(context.getFilesDir()).thenReturn(null);
if (Build.VERSION.SDK_INT >= 24) {
when(context.getDataDir()).thenReturn(new File(APP_DATA_PATH));
} else {
when(context.getApplicationInfo().dataDir).thenReturn(APP_DATA_PATH);
}
assertEquals(PathUtils.getFilesDir(context), APP_DATA_PATH + "/files");
}
@Test
public void canGetFlutterDataDir() {
Context context = mock(Context.class);
when(context.getDir("flutter", Context.MODE_PRIVATE))
.thenReturn(new File(APP_DATA_PATH + "/app_flutter"));
assertEquals(PathUtils.getDataDirectory(context), APP_DATA_PATH + "/app_flutter");
}
@Test
public void canOnlyGetFlutterDataPathWhenDiskFullAndFlutterDataDirNotCreated() {
Context context = mock(Context.class);
when(context.getDir("flutter", Context.MODE_PRIVATE)).thenReturn(null);
if (Build.VERSION.SDK_INT >= 24) {
when(context.getDataDir()).thenReturn(new File(APP_DATA_PATH));
} else {
when(context.getApplicationInfo().dataDir).thenReturn(APP_DATA_PATH);
}
assertEquals(PathUtils.getDataDirectory(context), APP_DATA_PATH + "/app_flutter");
}
@Test
public void canGetCacheDir() {
Context context = mock(Context.class);
when(context.getCacheDir()).thenReturn(new File(APP_DATA_PATH + "/cache"));
if (Build.VERSION.SDK_INT >= 21) {
when(context.getCodeCacheDir()).thenReturn(new File(APP_DATA_PATH + "/code_cache"));
}
assertTrue(PathUtils.getCacheDirectory(context).startsWith(APP_DATA_PATH));
}
@Test
public void canOnlyGetCachePathWhenDiskFullAndCacheDirNotCreated() {
Context context = mock(Context.class);
when(context.getCacheDir()).thenReturn(null);
if (Build.VERSION.SDK_INT >= 21) {
when(context.getCodeCacheDir()).thenReturn(null);
}
if (Build.VERSION.SDK_INT >= 24) {
when(context.getDataDir()).thenReturn(new File(APP_DATA_PATH));
} else {
when(context.getApplicationInfo().dataDir).thenReturn(APP_DATA_PATH);
}
assertEquals(PathUtils.getCacheDirectory(context), APP_DATA_PATH + "/cache");
}
}