blob: aee00ed26abde3da1b13ed89c5c66ba9125c0a9a [file] [log] [blame]
/*
* Copyright (C) 2013 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 android.hardware.cts;
import com.android.cts.util.ReportLog;
import com.android.cts.util.ResultType;
import com.android.cts.util.ResultUnit;
import android.app.Instrumentation;
import android.cts.util.DeviceReportLog;
import android.hardware.cts.helpers.SensorNotSupportedException;
import android.hardware.cts.helpers.SensorStats;
import android.test.AndroidTestCase;
import android.util.Log;
/**
* Test Case class that handles gracefully sensors that are not available in the device.
*/
public abstract class SensorTestCase extends AndroidTestCase {
// TODO: consolidate all log tags
protected final String LOG_TAG = "TestRunner";
protected SensorTestCase() {}
@Override
public void runTest() throws Throwable {
try {
super.runTest();
} catch (SensorNotSupportedException e) {
// the sensor is not supported/available in the device, log a warning and skip the test
Log.w(LOG_TAG, e.getMessage());
}
}
/**
* Utility method to log selected stats to a {@link ReportLog} object. The stats must be
* a number or an array of numbers.
*/
public static void logSelectedStatsToReportLog(Instrumentation instrumentation, int depth,
String[] keys, SensorStats stats) {
DeviceReportLog reportLog = new DeviceReportLog(depth);
for (String key : keys) {
Object value = stats.getValue(key);
if (value instanceof Integer) {
reportLog.printValue(key, (Integer) value, ResultType.NEUTRAL, ResultUnit.NONE);
} else if (value instanceof Double) {
reportLog.printValue(key, (Double) value, ResultType.NEUTRAL, ResultUnit.NONE);
} else if (value instanceof Float) {
reportLog.printValue(key, (Float) value, ResultType.NEUTRAL, ResultUnit.NONE);
} else if (value instanceof double[]) {
reportLog.printArray(key, (double[]) value, ResultType.NEUTRAL, ResultUnit.NONE);
} else if (value instanceof float[]) {
float[] tmpFloat = (float[]) value;
double[] tmpDouble = new double[tmpFloat.length];
for (int i = 0; i < tmpDouble.length; i++) tmpDouble[i] = tmpFloat[i];
reportLog.printArray(key, tmpDouble, ResultType.NEUTRAL, ResultUnit.NONE);
}
}
reportLog.printSummary("summary", 0, ResultType.NEUTRAL, ResultUnit.NONE);
reportLog.deliverReportToHost(instrumentation);
}
}