| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| package com.amaze.filemanager.utils; |
|
|
| import static android.os.Build.VERSION_CODES.LOLLIPOP; |
| import static android.os.Build.VERSION_CODES.N; |
| import static android.os.Build.VERSION_CODES.P; |
| import static com.amaze.filemanager.utils.Utils.formatTimer; |
| import static com.amaze.filemanager.utils.Utils.sanitizeInput; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertNull; |
| import static org.junit.Assert.assertTrue; |
| import static org.mockito.Mockito.mock; |
|
|
| import java.io.File; |
| import java.lang.reflect.Field; |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Collections; |
|
|
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| import org.robolectric.annotation.Config; |
| import org.robolectric.shadows.ShadowToast; |
|
|
| import com.amaze.filemanager.R; |
| import com.amaze.filemanager.fileoperations.filesystem.OpenMode; |
| import com.amaze.filemanager.filesystem.HybridFileParcelable; |
|
|
| import android.net.Uri; |
| import android.os.Build; |
| import android.os.storage.StorageVolume; |
|
|
| import androidx.test.core.app.ApplicationProvider; |
| import androidx.test.ext.junit.runners.AndroidJUnit4; |
|
|
| @RunWith(AndroidJUnit4.class) |
| @Config(sdk = {LOLLIPOP, P, Build.VERSION_CODES.R}) |
| public class UtilsTest { |
|
|
| @Test |
| public void testSanitizeInput() { |
| |
| |
| assertEquals("a", sanitizeInput("|a|")); |
| assertEquals("a", sanitizeInput("...a...")); |
| assertEquals("a", sanitizeInput(";a;")); |
| assertEquals("a", sanitizeInput("&&a&&")); |
| assertEquals( |
| "a", |
| sanitizeInput("|a...")); |
| assertEquals( |
| "an apple", |
| sanitizeInput("an &&apple")); |
| assertEquals( |
| "an apple", |
| sanitizeInput("an ...apple")); |
| assertEquals( |
| "an apple.", |
| sanitizeInput( |
| ";an |apple....")); |
| |
| } |
|
|
| @Test |
| public void testFormatTimer() { |
| assertEquals("10:00", formatTimer(600)); |
| assertEquals("00:00", formatTimer(0)); |
| assertEquals("00:45", formatTimer(45)); |
| assertEquals("02:45", formatTimer(165)); |
| assertEquals("30:33", formatTimer(1833)); |
| } |
|
|
| @Test |
| public void testDifferenceStrings() { |
| assertNull(Utils.differenceStrings(null, null)); |
| assertEquals("abc", Utils.differenceStrings("abc", null)); |
| assertEquals("abc", Utils.differenceStrings(null, "abc")); |
| assertEquals("", Utils.differenceStrings("abc12345", "abc")); |
| assertEquals("", Utils.differenceStrings("pqrstuv345", "pqrstuv")); |
| assertEquals("12345", Utils.differenceStrings("abc", "abc12345")); |
| } |
|
|
| @Test |
| public void testGetUriForBaseFile() { |
| HybridFileParcelable file = new HybridFileParcelable("/storage/emulated/0/test.txt"); |
| for (OpenMode m : new OpenMode[] {OpenMode.FILE, OpenMode.ROOT}) { |
| file.setMode(m); |
| Uri uri = Utils.getUriForBaseFile(ApplicationProvider.getApplicationContext(), file); |
| if (Build.VERSION.SDK_INT < N) { |
| assertEquals("file:///storage/emulated/0/test.txt", uri.toString()); |
| } else { |
| assertEquals( |
| "content://" |
| + ApplicationProvider.getApplicationContext().getPackageName() |
| + "/storage_root/storage/emulated/0/test.txt", |
| uri.toString()); |
| } |
| } |
|
|
| for (OpenMode m : |
| new OpenMode[] { |
| OpenMode.DROPBOX, OpenMode.GDRIVE, OpenMode.ONEDRIVE, OpenMode.SMB, OpenMode.BOX |
| }) { |
| file = new HybridFileParcelable("/foo/bar/test.txt"); |
| file.setMode(m); |
| assertNull(Utils.getUriForBaseFile(ApplicationProvider.getApplicationContext(), file)); |
| assertEquals( |
| ApplicationProvider.getApplicationContext().getString(R.string.smb_launch_error), |
| ShadowToast.getTextOfLatestToast()); |
| } |
|
|
| file.setMode(OpenMode.CUSTOM); |
| assertNull(Utils.getUriForBaseFile(ApplicationProvider.getApplicationContext(), file)); |
| } |
|
|
| @Test |
| public void testIsNullOrEmptyCollection() { |
| assertTrue(Utils.isNullOrEmpty((Collection<Void>) null)); |
| assertTrue(Utils.isNullOrEmpty(Collections.EMPTY_SET)); |
| assertFalse(Utils.isNullOrEmpty(Collections.singletonList(null))); |
| assertFalse(Utils.isNullOrEmpty(Arrays.asList(new Object()))); |
| Collection<Object> l = new ArrayList<Object>(); |
| l.add(new Object()); |
| assertFalse(Utils.isNullOrEmpty(l)); |
| } |
|
|
| @Test |
| public void testIsNullOrEmptyString() { |
| assertTrue(Utils.isNullOrEmpty((String) null)); |
| assertTrue(Utils.isNullOrEmpty("")); |
| assertFalse(Utils.isNullOrEmpty("null")); |
| assertFalse(Utils.isNullOrEmpty("empty")); |
| assertFalse(Utils.isNullOrEmpty("this is a string")); |
| } |
|
|
| @Test |
| @Config(sdk = {P}) |
| public void testGetVolumeDirectory() throws Exception { |
| StorageVolume mock = mock(StorageVolume.class); |
| Field f = StorageVolume.class.getDeclaredField("mPath"); |
| f.setAccessible(true); |
| f.set(mock, new File("/storage/emulated/0")); |
|
|
| File result = Utils.getVolumeDirectory(mock); |
| assertNotNull(result); |
| assertEquals(new File("/storage/emulated/0"), result); |
| } |
| } |
|
|