Loading core/java/android/net/ScoredNetwork.java +23 −6 Original line number Diff line number Diff line Loading @@ -16,18 +16,14 @@ package android.net; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import java.lang.Math; import java.lang.UnsupportedOperationException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; import java.util.Set; /** * A network identifier along with a score for the quality of that network. Loading Loading @@ -195,7 +191,28 @@ public class ScoredNetwork implements Parcelable { return Objects.equals(networkKey, that.networkKey) && Objects.equals(rssiCurve, that.rssiCurve) && Objects.equals(meteredHint, that.meteredHint) && Objects.equals(attributes, that.attributes); && bundleEquals(attributes, that.attributes); } private boolean bundleEquals(Bundle bundle1, Bundle bundle2) { if (bundle1 == bundle2) { return true; } if (bundle1 == null || bundle2 == null) { return false; } if (bundle1.size() != bundle2.size()) { return false; } Set<String> keys = bundle1.keySet(); for (String key : keys) { Object value1 = bundle1.get(key); Object value2 = bundle2.get(key); if (!Objects.equals(value1, value2)) { return false; } } return true; } @Override Loading core/tests/coretests/src/android/net/ScoredNetworkTest.java +49 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,55 @@ public class ScoredNetworkTest { private static final NetworkKey KEY = new NetworkKey(new WifiKey("\"ssid\"", "00:00:00:00:00:00")); @Test public void scoredNetworksWithBothNullAttributeBundle_equal() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); assertTrue(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithOneNullAttributeBundle_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithDifferentSizedAttributeBundle_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); Bundle attr = new Bundle(ATTRIBUTES); attr.putBoolean(ScoredNetwork.ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL, true); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithDifferentAttributeValues_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); Bundle attr = new Bundle(); attr.putInt(ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET, Integer.MIN_VALUE); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithSameAttributeValuesAndSize_equal() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); assertTrue(scoredNetwork1.equals(scoredNetwork2)); } @Test public void calculateRankingOffsetShouldThrowUnsupportedOperationException() { // No curve or ranking score offset set in curve Loading Loading
core/java/android/net/ScoredNetwork.java +23 −6 Original line number Diff line number Diff line Loading @@ -16,18 +16,14 @@ package android.net; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import java.lang.Math; import java.lang.UnsupportedOperationException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; import java.util.Set; /** * A network identifier along with a score for the quality of that network. Loading Loading @@ -195,7 +191,28 @@ public class ScoredNetwork implements Parcelable { return Objects.equals(networkKey, that.networkKey) && Objects.equals(rssiCurve, that.rssiCurve) && Objects.equals(meteredHint, that.meteredHint) && Objects.equals(attributes, that.attributes); && bundleEquals(attributes, that.attributes); } private boolean bundleEquals(Bundle bundle1, Bundle bundle2) { if (bundle1 == bundle2) { return true; } if (bundle1 == null || bundle2 == null) { return false; } if (bundle1.size() != bundle2.size()) { return false; } Set<String> keys = bundle1.keySet(); for (String key : keys) { Object value1 = bundle1.get(key); Object value2 = bundle2.get(key); if (!Objects.equals(value1, value2)) { return false; } } return true; } @Override Loading
core/tests/coretests/src/android/net/ScoredNetworkTest.java +49 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,55 @@ public class ScoredNetworkTest { private static final NetworkKey KEY = new NetworkKey(new WifiKey("\"ssid\"", "00:00:00:00:00:00")); @Test public void scoredNetworksWithBothNullAttributeBundle_equal() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); assertTrue(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithOneNullAttributeBundle_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, null /* attributes */); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithDifferentSizedAttributeBundle_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); Bundle attr = new Bundle(ATTRIBUTES); attr.putBoolean(ScoredNetwork.ATTRIBUTES_KEY_HAS_CAPTIVE_PORTAL, true); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithDifferentAttributeValues_notEqual() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); Bundle attr = new Bundle(); attr.putInt(ScoredNetwork.ATTRIBUTES_KEY_RANKING_SCORE_OFFSET, Integer.MIN_VALUE); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, attr); assertFalse(scoredNetwork1.equals(scoredNetwork2)); } @Test public void scoredNetworksWithSameAttributeValuesAndSize_equal() { ScoredNetwork scoredNetwork1 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); ScoredNetwork scoredNetwork2 = new ScoredNetwork(KEY, CURVE, false /* meteredHint */, ATTRIBUTES); assertTrue(scoredNetwork1.equals(scoredNetwork2)); } @Test public void calculateRankingOffsetShouldThrowUnsupportedOperationException() { // No curve or ranking score offset set in curve Loading