mirror of
https://github.com/hyprwm/Hyprland
synced 2026-05-07 06:38:03 +02:00
33 lines
702 B
C++
33 lines
702 B
C++
|
|
#include <helpers/Drm.hpp>
|
||
|
|
|
||
|
|
#include <gtest/gtest.h>
|
||
|
|
|
||
|
|
#include <fcntl.h>
|
||
|
|
#include <sys/stat.h>
|
||
|
|
#include <unistd.h>
|
||
|
|
|
||
|
|
TEST(Helpers, drmDevIDFromFDCharacterDevice) {
|
||
|
|
const int FD = open("/dev/null", O_RDONLY | O_CLOEXEC);
|
||
|
|
ASSERT_GE(FD, 0);
|
||
|
|
|
||
|
|
struct stat stat = {};
|
||
|
|
ASSERT_EQ(fstat(FD, &stat), 0);
|
||
|
|
|
||
|
|
const auto devID = DRM::devIDFromFD(FD);
|
||
|
|
EXPECT_TRUE(devID.has_value());
|
||
|
|
EXPECT_EQ(*devID, stat.st_rdev);
|
||
|
|
|
||
|
|
close(FD);
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(Helpers, drmDevIDFromFDRejectsRegularFiles) {
|
||
|
|
char path[] = "/tmp/hyprland-drm-testXXXXXX";
|
||
|
|
const int FD = mkstemp(path);
|
||
|
|
ASSERT_GE(FD, 0);
|
||
|
|
|
||
|
|
EXPECT_FALSE(DRM::devIDFromFD(FD).has_value());
|
||
|
|
|
||
|
|
close(FD);
|
||
|
|
unlink(path);
|
||
|
|
}
|