浏览代码

Fixed IOStream reporting a file size of 0 for files that have been written, but not yet been flushed to disk.

Jared Mulconry 7 年之前
父节点
当前提交
4a915653f5
共有 2 个文件被更改,包括 16 次插入2 次删除
  1. 5 0
      test/unit/utDefaultIOStream.cpp
  2. 11 2
      test/unit/utIOStreamBuffer.cpp

+ 5 - 0
test/unit/utDefaultIOStream.cpp

@@ -69,6 +69,11 @@ TEST_F( utDefaultIOStream, FileSizeTest ) {
         auto vflush = std::fflush( fs );
         auto vflush = std::fflush( fs );
         ASSERT_EQ(vflush, 0);
         ASSERT_EQ(vflush, 0);
 
 
+		std::fclose(fs);
+		fs = std::fopen(fpath, "r");
+
+		ASSERT_NE(nullptr, fs);
+
         TestDefaultIOStream myStream( fs, fpath);
         TestDefaultIOStream myStream( fs, fpath);
         size_t size = myStream.FileSize();
         size_t size = myStream.FileSize();
         EXPECT_EQ( size, dataSize);
         EXPECT_EQ( size, dataSize);

+ 11 - 2
test/unit/utIOStreamBuffer.cpp

@@ -90,7 +90,11 @@ TEST_F( IOStreamBufferTest, open_close_Test ) {
     
     
     auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
     auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
     EXPECT_NE( 0U, written );
     EXPECT_NE( 0U, written );
-    std::fflush( fs );
+    auto flushResult = std::fflush( fs );
+	ASSERT_EQ(0, flushResult);
+	std::fclose( fs );
+	fs = std::fopen(fname, "r");
+	ASSERT_NE(nullptr, fs);
     {
     {
         TestDefaultIOStream myStream( fs, fname );
         TestDefaultIOStream myStream( fs, fname );
 
 
@@ -112,7 +116,12 @@ TEST_F( IOStreamBufferTest, readlineTest ) {
 
 
     auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
     auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
     EXPECT_NE( 0U, written );
     EXPECT_NE( 0U, written );
-    std::fflush( fs );
+
+	auto flushResult = std::fflush(fs);
+	ASSERT_EQ(0, flushResult);
+	std::fclose(fs);
+	fs = std::fopen(fname, "r");
+	ASSERT_NE(nullptr, fs);
 
 
     const auto tCacheSize = 26u;
     const auto tCacheSize = 26u;