Fix AudioProductStrategy.equals implementation

... and add missing .hashCode overrides.

Bug: 281036492
Test: atest AudioProductStrategyTest
Change-Id: I09d23368b13052592fc8d27dd1ff985d3e508c6a
This commit is contained in:
Jan Sebechlebsky
2023-05-05 16:02:57 +02:00
parent 56675d076c
commit 7bd5ec2de8
2 changed files with 38 additions and 1 deletions

View File

@@ -203,10 +203,16 @@ public final class AudioProductStrategy implements Parcelable {
AudioProductStrategy thatStrategy = (AudioProductStrategy) o;
return mName == thatStrategy.mName && mId == thatStrategy.mId
return mId == thatStrategy.mId
&& Objects.equals(mName, thatStrategy.mName)
&& Arrays.equals(mAudioAttributesGroups, thatStrategy.mAudioAttributesGroups);
}
@Override
public int hashCode() {
return Objects.hash(mId, mName, Arrays.hashCode(mAudioAttributesGroups));
}
/**
* @param name of the product strategy
* @param id of the product strategy
@@ -460,6 +466,12 @@ public final class AudioProductStrategy implements Parcelable {
&& Arrays.equals(mAudioAttributes, thatAag.mAudioAttributes);
}
@Override
public int hashCode() {
return Objects.hash(mVolumeGroupId, mLegacyStreamType,
Arrays.hashCode(mAudioAttributes));
}
public int getStreamType() {
return mLegacyStreamType;
}

View File

@@ -29,11 +29,14 @@ import android.media.AudioManager;
import android.media.AudioSystem;
import android.media.audiopolicy.AudioProductStrategy;
import android.media.audiopolicy.AudioVolumeGroup;
import android.os.Parcel;
import android.platform.test.annotations.Presubmit;
import android.util.Log;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.common.testing.EqualsTester;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -231,4 +234,26 @@ public class AudioProductStrategyTest {
}
}
}
@Test
public void testEquals() {
final EqualsTester equalsTester = new EqualsTester();
AudioProductStrategy.getAudioProductStrategies().forEach(
strategy -> equalsTester.addEqualityGroup(strategy,
writeToAndFromParcel(strategy)));
equalsTester.testEquals();
}
private static AudioProductStrategy writeToAndFromParcel(
AudioProductStrategy audioProductStrategy) {
Parcel parcel = Parcel.obtain();
audioProductStrategy.writeToParcel(parcel, /*flags=*/0);
parcel.setDataPosition(0);
AudioProductStrategy unmarshalledAudioProductStrategy =
AudioProductStrategy.CREATOR.createFromParcel(parcel);
parcel.recycle();
return unmarshalledAudioProductStrategy;
}
}