Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #define LOG_TAG "Sensor_test"
     18 
     19 #include <sensor/Sensor.h>
     20 #include <hardware/sensors.h>
     21 #include <utils/Errors.h>
     22 
     23 #include <gtest/gtest.h>
     24 
     25 namespace android {
     26 
     27 // Returns true if the two sensors have the same attributes. Does not compare
     28 // UUID since that should not be transmitted via flatten/unflatten.
     29 static bool sensorsMatch(const Sensor& a, const Sensor& b) {
     30     return a.getName() == b.getName () &&
     31         a.getVendor() == b.getVendor () &&
     32         a.getHandle() == b.getHandle () &&
     33         a.getType() == b.getType () &&
     34         a.getMinValue() == b.getMinValue () &&
     35         a.getMaxValue() == b.getMaxValue () &&
     36         a.getResolution() == b.getResolution () &&
     37         a.getPowerUsage() == b.getPowerUsage () &&
     38         a.getMinDelay() == b.getMinDelay () &&
     39         a.getMinDelayNs() == b.getMinDelayNs () &&
     40         a.getVersion() == b.getVersion () &&
     41         a.getFifoReservedEventCount() == b.getFifoReservedEventCount () &&
     42         a.getFifoMaxEventCount() == b.getFifoMaxEventCount () &&
     43         a.getStringType() == b.getStringType () &&
     44         a.getRequiredPermission() == b.getRequiredPermission () &&
     45         a.isRequiredPermissionRuntime() == b.isRequiredPermissionRuntime () &&
     46         a.getRequiredAppOp() == b.getRequiredAppOp () &&
     47         a.getMaxDelay() == b.getMaxDelay () &&
     48         a.getFlags() == b.getFlags () &&
     49         a.isWakeUpSensor() == b.isWakeUpSensor () &&
     50         a.isDynamicSensor() == b.isDynamicSensor () &&
     51         a.hasAdditionalInfo() == b.hasAdditionalInfo () &&
     52         a.getReportingMode() == b.getReportingMode();
     53 }
     54 
     55 // Creates and returns a sensor_t struct with some default values filled in.
     56 static sensor_t getTestSensorT() {
     57     sensor_t hwSensor = {};
     58     hwSensor.name = "Test Sensor";
     59     hwSensor.vendor = "Test Vendor";
     60     hwSensor.version = 1;
     61     hwSensor.handle = 2;
     62     hwSensor.type = SENSOR_TYPE_ACCELEROMETER;
     63     hwSensor.maxRange = 10.f;
     64     hwSensor.resolution = 1.f;
     65     hwSensor.power = 5.f;
     66     hwSensor.minDelay = 1000;
     67     hwSensor.fifoReservedEventCount = 50;
     68     hwSensor.fifoMaxEventCount = 100;
     69     hwSensor.stringType = SENSOR_STRING_TYPE_ACCELEROMETER;
     70     hwSensor.requiredPermission = "";
     71     hwSensor.maxDelay = 5000;
     72     hwSensor.flags = SENSOR_FLAG_CONTINUOUS_MODE;
     73     return hwSensor;
     74 }
     75 
     76 TEST(SensorTest, FlattenAndUnflatten) {
     77     sensor_t hwSensor = getTestSensorT();
     78     Sensor sensor1(&hwSensor, SENSORS_DEVICE_API_VERSION_1_4);
     79     Sensor sensor2;
     80 
     81     std::vector<uint8_t> buffer(sensor1.getFlattenedSize());
     82     ASSERT_EQ(OK, sensor1.flatten(buffer.data(), buffer.size()));
     83     ASSERT_EQ(OK, sensor2.unflatten(buffer.data(), buffer.size()));
     84 
     85     EXPECT_TRUE(sensorsMatch(sensor1, sensor2));
     86 }
     87 
     88 } // namespace android
     89