OSDN Git Service

46ae2e5d57cef999c084337360db357afd8967fa
[winmerge-jp/winmerge-jp.git] / Testing / GoogleTest / diffutils / mystat_test.cpp
1 #include "pch.h"
2 #include <gtest/gtest.h>
3 #include <sys/stat.h>
4 #include "Environment.h"
5 #include "paths.h"
6 #include "diff.h"
7 #include <Windows.h>
8
9 TEST(diffutils, stat)
10 {
11         struct _stat64 buf, buf2, buf3, buf4, buf5;
12         String filename  = paths::ConcatPath(env::GetProgPath(), _T("../TestData/_tmp_test.txt"));
13         String filename2 = paths::ConcatPath(env::GetProgPath(), _T("../TestData/LeftAndRight.WinMerge"));
14         int fd;
15         EXPECT_EQ(0, _tsopen_s(&fd, filename.c_str(), _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE));
16         _write(fd, "0123456789", 10);
17         time_t t = time(&t);
18
19         EXPECT_EQ(0, myfstat(fd, &buf));
20         EXPECT_EQ(buf.st_size, 10);
21         EXPECT_EQ(t, buf.st_mtime);
22         EXPECT_NE(0, buf.st_mode & _S_IFREG);
23         EXPECT_NE(0, buf.st_mode & _S_IREAD);
24         EXPECT_NE(0, buf.st_mode & _S_IWRITE);
25         _close(fd);
26
27         mywstat(filename.c_str(), &buf2);
28         EXPECT_EQ(buf2.st_size, 10);
29         EXPECT_EQ(t, buf2.st_mtime);
30         EXPECT_NE(0, buf2.st_mode & _S_IFREG);
31         EXPECT_NE(0, buf2.st_mode & _S_IREAD);
32         EXPECT_NE(0, buf2.st_mode & _S_IWRITE);
33         _tremove(filename.c_str());
34
35         int fds[2];
36         char data[256];
37         EXPECT_EQ(0, _pipe(fds, 256, O_BINARY));
38         _write(fds[1], "0123456789", 10);
39         EXPECT_EQ(0, myfstat(fds[0], &buf3));
40         EXPECT_EQ(10, buf3.st_size);
41         EXPECT_NE(0, buf3.st_mode & _S_IFIFO);
42         _read(fds[0], data, sizeof(data));
43         _close(fds[0]);
44         _close(fds[1]);
45
46         _tsopen_s(&fd, _T("CON"), _O_TEXT, _SH_DENYNO, _S_IWRITE);
47         EXPECT_EQ(0, myfstat(fd, &buf4));
48         EXPECT_NE(0, buf4.st_mode & _S_IFCHR);
49         _close(fd);
50
51         _tsopen_s(&fd, _T("NUL"), _O_TEXT, _SH_DENYNO, _S_IWRITE);
52         EXPECT_EQ(0, myfstat(fd, &buf5));
53         EXPECT_NE(0, buf5.st_mode & _S_IFCHR);
54         _close(fd);
55
56         //EXPECT_EQ(-1, myfstat(999, &buf));
57         EXPECT_EQ(-1, myfstat(1, NULL));
58         EXPECT_EQ(-1, mywstat(L"aaaa", NULL));
59         EXPECT_EQ(-1, mywstat(L"aaaa", &buf2));
60         EXPECT_EQ(-1, mywstat(filename2.c_str(), NULL));
61
62         EXPECT_EQ(0, mywstat(L"CON", &buf2));
63         
64 }