1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.service.settings.preferences 18 19 import android.os.Parcel 20 import android.platform.test.annotations.RequiresFlagsEnabled 21 import android.platform.test.flag.junit.CheckFlagsRule 22 import android.platform.test.flag.junit.DeviceFlagsValueProvider 23 import androidx.test.ext.junit.runners.AndroidJUnit4 24 import androidx.test.filters.SmallTest 25 import com.android.settingslib.flags.Flags.FLAG_SETTINGS_CATALYST 26 import com.google.common.truth.Truth.assertThat 27 import org.junit.Rule 28 import org.junit.Test 29 import org.junit.runner.RunWith 30 31 @RunWith(AndroidJUnit4::class) 32 @SmallTest 33 @RequiresFlagsEnabled(FLAG_SETTINGS_CATALYST) 34 class GetValueResultTest { 35 36 @get:Rule 37 val checkFlagsRule: CheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule() 38 39 private val value: SettingsPreferenceValue 40 get() = SettingsPreferenceValue.Builder(SettingsPreferenceValue.TYPE_STRING) 41 .setStringValue("string") 42 .build() 43 private val metadata: SettingsPreferenceMetadata 44 get() = SettingsPreferenceMetadata.Builder("screenKey", "prefKey") 45 .setTitle("title") 46 .setEnabled(true) 47 .build() 48 49 @Test buildGetValueResult_failureResult_fieldsNullnull50 fun buildGetValueResult_failureResult_fieldsNull() { 51 val req = GetValueResult.Builder(GetValueResult.RESULT_UNAVAILABLE).build() 52 53 assertThat(req.resultCode).isEqualTo(GetValueResult.RESULT_UNAVAILABLE) 54 assertThat(req.value).isNull() 55 assertThat(req.metadata).isNull() 56 } 57 58 @Test buildGetValueResult_fieldsSetnull59 fun buildGetValueResult_fieldsSet() { 60 val req = GetValueResult.Builder(GetValueResult.RESULT_OK) 61 .setValue(value) 62 .setMetadata(metadata) 63 .build() 64 65 assertThat(req.resultCode).isEqualTo(GetValueResult.RESULT_OK) 66 assertThat(req.value!!.type).isEqualTo(SettingsPreferenceValue.TYPE_STRING) 67 assertThat(req.value!!.stringValue!!).isEqualTo("string") 68 with(req.metadata!!) { 69 assertThat(screenKey).isEqualTo("screenKey") 70 assertThat(key).isEqualTo("prefKey") 71 assertThat(title!!).isEqualTo("title") 72 assertThat(isEnabled).isTrue() 73 } 74 } 75 76 @Test buildGetValueResult_fromParcelablenull77 fun buildGetValueResult_fromParcelable() { 78 val old = GetValueResult.Builder(GetValueResult.RESULT_OK) 79 .setValue(value) 80 .setMetadata(metadata) 81 .build() 82 83 val parcel = Parcel.obtain() 84 old.writeToParcel(parcel, 0) 85 parcel.setDataPosition(0) 86 val new = GetValueResult.CREATOR.createFromParcel(parcel) 87 88 assertThat(new.resultCode).isEqualTo(GetValueResult.RESULT_OK) 89 assertThat(new.value!!.type).isEqualTo(SettingsPreferenceValue.TYPE_STRING) 90 assertThat(new.value!!.stringValue!!).isEqualTo("string") 91 with(new.metadata!!) { 92 assertThat(screenKey).isEqualTo("screenKey") 93 assertThat(key).isEqualTo("prefKey") 94 assertThat(title!!).isEqualTo("title") 95 assertThat(isEnabled).isTrue() 96 } 97 } 98 } 99