chore: 清理残余文件
This commit is contained in:
101
node_modules/node-pty/deps/winpty/misc/ScreenBufferFreezeInactive.cc
generated
vendored
Normal file
101
node_modules/node-pty/deps/winpty/misc/ScreenBufferFreezeInactive.cc
generated
vendored
Normal file
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// Verify that console selection blocks writes to an inactive console screen
|
||||
// buffer. Writes TEST PASSED or TEST FAILED to the popup console window.
|
||||
//
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "TestUtil.cc"
|
||||
|
||||
const int SC_CONSOLE_MARK = 0xFFF2;
|
||||
const int SC_CONSOLE_SELECT_ALL = 0xFFF5;
|
||||
|
||||
bool g_useMark = false;
|
||||
|
||||
CALLBACK DWORD pausingThread(LPVOID dummy)
|
||||
{
|
||||
HWND hwnd = GetConsoleWindow();
|
||||
trace("Sending selection to freeze");
|
||||
SendMessage(hwnd, WM_SYSCOMMAND,
|
||||
g_useMark ? SC_CONSOLE_MARK :
|
||||
SC_CONSOLE_SELECT_ALL,
|
||||
0);
|
||||
Sleep(1000);
|
||||
trace("Sending escape WM_CHAR to unfreeze");
|
||||
SendMessage(hwnd, WM_CHAR, 27, 0x00010001);
|
||||
Sleep(1000);
|
||||
}
|
||||
|
||||
static HANDLE createBuffer() {
|
||||
HANDLE buf = CreateConsoleScreenBuffer(
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
CONSOLE_TEXTMODE_BUFFER,
|
||||
NULL);
|
||||
ASSERT(buf != INVALID_HANDLE_VALUE);
|
||||
return buf;
|
||||
}
|
||||
|
||||
static void runTest(bool useMark, bool createEarly) {
|
||||
trace("=======================================");
|
||||
trace("useMark=%d createEarly=%d", useMark, createEarly);
|
||||
g_useMark = useMark;
|
||||
HANDLE buf = INVALID_HANDLE_VALUE;
|
||||
|
||||
if (createEarly) {
|
||||
buf = createBuffer();
|
||||
}
|
||||
|
||||
CreateThread(NULL, 0,
|
||||
pausingThread, NULL,
|
||||
0, NULL);
|
||||
Sleep(500);
|
||||
|
||||
if (!createEarly) {
|
||||
trace("Creating buffer");
|
||||
TimeMeasurement tm1;
|
||||
buf = createBuffer();
|
||||
const double elapsed1 = tm1.elapsed();
|
||||
if (elapsed1 >= 0.250) {
|
||||
printf("!!! TEST FAILED !!!\n");
|
||||
Sleep(2000);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
trace("Writing to aux buffer");
|
||||
TimeMeasurement tm2;
|
||||
DWORD actual = 0;
|
||||
BOOL ret = WriteConsoleW(buf, L"HI", 2, &actual, NULL);
|
||||
const double elapsed2 = tm2.elapsed();
|
||||
trace("Writing to aux buffer: finished: ret=%d actual=%d (elapsed=%1.3f)", ret, actual, elapsed2);
|
||||
if (elapsed2 < 0.250) {
|
||||
printf("!!! TEST FAILED !!!\n");
|
||||
} else {
|
||||
printf("TEST PASSED\n");
|
||||
}
|
||||
Sleep(2000);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc == 1) {
|
||||
startChildProcess(L"child");
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::string arg = argv[1];
|
||||
if (arg == "child") {
|
||||
for (int useMark = 0; useMark <= 1; useMark++) {
|
||||
for (int createEarly = 0; createEarly <= 1; createEarly++) {
|
||||
runTest(useMark, createEarly);
|
||||
}
|
||||
}
|
||||
printf("done...\n");
|
||||
Sleep(1000);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user