This reverts commit b7a9a2b7d5.
Reason for revert: Crash resolved by Ieb07b5bbc206f07f69e4afba921149f49d6fe8c4
Bug: 349870098
Change-Id: I49848f6e7311c1f44e6c988cb42107ed79da3a6b
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);
|
|
}
|