1 #include <gtest/gtest.h>
3 #include "Environment.h"
10 struct _stat64 buf, buf2, buf3, buf4, buf5;
11 String filename = paths::ConcatPath(env::GetProgPath(), _T("../TestData/_tmp_test.txt"));
12 String filename2 = paths::ConcatPath(env::GetProgPath(), _T("../TestData/LeftAndRight.WinMerge"));
14 EXPECT_EQ(0, _tsopen_s(&fd, filename.c_str(), _O_RDWR | _O_CREAT, _SH_DENYNO, _S_IREAD | _S_IWRITE));
15 _write(fd, "0123456789", 10);
18 EXPECT_EQ(0, myfstat(fd, &buf));
19 EXPECT_EQ(buf.st_size, 10);
20 EXPECT_EQ(t, buf.st_mtime);
21 EXPECT_NE(0, buf.st_mode & _S_IFREG);
22 EXPECT_NE(0, buf.st_mode & _S_IREAD);
23 EXPECT_NE(0, buf.st_mode & _S_IWRITE);
26 mywstat(filename.c_str(), &buf2);
27 EXPECT_EQ(buf2.st_size, 10);
28 EXPECT_EQ(t, buf2.st_mtime);
29 EXPECT_NE(0, buf2.st_mode & _S_IFREG);
30 EXPECT_NE(0, buf2.st_mode & _S_IREAD);
31 EXPECT_NE(0, buf2.st_mode & _S_IWRITE);
32 _tremove(filename.c_str());
36 EXPECT_EQ(0, _pipe(fds, 256, O_BINARY));
37 _write(fds[1], "0123456789", 10);
38 EXPECT_EQ(0, myfstat(fds[0], &buf3));
39 EXPECT_EQ(10, buf3.st_size);
40 EXPECT_NE(0, buf3.st_mode & _S_IFIFO);
41 _read(fds[0], data, sizeof(data));
45 _tsopen_s(&fd, _T("CON"), _O_TEXT, _SH_DENYNO, _S_IWRITE);
46 EXPECT_EQ(0, myfstat(fd, &buf4));
47 EXPECT_NE(0, buf4.st_mode & _S_IFCHR);
50 _tsopen_s(&fd, _T("NUL"), _O_TEXT, _SH_DENYNO, _S_IWRITE);
51 EXPECT_EQ(0, myfstat(fd, &buf5));
52 EXPECT_NE(0, buf5.st_mode & _S_IFCHR);
55 //EXPECT_EQ(-1, myfstat(999, &buf));
56 EXPECT_EQ(-1, myfstat(1, NULL));
57 EXPECT_EQ(-1, mywstat(L"aaaa", NULL));
58 EXPECT_EQ(-1, mywstat(L"aaaa", &buf2));
59 EXPECT_EQ(-1, mywstat(filename2.c_str(), NULL));
61 EXPECT_EQ(0, mywstat(L"CON", &buf2));