summaryrefslogtreecommitdiff
path: root/tests/helpers/Drm.cpp
blob: 6ebc23675153d008173b93a572bbd52e0ac3ce65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#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);
}