Update OemNetworkPreferences to use 1:1 Map
Updated OemNetworkPreferences to use a Map instead of an Array of Arrays (SparseArray<List<String>>). This is for two reasons: to make the API simpler and also prevent issues with duplicate entries for packages mapped to more than one preference which is not supported. Bug: 176597181 Bug: 176494815 Test: atest FrameworksNetTests Change-Id: I85363e28b46b89ae60a85219313c2a45bd5e7dd5
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
* Copyright (C) 2021 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -20,22 +20,20 @@ import static com.android.testutils.MiscAsserts.assertThrows;
|
||||
import static com.android.testutils.ParcelUtils.assertParcelSane;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import android.os.Build;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
|
||||
import com.android.testutils.DevSdkIgnoreRunner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@IgnoreUpTo(Build.VERSION_CODES.R)
|
||||
@RunWith(DevSdkIgnoreRunner.class)
|
||||
@@ -45,51 +43,51 @@ public class OemNetworkPreferencesTest {
|
||||
private static final int TEST_PREF = OemNetworkPreferences.OEM_NETWORK_PREFERENCE_DEFAULT;
|
||||
private static final String TEST_PACKAGE = "com.google.apps.contacts";
|
||||
|
||||
private final List<String> mPackages = new ArrayList<>();
|
||||
private final OemNetworkPreferences.Builder mBuilder = new OemNetworkPreferences.Builder();
|
||||
|
||||
@Before
|
||||
public void beforeEachTestMethod() {
|
||||
mPackages.add(TEST_PACKAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void builderAddNetworkPreferenceRequiresNonNullPackages() {
|
||||
public void testBuilderAddNetworkPreferenceRequiresNonNullPackageName() {
|
||||
assertThrows(NullPointerException.class,
|
||||
() -> mBuilder.addNetworkPreference(TEST_PREF, null));
|
||||
() -> mBuilder.addNetworkPreference(null, TEST_PREF));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNetworkPreferencesReturnsCorrectValue() {
|
||||
final int expectedNumberOfMappings = 1;
|
||||
mBuilder.addNetworkPreference(TEST_PREF, mPackages);
|
||||
public void testBuilderRemoveNetworkPreferenceRequiresNonNullPackageName() {
|
||||
assertThrows(NullPointerException.class,
|
||||
() -> mBuilder.removeNetworkPreference(null));
|
||||
}
|
||||
|
||||
final SparseArray<List<String>> networkPreferences =
|
||||
@Test
|
||||
public void testGetNetworkPreferenceReturnsCorrectValue() {
|
||||
final int expectedNumberOfMappings = 1;
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
|
||||
final Map<String, Integer> networkPreferences =
|
||||
mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertEquals(expectedNumberOfMappings, networkPreferences.size());
|
||||
assertEquals(mPackages.size(), networkPreferences.get(TEST_PREF).size());
|
||||
assertEquals(mPackages.get(0), networkPreferences.get(TEST_PREF).get(0));
|
||||
assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getNetworkPreferencesReturnsUnmodifiableValue() {
|
||||
public void testGetNetworkPreferenceReturnsUnmodifiableValue() {
|
||||
final String newPackage = "new.com.google.apps.contacts";
|
||||
mBuilder.addNetworkPreference(TEST_PREF, mPackages);
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
|
||||
final SparseArray<List<String>> networkPreferences =
|
||||
final Map<String, Integer> networkPreferences =
|
||||
mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertThrows(UnsupportedOperationException.class,
|
||||
() -> networkPreferences.get(TEST_PREF).set(mPackages.size() - 1, newPackage));
|
||||
() -> networkPreferences.put(newPackage, TEST_PREF));
|
||||
|
||||
assertThrows(UnsupportedOperationException.class,
|
||||
() -> networkPreferences.get(TEST_PREF).add(newPackage));
|
||||
() -> networkPreferences.remove(TEST_PACKAGE));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringReturnsCorrectValue() {
|
||||
mBuilder.addNetworkPreference(TEST_PREF, mPackages);
|
||||
public void testToStringReturnsCorrectValue() {
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
|
||||
final String networkPreferencesString = mBuilder.build().getNetworkPreferences().toString();
|
||||
|
||||
@@ -99,10 +97,56 @@ public class OemNetworkPreferencesTest {
|
||||
|
||||
@Test
|
||||
public void testOemNetworkPreferencesParcelable() {
|
||||
mBuilder.addNetworkPreference(TEST_PREF, mPackages);
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
|
||||
final OemNetworkPreferences prefs = mBuilder.build();
|
||||
|
||||
assertParcelSane(prefs, 1 /* fieldCount */);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAddNetworkPreferenceOverwritesPriorPreference() {
|
||||
final int newPref = OemNetworkPreferences.OEM_NETWORK_PREFERENCE_OEM_PAID;
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
Map<String, Integer> networkPreferences =
|
||||
mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
assertEquals(networkPreferences.get(TEST_PACKAGE).intValue(), TEST_PREF);
|
||||
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, newPref);
|
||||
networkPreferences = mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
assertEquals(networkPreferences.get(TEST_PACKAGE).intValue(), newPref);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRemoveNetworkPreferenceRemovesValue() {
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
Map<String, Integer> networkPreferences =
|
||||
mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
|
||||
mBuilder.removeNetworkPreference(TEST_PACKAGE);
|
||||
networkPreferences = mBuilder.build().getNetworkPreferences();
|
||||
|
||||
assertFalse(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConstructorByOemNetworkPreferencesSetsValue() {
|
||||
mBuilder.addNetworkPreference(TEST_PACKAGE, TEST_PREF);
|
||||
OemNetworkPreferences networkPreference = mBuilder.build();
|
||||
|
||||
final Map<String, Integer> networkPreferences =
|
||||
new OemNetworkPreferences
|
||||
.Builder(networkPreference)
|
||||
.build()
|
||||
.getNetworkPreferences();
|
||||
|
||||
assertTrue(networkPreferences.containsKey(TEST_PACKAGE));
|
||||
assertEquals(networkPreferences.get(TEST_PACKAGE).intValue(), TEST_PREF);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user