Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78cd1c3f authored by Ady Abraham's avatar Ady Abraham
Browse files

SurfaceFlinger: add unit test for AllowedDisplayConfigs

Add a new unit test for AllowedDisplayConfigs class.

Fixes: 124934007
Test: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest
Change-Id: I0b37ed969bc9ede3487fb6baaafd751b012ed4df
parent ea24c609
Loading
Loading
Loading
Loading
+96 −0
Original line number Diff line number Diff line
/*
 * Copyright 2019 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.
 */

#undef LOG_TAG
#define LOG_TAG "LibSurfaceFlingerUnittests"
#define LOG_NDEBUG 0

#include <memory>
#include <vector>

#include <gtest/gtest.h>

#include <log/log.h>

#include "AllowedDisplayConfigs.h"

namespace android {
namespace {

class AllowedDisplayConfigsTest : public testing::Test {
protected:
    AllowedDisplayConfigsTest();
    ~AllowedDisplayConfigsTest() override;

    void buildAllowedConfigs();

    const std::vector<int32_t> expectedConfigs = {0, 2, 7, 129};
    constexpr static int32_t notAllowedConfig = 5;
    std::unique_ptr<const AllowedDisplayConfigs> mAllowedConfigs;
};

AllowedDisplayConfigsTest::AllowedDisplayConfigsTest() {
    const ::testing::TestInfo* const test_info =
            ::testing::UnitTest::GetInstance()->current_test_info();
    ALOGD("**** Setting up for %s.%s\n", test_info->test_case_name(), test_info->name());
}

AllowedDisplayConfigsTest::~AllowedDisplayConfigsTest() {
    const ::testing::TestInfo* const test_info =
            ::testing::UnitTest::GetInstance()->current_test_info();
    ALOGD("**** Tearing down after %s.%s\n", test_info->test_case_name(), test_info->name());
}

void AllowedDisplayConfigsTest::buildAllowedConfigs() {
    AllowedDisplayConfigs::Builder builder;
    for (int config : expectedConfigs) {
        builder.addConfig(config);
    }
    mAllowedConfigs = builder.build();
}

/* ------------------------------------------------------------------------
 * Test cases
 */

TEST_F(AllowedDisplayConfigsTest, checkConfigs) {
    buildAllowedConfigs();

    // Check that all expected configs are allowed
    for (int config : expectedConfigs) {
        EXPECT_TRUE(mAllowedConfigs->isConfigAllowed(config));
    }

    // Check that all the allowed configs are expected
    std::vector<int32_t> allowedConfigVector;
    mAllowedConfigs->getAllowedConfigs(&allowedConfigVector);
    EXPECT_EQ(allowedConfigVector, expectedConfigs);

    // Check that notAllowedConfig is indeed not allowed
    EXPECT_TRUE(std::find(expectedConfigs.begin(), expectedConfigs.end(), notAllowedConfig) ==
                expectedConfigs.end());
    EXPECT_FALSE(mAllowedConfigs->isConfigAllowed(notAllowedConfig));
}

TEST_F(AllowedDisplayConfigsTest, getAllowedConfigsNullptr) {
    buildAllowedConfigs();

    // No other expectations rather than no crash
    mAllowedConfigs->getAllowedConfigs(nullptr);
}

} // namespace
} // namespace android
+1 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ cc_test {
    srcs: [
        ":libsurfaceflinger_sources",
        "libsurfaceflinger_unittest_main.cpp",
        "AllowedDisplayConfigsTest.cpp",
        "CompositionTest.cpp",
        "DisplayIdentificationTest.cpp",
        "DisplayTransactionTest.cpp",