@@ -381,7 +381,13 @@ class RedirectStdio
381381 {
382382 if (handleType == STD_INPUT_HANDLE)
383383 {
384- h = CreateFile (" CONIN$" , GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, 0 , OPEN_EXISTING, 0 , 0 );
384+ h = CreateFile (" CONIN$" ,
385+ GENERIC_READ | GENERIC_WRITE,
386+ FILE_SHARE_READ | FILE_SHARE_WRITE,
387+ nullptr ,
388+ OPEN_EXISTING,
389+ 0 ,
390+ 0 );
385391 } else
386392 {
387393 h = CreateConsoleScreenBuffer (GENERIC_READ | GENERIC_WRITE,
@@ -408,7 +414,7 @@ class RedirectStdio
408414 CONSOLE_SCREEN_BUFFER_INFO info;
409415 TEST (GetConsoleScreenBufferInfo (h, &info));
410416 TEST (info.dwSize .X > 0 && info.dwSize .Y > 0 );
411- nw ::cout << " Mock console buffer size: " << info.dwSize .X << " x" << info.dwSize .Y << " \n " ;
417+ std ::cout << " Mock console buffer size: " << info.dwSize .X << " x" << info.dwSize .Y << " \n " ;
412418
413419 std::wstring result;
414420 std::vector<wchar_t > buffer (info.dwSize .X );
@@ -426,7 +432,7 @@ class RedirectStdio
426432 return result;
427433 }
428434
429- void setBufferData (std::wstring data, int )
435+ void setBufferData (const std::wstring& data)
430436 {
431437 std::vector<INPUT_RECORD> buffer;
432438 buffer.reserve (data.size () * 2 + 2 );
@@ -460,22 +466,29 @@ class RedirectStdio
460466
461467void test_console ()
462468{
463- // cin
469+ std::cout << " Test cin console: " << std::flush;
464470 {
465471 RedirectStdio stdinHandle (STD_INPUT_HANDLE);
472+ std::cout << " stdin redirected, " << std::flush;
466473 // Recreate to react on redirected streams
467474 decltype (nw::cin) cin (nullptr );
475+ std::cout << " cin recreated " << std::flush;
468476 TEST (cin.rdbuf () != std::cin.rdbuf ());
477+ std::cout << " and validated" << std::endl;
469478 const std::string testStringIn1 = " Hello std in " ;
470479 const std::string testStringIn2 = " \xc3\xa4 - \xc3\xb6 - \xc3\xbc - \xd0\xbc - \xce\xbd " ;
471- stdinHandle.setBufferData (nw::widen (testStringIn1 + " \n " + testStringIn2 + " \n " ), 0 );
480+ std::cout << " Setting mock buffer data" << std::endl;
481+ stdinHandle.setBufferData (nw::widen (testStringIn1 + " \n " + testStringIn2 + " \n " ));
482+ std::cout << " Done" << std::endl;
472483 std::string line;
473484 TEST (std::getline (cin, line));
485+ std::cout << " ASCII line read" << std::endl;
474486 TEST_EQ (line, testStringIn1);
475487 TEST (std::getline (cin, line));
488+ std::cout << " UTF-8 line read" << std::endl;
476489 TEST_EQ (line, testStringIn2);
477490 }
478- // cout
491+ std::cout << " Test cout console " << std::endl;
479492 {
480493 RedirectStdio stdoutHandle (STD_OUTPUT_HANDLE);
481494 decltype (nw::cout) cout (true , nullptr );
@@ -487,7 +500,7 @@ void test_console()
487500 const auto data = stdoutHandle.getBufferData ();
488501 TEST_EQ (data, nw::widen (testString));
489502 }
490- // cerr
503+ std::cout << " Test cerr console " << std::endl;
491504 {
492505 RedirectStdio stderrHandle (STD_ERROR_HANDLE);
493506
@@ -500,6 +513,7 @@ void test_console()
500513 const auto data = stderrHandle.getBufferData ();
501514 TEST_EQ (data, nw::widen (testString));
502515 }
516+ std::cout << " Console tests done" << std::endl;
503517}
504518
505519#else
0 commit comments