|
@@ -43,6 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
#include "UnitTestPCH.h"
|
|
|
#include "IOStreamBuffer.h"
|
|
|
#include "TestIOStream.h"
|
|
|
+#include "UnitTestFileGenerator.h"
|
|
|
|
|
|
class IOStreamBufferTest : public ::testing::Test {
|
|
|
// empty
|
|
@@ -68,40 +69,59 @@ TEST_F( IOStreamBufferTest, accessCacheSizeTest ) {
|
|
|
EXPECT_EQ( 100U, myBuffer2.cacheSize() );
|
|
|
}
|
|
|
|
|
|
+const char data[]{"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Qui\
|
|
|
+sque luctus sem diam, ut eleifend arcu auctor eu. Vestibulum id est vel nulla l\
|
|
|
+obortis malesuada ut sed turpis. Nulla a volutpat tortor. Nunc vestibulum portt\
|
|
|
+itor sapien ornare sagittis volutpat."};
|
|
|
+
|
|
|
+
|
|
|
TEST_F( IOStreamBufferTest, open_close_Test ) {
|
|
|
IOStreamBuffer<char> myBuffer;
|
|
|
|
|
|
EXPECT_FALSE( myBuffer.open( nullptr ) );
|
|
|
EXPECT_FALSE( myBuffer.close() );
|
|
|
-
|
|
|
- char buffer[ L_tmpnam ];
|
|
|
- tmpnam( buffer );
|
|
|
- std::FILE *fs( std::fopen( buffer, "w+" ) );
|
|
|
- size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) );
|
|
|
+
|
|
|
+ const auto dataSize = sizeof(data);
|
|
|
+ const auto dataCount = dataSize / sizeof(*data);
|
|
|
+
|
|
|
+ char fname[]={ "octest.XXXXXX" };
|
|
|
+ auto* fs = MakeTmpFile(fname);
|
|
|
+ ASSERT_NE(nullptr, fs);
|
|
|
+
|
|
|
+ auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
|
|
|
EXPECT_NE( 0U, written );
|
|
|
std::fflush( fs );
|
|
|
+ {
|
|
|
+ TestDefaultIOStream myStream( fs, fname );
|
|
|
|
|
|
- TestDefaultIOStream myStream( fs, buffer );
|
|
|
-
|
|
|
- EXPECT_TRUE( myBuffer.open( &myStream ) );
|
|
|
- EXPECT_FALSE( myBuffer.open( &myStream ) );
|
|
|
- EXPECT_TRUE( myBuffer.close() );
|
|
|
+ EXPECT_TRUE( myBuffer.open( &myStream ) );
|
|
|
+ EXPECT_FALSE( myBuffer.open( &myStream ) );
|
|
|
+ EXPECT_TRUE( myBuffer.close() );
|
|
|
+ }
|
|
|
+ remove(fname);
|
|
|
}
|
|
|
|
|
|
TEST_F( IOStreamBufferTest, readlineTest ) {
|
|
|
- char buffer[ L_tmpnam ];
|
|
|
- tmpnam( buffer );
|
|
|
- std::FILE *fs( std::fopen( buffer, "w+" ) );
|
|
|
- size_t written( std::fwrite( buffer, 1, sizeof( char ) * L_tmpnam, fs ) );
|
|
|
+
|
|
|
+ const auto dataSize = sizeof(data);
|
|
|
+ const auto dataCount = dataSize / sizeof(*data);
|
|
|
+
|
|
|
+ char fname[]={ "readlinetest.XXXXXX" };
|
|
|
+ auto* fs = MakeTmpFile(fname);
|
|
|
+ ASSERT_NE(nullptr, fs);
|
|
|
+
|
|
|
+ auto written = std::fwrite( data, sizeof(*data), dataCount, fs );
|
|
|
EXPECT_NE( 0U, written );
|
|
|
std::fflush( fs );
|
|
|
|
|
|
- IOStreamBuffer<char> myBuffer( 26 );
|
|
|
- EXPECT_EQ( 26U, myBuffer.cacheSize() );
|
|
|
+ const auto tCacheSize = 26u;
|
|
|
+
|
|
|
+ IOStreamBuffer<char> myBuffer( tCacheSize );
|
|
|
+ EXPECT_EQ(tCacheSize, myBuffer.cacheSize() );
|
|
|
|
|
|
- TestDefaultIOStream myStream( fs, buffer );
|
|
|
- size_t size( myStream.FileSize() );
|
|
|
- size_t numBlocks( size / myBuffer.cacheSize() );
|
|
|
+ TestDefaultIOStream myStream( fs, fname );
|
|
|
+ auto size = myStream.FileSize();
|
|
|
+ auto numBlocks = size / myBuffer.cacheSize();
|
|
|
if ( size % myBuffer.cacheSize() > 0 ) {
|
|
|
numBlocks++;
|
|
|
}
|