| /* | |
| * Copyright (C) 2025 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. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package com.android.systemfeatures; | |
| import static com.android.systemfeatures.SystemFeaturesLookup.getDeclaredFeatureVarNameFromValue; | |
| import static com.google.common.truth.Truth.assertThat; | |
| import org.junit.Test; | |
| import org.junit.runner.RunWith; | |
| import org.junit.runners.JUnit4; | |
| @RunWith(JUnit4.class) | |
| public class SystemFeaturesLookupGeneratorTest { | |
| @Test | |
| public void testDeclaredFeatures() { | |
| // Public hardware features | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.bluetooth")) | |
| .isEqualTo("FEATURE_BLUETOOTH"); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.type.automotive")) | |
| .isEqualTo("FEATURE_AUTOMOTIVE"); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.type.pc")) | |
| .isEqualTo("FEATURE_PC"); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.type.television")) | |
| .isEqualTo("FEATURE_TELEVISION"); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.type.watch")) | |
| .isEqualTo("FEATURE_WATCH"); | |
| // Public software features | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.print")) | |
| .isEqualTo("FEATURE_PRINTING"); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.webview")) | |
| .isEqualTo("FEATURE_WEBVIEW"); | |
| // Public deprecated feature | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.vr.mode")) | |
| .isEqualTo("FEATURE_VR_MODE"); | |
| // TestApi feature | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.adoptable_storage")) | |
| .isEqualTo("FEATURE_ADOPTABLE_STORAGE"); | |
| // SystemApi feature | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.incremental_delivery")) | |
| .isEqualTo("FEATURE_INCREMENTAL_DELIVERY"); | |
| // Flagged feature | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.xr.input.controller")) | |
| .isEqualTo("FEATURE_XR_INPUT_CONTROLLER"); | |
| } | |
| @Test | |
| public void testUndeclaredFeatures() { | |
| assertThat(getDeclaredFeatureVarNameFromValue("")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("com.foo.")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("com.my.custom.feature")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.hardware.nonexistent")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.")).isNull(); | |
| assertThat(getDeclaredFeatureVarNameFromValue("android.software.nonexistent")).isNull(); | |
| } | |
| } |