diff --git a/app/src/test/java/org/thoughtcrime/securesms/BaseUnitTest.java b/app/src/test/java/org/thoughtcrime/securesms/BaseUnitTest.java deleted file mode 100644 index 6299696f51..0000000000 --- a/app/src/test/java/org/thoughtcrime/securesms/BaseUnitTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.thoughtcrime.securesms; - -import android.content.Context; -import android.content.SharedPreferences; -import android.os.Handler; -import android.os.Looper; -import android.preference.PreferenceManager; -import android.text.TextUtils; - -import org.junit.Before; -import org.junit.Rule; -import org.mockito.Mock; -import org.mockito.MockedConstruction; -import org.mockito.MockedStatic; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; -import org.mockito.stubbing.Answer; -import org.signal.core.util.logging.Log; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.anyFloat; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.ArgumentMatchers.anyString; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public abstract class BaseUnitTest { - - @Rule - public MockitoRule rule = MockitoJUnit.rule(); - - @Mock - private MockedStatic looperMockedStatic; - - @Mock - private MockedStatic logMockedStatic; - - @Mock - private MockedStatic handlerMockedStatic; - - @Mock - private MockedStatic textUtilsMockedStatic; - - @Mock - private MockedStatic preferenceManagerMockedStatic; - - @Mock - private MockedConstruction handlerMockedConstruction; - - protected Context context = mock(Context.class); - protected SharedPreferences sharedPreferences = mock(SharedPreferences.class); - - @Before - public void setUp() throws Exception { - when(PreferenceManager.getDefaultSharedPreferences(any(Context.class))).thenReturn(sharedPreferences); - when(Looper.getMainLooper()).thenReturn(null); - - Answer logAnswer = (Answer) invocation -> { - final String tag = (String)invocation.getArguments()[0]; - final String msg = (String)invocation.getArguments()[1]; - System.out.println(invocation.getMethod().getName().toUpperCase() + "/[" + tag + "] " + msg); - return null; - }; - - logMockedStatic.when(() -> Log.d(anyString(), anyString())).thenAnswer(logAnswer); - logMockedStatic.when(() -> Log.i(anyString(), anyString())).thenAnswer(logAnswer); - logMockedStatic.when(() -> Log.w(anyString(), anyString())).thenAnswer(logAnswer); - logMockedStatic.when(() -> Log.e(anyString(), anyString())).thenAnswer(logAnswer); - - Answer isEmptyAnswer = invocation -> { - final String s = (String)invocation.getArguments()[0]; - return s == null || s.length() == 0; - }; - - textUtilsMockedStatic.when(() -> TextUtils.isEmpty(anyString())).thenAnswer(isEmptyAnswer); - - when(sharedPreferences.getString(anyString(), anyString())).thenReturn(""); - when(sharedPreferences.getLong(anyString(), anyLong())).thenReturn(0L); - when(sharedPreferences.getInt(anyString(), anyInt())).thenReturn(0); - when(sharedPreferences.getBoolean(anyString(), anyBoolean())).thenReturn(false); - when(sharedPreferences.getFloat(anyString(), anyFloat())).thenReturn(0f); - when(context.getSharedPreferences(anyString(), anyInt())).thenReturn(sharedPreferences); - when(context.getPackageName()).thenReturn("org.thoughtcrime.securesms"); - } -} diff --git a/app/src/test/java/org/thoughtcrime/securesms/service/BackListenerTest.kt b/app/src/test/java/org/thoughtcrime/securesms/service/BackListenerTest.kt index 2f2400a3a7..6756863966 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/service/BackListenerTest.kt +++ b/app/src/test/java/org/thoughtcrime/securesms/service/BackListenerTest.kt @@ -5,9 +5,9 @@ package org.thoughtcrime.securesms.service -import org.junit.Assert +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue import org.junit.Test -import org.thoughtcrime.securesms.BaseUnitTest import org.thoughtcrime.securesms.testutil.MockRandom import java.time.Duration import java.time.LocalDateTime @@ -15,14 +15,14 @@ import java.util.concurrent.TimeUnit import kotlin.time.Duration.Companion.days import kotlin.time.Duration.Companion.minutes -class BackListenerTest : BaseUnitTest() { +class BackListenerTest { @Test fun testBackupJitterExactlyWithinJitterWindow() { val jitterWindowSeconds = Math.toIntExact(TimeUnit.MINUTES.toSeconds(10)) val now = LocalDateTime.of(2024, 6, 7, 2, 55) val next = MessageBackupListener.getNextDailyBackupTimeFromNowWithJitter(now, 3, 0, jitterWindowSeconds) - Assert.assertEquals(8, next.dayOfMonth) + assertEquals(8, next.dayOfMonth) } @Test @@ -30,7 +30,7 @@ class BackListenerTest : BaseUnitTest() { val jitterWindowSeconds = Math.toIntExact(TimeUnit.MINUTES.toSeconds(10)) val now = LocalDateTime.of(2024, 6, 7, 2, 58) val next = MessageBackupListener.getNextDailyBackupTimeFromNowWithJitter(now, 3, 0, jitterWindowSeconds) - Assert.assertEquals(8, next.dayOfMonth) + assertEquals(8, next.dayOfMonth) } @Test @@ -38,7 +38,7 @@ class BackListenerTest : BaseUnitTest() { val jitterWindowSeconds = Math.toIntExact(TimeUnit.MINUTES.toSeconds(10)) val now = LocalDateTime.of(2024, 6, 7, 2, 54, 59) val next = MessageBackupListener.getNextDailyBackupTimeFromNowWithJitter(now, 3, 0, jitterWindowSeconds) - Assert.assertEquals(7, next.dayOfMonth) + assertEquals(7, next.dayOfMonth) } @Test @@ -46,7 +46,7 @@ class BackListenerTest : BaseUnitTest() { val jitterWindowSeconds = Math.toIntExact(TimeUnit.MINUTES.toSeconds(10)) val now = LocalDateTime.of(2024, 6, 7, 3, 15, 0) val next = MessageBackupListener.getNextDailyBackupTimeFromNowWithJitter(now, 3, 0, jitterWindowSeconds) - Assert.assertEquals(8, next.dayOfMonth) + assertEquals(8, next.dayOfMonth) } @Test @@ -56,6 +56,6 @@ class BackListenerTest : BaseUnitTest() { val now: LocalDateTime = LocalDateTime.of(2024, 6, 27, 23, 57, 0) val next: LocalDateTime = MessageBackupListener.getNextDailyBackupTimeFromNowWithJitter(now, 0, 0, jitterWindowSeconds, mockRandom) - Assert.assertTrue(Duration.between(now, next).toSeconds() > (1.days.inWholeSeconds - jitterWindowSeconds)) + assertTrue(Duration.between(now, next).toSeconds() > (1.days.inWholeSeconds - jitterWindowSeconds)) } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/service/VerificationCodeParserTest.java b/app/src/test/java/org/thoughtcrime/securesms/service/VerificationCodeParserTest.java index fdc0b03d98..2ea5ba8066 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/service/VerificationCodeParserTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/service/VerificationCodeParserTest.java @@ -5,9 +5,9 @@ package org.thoughtcrime.securesms.service; -import org.junit.Before; import org.junit.Test; -import org.thoughtcrime.securesms.BaseUnitTest; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import java.util.Arrays; import java.util.Collection; @@ -15,15 +15,22 @@ import java.util.Optional; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyBoolean; -import static org.mockito.ArgumentMatchers.contains; -import static org.mockito.Mockito.when; /** * Tests {@link VerificationCodeParser} */ -public class VerificationCodeParserTest extends BaseUnitTest { +@RunWith(Parameterized.class) +public class VerificationCodeParserTest { + private final String input; + private final String expectedOutput; + + public VerificationCodeParserTest(String input, String expectedOutput) { + this.input = input; + this.expectedOutput = expectedOutput; + } + + @Parameterized.Parameters(name = "{index}: test with input={0} and expectedOutput={1}") public static Collection challenges() { return Arrays.asList(new String[][]{ {"Your TextSecure verification code: 337-337", "337337"}, @@ -95,19 +102,10 @@ public class VerificationCodeParserTest extends BaseUnitTest { }); } - @Before - @Override - public void setUp() throws Exception { - super.setUp(); - when(sharedPreferences.getBoolean(contains("pref_verifying"), anyBoolean())).thenReturn(true); - } - @Test public void testChallenges() { - for (String[] challenge : challenges()) { - Optional result = VerificationCodeParser.parse(challenge[0]); - assertTrue(result.isPresent()); - assertEquals(challenge[1], result.get()); - } + Optional result = VerificationCodeParser.parse(input); + assertTrue(result.isPresent()); + assertEquals(expectedOutput, result.get()); } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/ListPartitionTest.java b/app/src/test/java/org/thoughtcrime/securesms/util/ListPartitionTest.java index 1ef955a831..519bc9e453 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/ListPartitionTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/util/ListPartitionTest.java @@ -1,14 +1,13 @@ package org.thoughtcrime.securesms.util; import org.junit.Test; -import org.thoughtcrime.securesms.BaseUnitTest; import java.util.LinkedList; import java.util.List; import static org.junit.Assert.assertEquals; -public class ListPartitionTest extends BaseUnitTest { +public class ListPartitionTest { @Test public void testPartitionEven() { List list = new LinkedList<>(); @@ -19,16 +18,16 @@ public class ListPartitionTest extends BaseUnitTest { List> partitions = Util.partition(list, 10); - assertEquals(partitions.size(), 10); + assertEquals(10, partitions.size()); int counter = 0; for (int i=0;i partition = partitions.get(i); - assertEquals(partition.size(), 10); + assertEquals(10, partition.size()); for (int j=0;j> partitions = Util.partition(list, 10); - assertEquals(partitions.size(), 11); + assertEquals(11, partitions.size()); int counter = 0; for (int i=0;i partition = partitions.get(i); - assertEquals(partition.size(), 10); + assertEquals(10, partition.size()); for (int j=0;j> partitions = Util.partition(list, 1); - assertEquals(partitions.size(), 100); + assertEquals(100, partitions.size()); int counter = 0; for (int i=0;i partition = partitions.get(i); - assertEquals(partition.size(), 1); + assertEquals(1, partition.size()); for (int j=0;j oldMap = new HashMap<>() {{ @@ -412,8 +411,4 @@ public class RemoteConfigTest extends BaseUnitTest { assertFalse(changes.containsKey("i")); assertEquals(new ConfigChange("gwen", "stacy"), changes.get("j")); } - - private static Set setOf(V... values) { - return new HashSet<>(Arrays.asList(values)); - } } diff --git a/app/src/test/java/org/thoughtcrime/securesms/util/Rfc5724UriTest.java b/app/src/test/java/org/thoughtcrime/securesms/util/Rfc5724UriTest.java index 91f1be83bf..925da6d430 100644 --- a/app/src/test/java/org/thoughtcrime/securesms/util/Rfc5724UriTest.java +++ b/app/src/test/java/org/thoughtcrime/securesms/util/Rfc5724UriTest.java @@ -18,14 +18,13 @@ package org.thoughtcrime.securesms.util; import org.junit.Test; -import org.thoughtcrime.securesms.BaseUnitTest; import java.net.URISyntaxException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; -public class Rfc5724UriTest extends BaseUnitTest { +public class Rfc5724UriTest { @Test public void testInvalidPath() { final String[] invalidSchemaUris = {