1 /* 2 * Copyright (C) 2016 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 #include "gtest/gtest.h" 18 19 #include "chre/platform/slpi/smgr/platform_sensor_util.h" 20 21 using chre::intervalToSmgrSamplingRate; 22 using chre::intervalToSmgrQ16ReportRate; 23 using chre::Milliseconds; 24 using chre::Nanoseconds; 25 using chre::Seconds; 26 27 TEST(SmgrSamplingRateTest, Zero) { 28 uint16_t rate = intervalToSmgrSamplingRate(Nanoseconds(0)); 29 EXPECT_EQ(rate, 0); 30 } 31 32 TEST(SmgrSamplingRateTest, FiftyHertz) { 33 constexpr Nanoseconds kFiftyHertzInterval = Milliseconds(20); 34 uint16_t rate = intervalToSmgrSamplingRate(kFiftyHertzInterval); 35 EXPECT_EQ(rate, 50); 36 } 37 38 TEST(SmgrSamplingRateTest, ZeroPointFiveHertz) { 39 constexpr Nanoseconds kZeroPointFiveHertzInterval = Seconds(2); 40 uint16_t rate = intervalToSmgrSamplingRate(kZeroPointFiveHertzInterval); 41 EXPECT_EQ(rate, 2000); 42 } 43 44 TEST(SmgrSamplingRateTest, MinisculeRate) { 45 constexpr Nanoseconds kOneNanoHzInterval = Seconds(1e9); 46 uint16_t rate = intervalToSmgrSamplingRate(kOneNanoHzInterval); 47 EXPECT_EQ(rate, INT16_MAX); 48 } 49 50 TEST(SmgrSamplingRateTest, HugeRate) { 51 constexpr Nanoseconds kTwentyMHzInterval = Nanoseconds(50); 52 uint16_t rate = intervalToSmgrSamplingRate(kTwentyMHzInterval); 53 EXPECT_EQ(rate, 1000); // Should clamp to inversion point 54 } 55 56 TEST(SmgrQ16ReportRateTest, Zero) { 57 uint32_t rate = intervalToSmgrQ16ReportRate(Nanoseconds(0)); 58 EXPECT_EQ(rate, INT32_MAX); 59 } 60 61 TEST(SmgrQ16ReportRateTest, FiftyHertz) { 62 constexpr Nanoseconds kTenHertzInterval = Milliseconds(20); 63 uint32_t rate = intervalToSmgrQ16ReportRate(kTenHertzInterval); 64 EXPECT_EQ(rate, 0x10000 * 50); 65 } 66 67 TEST(SmgrQ16ReportRateTest, ZeroPointFiveHertz) { 68 constexpr Nanoseconds kZeroPointFiveHertzInterval = Seconds(2); 69 uint32_t rate = intervalToSmgrQ16ReportRate(kZeroPointFiveHertzInterval); 70 EXPECT_EQ(rate, 0x10000 / 2); 71 } 72 73 TEST(SmgrQ16ReportRateTest, OneNanosecond) { 74 uint32_t rate = intervalToSmgrQ16ReportRate(Nanoseconds(1)); 75 EXPECT_EQ(rate, INT32_MAX); 76 } 77