BUG=n/a TEST=./presubmit.sh Change-Id: Ic581ebe770c648ee344cfbe20ba6655786a2088e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/minigbm/+/5505015 Tested-by: Yiwei Zhang <zzyiwei@chromium.org> Reviewed-by: Satoshi Niwa <niwa@chromium.org> Commit-Queue: Yiwei Zhang <zzyiwei@chromium.org>
82 lines
2 KiB
C++
82 lines
2 KiB
C++
/* Copyright 2023 The ChromiumOS Authors
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*
|
|
* Test gbm.h module code using gtest.
|
|
*/
|
|
|
|
#include <drm/drm_fourcc.h>
|
|
#include <gmock/gmock.h>
|
|
#include <gtest/gtest.h>
|
|
#include <xf86drm.h>
|
|
|
|
#include "gbm.h"
|
|
|
|
class MockDrm
|
|
{
|
|
public:
|
|
MOCK_METHOD(drmVersionPtr, drmGetVersion, (int fd));
|
|
MOCK_METHOD(void, drmFreeVersion, (drmVersionPtr v));
|
|
};
|
|
|
|
// Define a mock version of drmGetVersion
|
|
drmVersionPtr drmGetVersion(int fd)
|
|
{
|
|
drmVersionPtr mock_version = new drmVersion();
|
|
mock_version->name = "Mock Backend";
|
|
return mock_version;
|
|
}
|
|
|
|
// Define a mock version of drmFreeVersion
|
|
void drmFreeVersion(drmVersionPtr v)
|
|
{
|
|
delete (v);
|
|
}
|
|
|
|
/* TODO : This is a protocol to add unit tests for the public APIs in minigbm.
|
|
*
|
|
* The ultimate goal would be cover more APIs and the input combinations.
|
|
* Set fd to 0 for now, it doesn't have any particular meaning
|
|
*/
|
|
|
|
TEST(gbm_unit_test, create_device)
|
|
{
|
|
MockDrm mock_drm; // Create a mock object
|
|
|
|
EXPECT_CALL(mock_drm, drmGetVersion(testing::_))
|
|
.WillRepeatedly(testing::Invoke(&mock_drm, &MockDrm::drmGetVersion));
|
|
|
|
struct gbm_device *gbm_device = gbm_create_device(0);
|
|
|
|
ASSERT_TRUE(gbm_device);
|
|
|
|
gbm_device_destroy(gbm_device);
|
|
}
|
|
|
|
TEST(gbm_unit_test, valid_fd)
|
|
{
|
|
MockDrm mock_drm; // Create a mock object
|
|
|
|
EXPECT_CALL(mock_drm, drmGetVersion(testing::_))
|
|
.WillRepeatedly(testing::Invoke(&mock_drm, &MockDrm::drmGetVersion));
|
|
struct gbm_device *gbm_device = gbm_create_device(99);
|
|
int fd = gbm_device_get_fd(gbm_device);
|
|
|
|
ASSERT_EQ(fd, 99);
|
|
|
|
gbm_device_destroy(gbm_device);
|
|
}
|
|
|
|
TEST(gbm_unit_test, valid_backend_name)
|
|
{
|
|
MockDrm mock_drm; // Create a mock object
|
|
|
|
EXPECT_CALL(mock_drm, drmGetVersion(testing::_))
|
|
.WillRepeatedly(testing::Invoke(&mock_drm, &MockDrm::drmGetVersion));
|
|
struct gbm_device *gbm_device = gbm_create_device(0);
|
|
const char *backend_name = gbm_device_get_backend_name(gbm_device);
|
|
|
|
ASSERT_STREQ(backend_name, "Mock Backend");
|
|
|
|
gbm_device_destroy(gbm_device);
|
|
}
|