/* * Copyright (C) 2012 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. */ #define LOG_TAG "Sensor_test" #include <sensor/Sensor.h> #include <hardware/sensors.h> #include <utils/Errors.h> #include <gtest/gtest.h> namespace android { // Returns true if the two sensors have the same attributes. Does not compare // UUID since that should not be transmitted via flatten/unflatten. static bool sensorsMatch(const Sensor& a, const Sensor& b) { return a.getName() == b.getName () && a.getVendor() == b.getVendor () && a.getHandle() == b.getHandle () && a.getType() == b.getType () && a.getMinValue() == b.getMinValue () && a.getMaxValue() == b.getMaxValue () && a.getResolution() == b.getResolution () && a.getPowerUsage() == b.getPowerUsage () && a.getMinDelay() == b.getMinDelay () && a.getMinDelayNs() == b.getMinDelayNs () && a.getVersion() == b.getVersion () && a.getFifoReservedEventCount() == b.getFifoReservedEventCount () && a.getFifoMaxEventCount() == b.getFifoMaxEventCount () && a.getStringType() == b.getStringType () && a.getRequiredPermission() == b.getRequiredPermission () && a.isRequiredPermissionRuntime() == b.isRequiredPermissionRuntime () && a.getRequiredAppOp() == b.getRequiredAppOp () && a.getMaxDelay() == b.getMaxDelay () && a.getFlags() == b.getFlags () && a.isWakeUpSensor() == b.isWakeUpSensor () && a.isDynamicSensor() == b.isDynamicSensor () && a.hasAdditionalInfo() == b.hasAdditionalInfo () && a.getReportingMode() == b.getReportingMode(); } // Creates and returns a sensor_t struct with some default values filled in. static sensor_t getTestSensorT() { sensor_t hwSensor = {}; hwSensor.name = "Test Sensor"; hwSensor.vendor = "Test Vendor"; hwSensor.version = 1; hwSensor.handle = 2; hwSensor.type = SENSOR_TYPE_ACCELEROMETER; hwSensor.maxRange = 10.f; hwSensor.resolution = 1.f; hwSensor.power = 5.f; hwSensor.minDelay = 1000; hwSensor.fifoReservedEventCount = 50; hwSensor.fifoMaxEventCount = 100; hwSensor.stringType = SENSOR_STRING_TYPE_ACCELEROMETER; hwSensor.requiredPermission = ""; hwSensor.maxDelay = 5000; hwSensor.flags = SENSOR_FLAG_CONTINUOUS_MODE; return hwSensor; } TEST(SensorTest, FlattenAndUnflatten) { sensor_t hwSensor = getTestSensorT(); Sensor sensor1(&hwSensor, SENSORS_DEVICE_API_VERSION_1_4); Sensor sensor2; std::vector<uint8_t> buffer(sensor1.getFlattenedSize()); ASSERT_EQ(OK, sensor1.flatten(buffer.data(), buffer.size())); ASSERT_EQ(OK, sensor2.unflatten(buffer.data(), buffer.size())); EXPECT_TRUE(sensorsMatch(sensor1, sensor2)); } } // namespace android