blob: 74ba55cbbc845d6dd37c4d4cfd267cfcb3f7a2d1 [file] [log] [blame] [edit]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <string>
#include <base/containers/span.h>
#include <gtest/gtest.h>
#include "runtime_probe/functions/edid.h"
#include "runtime_probe/system/context_mock_impl.h"
#include "runtime_probe/utils/function_test_utils.h"
namespace runtime_probe {
namespace {
constexpr unsigned char kEdidTestData[] = {
0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x38, 0x70, 0x46, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x01, 0x04, 0xa5, 0x22, 0x13, 0x78,
0x02, 0x68, 0x50, 0x98, 0x5c, 0x58, 0x8e, 0x28, 0x1b, 0x50, 0x54, 0x00,
0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1a, 0x36, 0x80, 0xa0, 0x70, 0x38,
0x1f, 0x40, 0x30, 0x20, 0x35, 0x00, 0x58, 0xc2, 0x10, 0x00, 0x00, 0x1a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x43,
0x45, 0x43, 0x20, 0x50, 0x41, 0x4e, 0x44, 0x41, 0x20, 0x20, 0x20, 0x20,
0x00, 0x00, 0x00, 0xfe, 0x00, 0x4c, 0x4d, 0x31, 0x35, 0x36, 0x4c, 0x46,
0x2d, 0x35, 0x4c, 0x30, 0x34, 0x0a, 0x00, 0x11};
class EdidFunctionTest : public BaseFunctionTest {
public:
EdidFunctionTest() {
// Create card0/ but don't create card0/edid
SetFile("sys/class/drm/card0/unused", "");
SetFile("sys/class/drm/card0-DP-1/edid", "");
SetFile("sys/class/drm/card0-DP-2/edid", "");
SetFile("sys/class/drm/card0-eDP-1/edid", base::span{kEdidTestData});
}
};
TEST_F(EdidFunctionTest, ProbeEdid) {
auto probe_function = CreateProbeFunction<EdidFunction>();
auto result = EvalProbeFunction(probe_function.get());
auto ans = CreateProbeResultFromJson(R"JSON(
[
{
"height": "1080",
"product_id": "0046",
"vendor": "NCP",
"width": "1920"
}
]
)JSON");
ans[0].GetDict().Set(
"path", GetPathUnderRoot("sys/class/drm/card0-eDP-1/edid").value());
EXPECT_EQ(result, ans);
}
} // namespace
} // namespace runtime_probe