From 8533c0b3ca7e01da82e207473b231ffab7faf4be Mon Sep 17 00:00:00 2001 From: Almaz Mingaleev Date: Fri, 16 Apr 2021 14:36:27 +0000 Subject: [PATCH] Add copy builder to TimeZoneCapabilities. This method is added to change capabilities more easily in Robolectric's TimeManager shadow class. Bug: 159891384 Test: atest core/tests/coretests/src/android/app/time/* Change-Id: I10b964666e93af9c2c4ead50088773a77521db65 --- .../app/time/TimeZoneCapabilities.java | 11 ++++ .../app/time/TimeZoneCapabilitiesTest.java | 58 +++++++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/core/java/android/app/time/TimeZoneCapabilities.java b/core/java/android/app/time/TimeZoneCapabilities.java index 433b4200eecec..895a8e491f8d0 100644 --- a/core/java/android/app/time/TimeZoneCapabilities.java +++ b/core/java/android/app/time/TimeZoneCapabilities.java @@ -207,6 +207,17 @@ public final class TimeZoneCapabilities implements Parcelable { mUserHandle = Objects.requireNonNull(userHandle); } + public Builder(@NonNull TimeZoneCapabilities capabilitiesToCopy) { + Objects.requireNonNull(capabilitiesToCopy); + mUserHandle = capabilitiesToCopy.mUserHandle; + mConfigureAutoDetectionEnabledCapability = + capabilitiesToCopy.mConfigureAutoDetectionEnabledCapability; + mConfigureGeoDetectionEnabledCapability = + capabilitiesToCopy.mConfigureGeoDetectionEnabledCapability; + mSuggestManualTimeZoneCapability = + capabilitiesToCopy.mSuggestManualTimeZoneCapability; + } + /** Sets the state for the automatic time zone detection enabled config. */ public Builder setConfigureAutoDetectionEnabledCapability(@CapabilityState int value) { this.mConfigureAutoDetectionEnabledCapability = value; diff --git a/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java b/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java index dd93997b00c57..008272830335a 100644 --- a/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java +++ b/core/tests/coretests/src/android/app/time/TimeZoneCapabilitiesTest.java @@ -20,6 +20,8 @@ import static android.app.time.Capabilities.CAPABILITY_NOT_ALLOWED; import static android.app.time.Capabilities.CAPABILITY_POSSESSED; import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNull; @@ -157,4 +159,60 @@ public class TimeZoneCapabilitiesTest { assertNull(capabilities.tryApplyConfigChanges(oldConfiguration, configChange)); } + + @Test + public void copyBuilder_copiesAllFields() { + TimeZoneCapabilities capabilities = new TimeZoneCapabilities.Builder(TEST_USER_HANDLE) + .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED) + .build(); + + { + TimeZoneCapabilities updatedCapabilities = + new TimeZoneCapabilities.Builder(capabilities) + .setConfigureAutoDetectionEnabledCapability(CAPABILITY_POSSESSED) + .build(); + TimeZoneCapabilities expectedCapabilities = + new TimeZoneCapabilities.Builder(TEST_USER_HANDLE) + .setConfigureAutoDetectionEnabledCapability(CAPABILITY_POSSESSED) + .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED) + .build(); + + assertThat(updatedCapabilities).isEqualTo(expectedCapabilities); + } + + { + TimeZoneCapabilities updatedCapabilities = + new TimeZoneCapabilities.Builder(capabilities) + .setConfigureGeoDetectionEnabledCapability(CAPABILITY_POSSESSED) + .build(); + + TimeZoneCapabilities expectedCapabilities = + new TimeZoneCapabilities.Builder(TEST_USER_HANDLE) + .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setConfigureGeoDetectionEnabledCapability(CAPABILITY_POSSESSED) + .setSuggestManualTimeZoneCapability(CAPABILITY_NOT_ALLOWED) + .build(); + + assertThat(updatedCapabilities).isEqualTo(expectedCapabilities); + } + + { + TimeZoneCapabilities updatedCapabilities = + new TimeZoneCapabilities.Builder(capabilities) + .setSuggestManualTimeZoneCapability(CAPABILITY_POSSESSED) + .build(); + + TimeZoneCapabilities expectedCapabilities = + new TimeZoneCapabilities.Builder(TEST_USER_HANDLE) + .setConfigureAutoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setConfigureGeoDetectionEnabledCapability(CAPABILITY_NOT_ALLOWED) + .setSuggestManualTimeZoneCapability(CAPABILITY_POSSESSED) + .build(); + + assertThat(updatedCapabilities).isEqualTo(expectedCapabilities); + } + } }