16f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell/* 26f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * Copyright (C) 2012 The Android Open Source Project 36f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * 46f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * Licensed under the Apache License, Version 2.0 (the "License"); 56f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * you may not use this file except in compliance with the License. 66f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * You may obtain a copy of the License at 76f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * 86f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * http://www.apache.org/licenses/LICENSE-2.0 96f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * 106f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * Unless required by applicable law or agreed to in writing, software 116f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * distributed under the License is distributed on an "AS IS" BASIS, 126f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * See the License for the specific language governing permissions and 146f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell * limitations under the License. 156f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell */ 166f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 176f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell#define LOG_TAG "Sensor_test" 186f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 19801ea093b0e923a61b832f2adba698a273479880Mathias Agopian#include <sensor/Sensor.h> 206f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell#include <hardware/sensors.h> 216f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell#include <utils/Errors.h> 226f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 236f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell#include <gtest/gtest.h> 246f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 256f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursellnamespace android { 266f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 276f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell// Returns true if the two sensors have the same attributes. Does not compare 286f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell// UUID since that should not be transmitted via flatten/unflatten. 296f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursellstatic bool sensorsMatch(const Sensor& a, const Sensor& b) { 306f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell return a.getName() == b.getName () && 316f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getVendor() == b.getVendor () && 326f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getHandle() == b.getHandle () && 336f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getType() == b.getType () && 346f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getMinValue() == b.getMinValue () && 356f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getMaxValue() == b.getMaxValue () && 366f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getResolution() == b.getResolution () && 376f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getPowerUsage() == b.getPowerUsage () && 386f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getMinDelay() == b.getMinDelay () && 396f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getMinDelayNs() == b.getMinDelayNs () && 406f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getVersion() == b.getVersion () && 416f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getFifoReservedEventCount() == b.getFifoReservedEventCount () && 426f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getFifoMaxEventCount() == b.getFifoMaxEventCount () && 436f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getStringType() == b.getStringType () && 446f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getRequiredPermission() == b.getRequiredPermission () && 456f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.isRequiredPermissionRuntime() == b.isRequiredPermissionRuntime () && 466f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getRequiredAppOp() == b.getRequiredAppOp () && 476f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getMaxDelay() == b.getMaxDelay () && 486f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getFlags() == b.getFlags () && 496f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.isWakeUpSensor() == b.isWakeUpSensor () && 506f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.isDynamicSensor() == b.isDynamicSensor () && 516f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.hasAdditionalInfo() == b.hasAdditionalInfo () && 526f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell a.getReportingMode() == b.getReportingMode(); 536f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell} 546f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 556f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell// Creates and returns a sensor_t struct with some default values filled in. 566f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursellstatic sensor_t getTestSensorT() { 576f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell sensor_t hwSensor = {}; 586f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.name = "Test Sensor"; 596f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.vendor = "Test Vendor"; 606f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.version = 1; 616f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.handle = 2; 626f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.type = SENSOR_TYPE_ACCELEROMETER; 636f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.maxRange = 10.f; 646f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.resolution = 1.f; 656f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.power = 5.f; 666f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.minDelay = 1000; 676f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.fifoReservedEventCount = 50; 686f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.fifoMaxEventCount = 100; 696f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.stringType = SENSOR_STRING_TYPE_ACCELEROMETER; 706f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.requiredPermission = ""; 716f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.maxDelay = 5000; 726f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell hwSensor.flags = SENSOR_FLAG_CONTINUOUS_MODE; 736f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell return hwSensor; 746f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell} 756f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 766f09ce1dd6bba8550d05896a595caf1b9b47ba71David PursellTEST(SensorTest, FlattenAndUnflatten) { 776f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell sensor_t hwSensor = getTestSensorT(); 786f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell Sensor sensor1(&hwSensor, SENSORS_DEVICE_API_VERSION_1_4); 796f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell Sensor sensor2; 806f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 816f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell std::vector<uint8_t> buffer(sensor1.getFlattenedSize()); 826f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell ASSERT_EQ(OK, sensor1.flatten(buffer.data(), buffer.size())); 836f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell ASSERT_EQ(OK, sensor2.unflatten(buffer.data(), buffer.size())); 846f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 856f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell EXPECT_TRUE(sensorsMatch(sensor1, sensor2)); 866f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell} 876f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell 886f09ce1dd6bba8550d05896a595caf1b9b47ba71David Pursell} // namespace android 89