|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <windows.h> |
|
|
|
#include <cassert> |
|
#include <cstdio> |
|
#include <cstdlib> |
|
|
|
#include "TestUtil.cc" |
|
|
|
int main(int argc, char *argv[]) { |
|
if (argc == 1) { |
|
startChildProcess(L"CHILD"); |
|
return 0; |
|
} |
|
|
|
const HANDLE conout = GetStdHandle(STD_OUTPUT_HANDLE); |
|
|
|
SetConsoleTextAttribute(conout, 0x24); |
|
system("cls"); |
|
|
|
setWindowPos(0, 0, 1, 1); |
|
setBufferSize(80, 25); |
|
setWindowPos(0, 0, 80, 25); |
|
|
|
CHAR_INFO buf; |
|
COORD bufSize = { 1, 1 }; |
|
COORD bufCoord = { 0, 0 }; |
|
SMALL_RECT rect = { 5, 5, 5, 5 }; |
|
BOOL ret; |
|
DWORD actual; |
|
COORD writeCoord = { 5, 5 }; |
|
|
|
|
|
|
|
ret = ReadConsoleOutputW(conout, &buf, bufSize, bufCoord, &rect); |
|
assert(ret && buf.Char.UnicodeChar == L' ' && buf.Attributes == 0x24); |
|
|
|
|
|
ret = FillConsoleOutputCharacterW(conout, L'\0', 1, writeCoord, &actual); |
|
assert(ret && actual == 1); |
|
ret = ReadConsoleOutputW(conout, &buf, bufSize, bufCoord, &rect); |
|
assert(ret && buf.Char.UnicodeChar == L'\0' && buf.Attributes == 0x24); |
|
|
|
|
|
|
|
ret = FillConsoleOutputAttribute(conout, 0, 1, writeCoord, &actual); |
|
assert(ret && actual == 1); |
|
ret = ReadConsoleOutputW(conout, &buf, bufSize, bufCoord, &rect); |
|
assert(ret && buf.Char.UnicodeChar == L'\0' && buf.Attributes == 0); |
|
ret = FillConsoleOutputCharacterW(conout, L'X', 1, writeCoord, &actual); |
|
assert(ret && actual == 1); |
|
ret = ReadConsoleOutputW(conout, &buf, bufSize, bufCoord, &rect); |
|
assert(ret && buf.Char.UnicodeChar == L'X' && buf.Attributes == 0); |
|
|
|
|
|
countDown(3); |
|
|
|
ret = FillConsoleOutputAttribute(conout, 0x42, 1, writeCoord, &actual); |
|
assert(ret && actual == 1); |
|
|
|
countDown(5); |
|
} |
|
|