19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 171a44d5dcabc18cd5ef111f732ccff91683a1a093Neal Nguyenpackage android.os; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Build; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.test.suitebuilder.annotation.SmallTest; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.Assert; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport junit.framework.TestCase; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 26b7f0367cec1c744aa66ef397b0244e25d507491cDan Egnor * Provides test cases for android.os.Build and, in turn, many of the 27b7f0367cec1c744aa66ef397b0244e25d507491cDan Egnor * system properties set by the build system. 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class BuildTest extends TestCase { 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static final String TAG = "BuildTest"; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Asserts that a String is non-null and non-empty. If it is not, 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an AssertionFailedError is thrown with the given message. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static void assertNotEmpty(String message, String string) { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //Log.i(TAG, "" + message + ": " + string); 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotNull(message, string); 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertFalse(message, string.equals("")); 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Asserts that a String is non-null and non-empty. If it is not, 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an AssertionFailedError is thrown. 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static void assertNotEmpty(String string) { 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty(null, string); 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Asserts that all android.os.Build fields are non-empty and/or in a valid range. 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @SmallTest 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void testBuildFields() throws Exception { 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("ID", Build.ID); 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("DISPLAY", Build.DISPLAY); 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("PRODUCT", Build.PRODUCT); 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("DEVICE", Build.DEVICE); 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("BOARD", Build.BOARD); 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("BRAND", Build.BRAND); 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("MODEL", Build.MODEL); 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("VERSION.INCREMENTAL", Build.VERSION.INCREMENTAL); 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("VERSION.RELEASE", Build.VERSION.RELEASE); 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("TYPE", Build.TYPE); 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assert.assertNotNull("TAGS", Build.TAGS); // TAGS is allowed to be empty. 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("FINGERPRINT", Build.FINGERPRINT); 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Assert.assertTrue("TIME", Build.TIME > 0); 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("USER", Build.USER); 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project assertNotEmpty("HOST", Build.HOST); 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // TODO: if any of the android.os.Build fields have additional constraints 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // (e.g., must be a C identifier, must be a valid filename, must not contain any spaces) 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // add tests for them. 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 77