2 #include <gtest/gtest.h>
4 #include "Environment.h"
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"));
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);
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);
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());
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));
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);
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);
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));
62 EXPECT_EQ(0, mywstat(L"CON", &buf2));