Fix test.

This commit is contained in:
Victor Zverovich 2014-05-03 12:38:32 -07:00
parent c5c2cd63bc
commit 9556d3714d

View File

@ -150,17 +150,26 @@ TEST(FileTest, DefaultCtor) {
EXPECT_EQ(-1, f.get());
}
TEST(FileTest, OpenFileInCtor) {
FILE *f = 0;
{
File fd(".travis.yml", File::RDONLY);
f = fdopen(fd.get(), "r");
ASSERT_TRUE(f != 0);
// Checks if the file is open by reading one character from it.
bool IsOpen(int fd) {
char buffer;
return read(fd, &buffer, 1) == 1;
}
// Make sure fclose is called after the file descriptor is destroyed.
// Otherwise the destructor will report an error because fclose has
// already closed the file.
fclose(f);
bool IsClosed(int fd) {
char buffer;
std::streamsize result = read(fd, &buffer, 1);
return result == -1 && errno == EBADF;
}
TEST(FileTest, OpenFileInCtor) {
int fd = 0;
{
File f(".travis.yml", File::RDONLY);
fd = f.get();
ASSERT_TRUE(IsOpen(fd));
}
ASSERT_TRUE(IsClosed(fd));
}
TEST(FileTest, OpenFileError) {
@ -187,12 +196,6 @@ TEST(FileTest, MoveAssignment) {
EXPECT_EQ(-1, f.get());
}
bool IsClosed(int fd) {
char buffer;
std::streamsize result = read(fd, &buffer, 1);
return result == -1 && errno == EBADF;
}
TEST(FileTest, MoveAssignmentClosesFile) {
File f(".travis.yml", File::RDONLY);
File f2("CMakeLists.txt", File::RDONLY);