blob: 7e5a08e57b3f4b9a1f030fad509648149203ab36 [file]
// Copyright 2025 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <lib/thermal/linear_lookup_table.h>
#include <gtest/gtest.h>
namespace thermal {
namespace {
const linear_lookup_table::LinearLookupTable<int, int> kAscending({2, 4, 6, 8}, {10, 8, 6, 4});
const linear_lookup_table::LinearLookupTable<int, int> kDescending({{2, 6}, {4, 8}, {6, 10}});
} // namespace
TEST(LinearLookupTableTests, AscendingLookupY) {
auto result = kAscending.LookupY(3);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 9);
}
TEST(LinearLookupTableTests, AscendingLookupX) {
auto result = kAscending.LookupX(5);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 7);
}
TEST(LinearLookupTableTests, DescendingLookupY) {
auto result = kDescending.LookupY(3);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 7);
}
TEST(LinearLookupTableTests, DescendingLookupX) {
auto result = kDescending.LookupX(9);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 5);
}
TEST(LinearLookupTableTests, OutOfRange) {
{
auto result = kAscending.LookupY(1);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 10);
}
{
auto result = kAscending.LookupY(9);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 4);
}
{
auto result = kAscending.LookupX(11);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 2);
}
{
auto result = kAscending.LookupX(3);
ASSERT_TRUE(result.is_ok());
EXPECT_FLOAT_EQ(*result, 8);
}
}
} // namespace thermal