Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bab932f2 authored by Matías Hernández's avatar Matías Hernández
Browse files

Generate sequential instead of random rule ids in TestModeBuilder

Because we were only generating numbers between 0 and 1000 for whatever reason, there was a relatively high chance that two Modes could end up with the same id. This is generally not a problem because ZenMode has a well-defined equals method and we rarely use the ids except for API calls (which unit tests don't exercise). However some parts of the code (notably ModesDialogViewModel) do match modes by id (for visual stability), so collisions would lead to wrong results and test flakiness.

With this change we will only get collisions if a test uses a list containing 4294967296 modes. Good luck with that!

Fixes: 391727306
Test: atest ModesDialogViewModelTest
Flag: TEST_ONLY
Change-Id: I1b7dfdd18f41ffe04bba7b2d6a54f53f259a0a05
parent 7e6a7855
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -33,10 +33,12 @@ import android.service.notification.ZenPolicy;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;

import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;

public class TestModeBuilder {

    private static final AtomicInteger sNextId = new AtomicInteger(0);

    private String mId;
    private AutomaticZenRule mRule;
    private ZenModeConfig.ZenRule mConfigZenRule;
@@ -47,7 +49,7 @@ public class TestModeBuilder {

    public TestModeBuilder() {
        // Reasonable defaults
        int id = new Random().nextInt(1000);
        int id = sNextId.incrementAndGet();
        mId = "rule_" + id;
        mRule = new AutomaticZenRule.Builder("Test Rule #" + id, Uri.parse("rule://" + id))
                .setPackage("some_package")