@@ -352,3 +352,62 @@ VOID TEST(KernelLogTest, LogLevelStringV2)
352352 EXPECT_EQ (srs_get_log_level_v2 (" off" ), SrsLogLevelDisabled);
353353}
354354
355+ VOID TEST (KernelFileWriterTest, RealfileTest)
356+ {
357+ srs_error_t err;
358+
359+ string filename = " ./test-realfile.log" ;
360+ MockFileRemover disposer (filename);
361+
362+ if (true ) {
363+ SrsFileWriter f;
364+ HELPER_EXPECT_SUCCESS (f.open (filename));
365+ EXPECT_TRUE (f.is_open ());
366+ EXPECT_EQ (0 , f.tellg ());
367+
368+ HELPER_EXPECT_SUCCESS (f.write ((void *) " HelloWorld" , 10 , NULL ));
369+ EXPECT_EQ (10 , f.tellg ());
370+
371+ f.seek2 (5 );
372+ EXPECT_EQ (5 , f.tellg ());
373+
374+ HELPER_EXPECT_SUCCESS (f.write ((void *) " HelloWorld" , 10 , NULL ));
375+ EXPECT_EQ (15 , f.tellg ());
376+
377+ off_t v = 0 ;
378+ HELPER_EXPECT_SUCCESS (f.lseek (0 , SEEK_CUR, &v));
379+ EXPECT_EQ (15 , v);
380+
381+ HELPER_EXPECT_SUCCESS (f.lseek (0 , SEEK_SET, &v));
382+ EXPECT_EQ (0 , v);
383+
384+ HELPER_EXPECT_SUCCESS (f.lseek (10 , SEEK_SET, &v));
385+ EXPECT_EQ (10 , v);
386+
387+ HELPER_EXPECT_SUCCESS (f.lseek (0 , SEEK_END, &v));
388+ EXPECT_EQ (15 , v);
389+
390+ // There are 5 bytes empty lagging in file.
391+ HELPER_EXPECT_SUCCESS (f.lseek (5 , SEEK_END, &v));
392+ EXPECT_EQ (20 , v);
393+
394+ HELPER_EXPECT_SUCCESS (f.write ((void *) " HelloWorld" , 10 , NULL ));
395+ EXPECT_EQ (30 , f.tellg ());
396+
397+ HELPER_EXPECT_SUCCESS (f.lseek (0 , SEEK_SET, &v));
398+ EXPECT_EQ (0 , v);
399+
400+ HELPER_EXPECT_SUCCESS (f.write ((void *) " HelloWorld" , 10 , NULL ));
401+ EXPECT_EQ (10 , f.tellg ());
402+ }
403+
404+ SrsFileReader fr;
405+ HELPER_ASSERT_SUCCESS (fr.open (filename));
406+
407+ // "HelloWorldWorld\0\0\0\0\0HelloWorld"
408+ string str;
409+ HELPER_ASSERT_SUCCESS (srs_ioutil_read_all (&fr, str));
410+ EXPECT_STREQ (" HelloWorldWorld" , str.c_str ());
411+ EXPECT_STREQ (" HelloWorld" , str.substr (20 ).c_str ());
412+ }
413+
0 commit comments