| 1301 | |
| 1302 | DOCTEST_CLANG_SUPPRESS_WARNING_WITH_PUSH("-Wdeprecated-declarations") |
| 1303 | void color_to_stream(std::ostream& s, Color::Enum code) { |
| 1304 | static_cast<void>(s); // for DOCTEST_CONFIG_COLORS_NONE or DOCTEST_CONFIG_COLORS_WINDOWS |
| 1305 | static_cast<void>(code); // for DOCTEST_CONFIG_COLORS_NONE |
| 1306 | #ifdef DOCTEST_CONFIG_COLORS_ANSI |
| 1307 | if(g_no_colors || |
| 1308 | (isatty(STDOUT_FILENO) == false && getContextOptions()->force_colors == false)) |
| 1309 | return; |
| 1310 | |
| 1311 | auto col = ""; |
| 1312 | // clang-format off |
| 1313 | switch(code) { //!OCLINT missing break in switch statement / unnecessary default statement in covered switch statement |
| 1314 | case Color::Red: col = "[0;31m"; break; |
| 1315 | case Color::Green: col = "[0;32m"; break; |
| 1316 | case Color::Blue: col = "[0;34m"; break; |
| 1317 | case Color::Cyan: col = "[0;36m"; break; |
| 1318 | case Color::Yellow: col = "[0;33m"; break; |
| 1319 | case Color::Grey: col = "[1;30m"; break; |
| 1320 | case Color::LightGrey: col = "[0;37m"; break; |
| 1321 | case Color::BrightRed: col = "[1;31m"; break; |
| 1322 | case Color::BrightGreen: col = "[1;32m"; break; |
| 1323 | case Color::BrightWhite: col = "[1;37m"; break; |
| 1324 | case Color::Bright: // invalid |
| 1325 | case Color::None: |
| 1326 | case Color::White: |
| 1327 | default: col = "[0m"; |
| 1328 | } |
| 1329 | // clang-format on |
| 1330 | s << "\033" << col; |
| 1331 | #endif // DOCTEST_CONFIG_COLORS_ANSI |
| 1332 | |
| 1333 | #ifdef DOCTEST_CONFIG_COLORS_WINDOWS |
| 1334 | if(g_no_colors || |
| 1335 | (_isatty(_fileno(stdout)) == false && getContextOptions()->force_colors == false)) |
| 1336 | return; |
| 1337 | |
| 1338 | static struct ConsoleHelper { |
| 1339 | HANDLE stdoutHandle; |
| 1340 | WORD origFgAttrs; |
| 1341 | WORD origBgAttrs; |
| 1342 | |
| 1343 | ConsoleHelper() { |
| 1344 | stdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); |
| 1345 | CONSOLE_SCREEN_BUFFER_INFO csbiInfo; |
| 1346 | GetConsoleScreenBufferInfo(stdoutHandle, &csbiInfo); |
| 1347 | origFgAttrs = csbiInfo.wAttributes & ~(BACKGROUND_GREEN | BACKGROUND_RED | |
| 1348 | BACKGROUND_BLUE | BACKGROUND_INTENSITY); |
| 1349 | origBgAttrs = csbiInfo.wAttributes & ~(FOREGROUND_GREEN | FOREGROUND_RED | |
| 1350 | FOREGROUND_BLUE | FOREGROUND_INTENSITY); |
| 1351 | } |
| 1352 | } ch; |
| 1353 | |
| 1354 | #define DOCTEST_SET_ATTR(x) SetConsoleTextAttribute(ch.stdoutHandle, x | ch.origBgAttrs) |
| 1355 | |
| 1356 | // clang-format off |
| 1357 | switch (code) { |
| 1358 | case Color::White: DOCTEST_SET_ATTR(FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_BLUE); break; |
| 1359 | case Color::Red: DOCTEST_SET_ATTR(FOREGROUND_RED); break; |
| 1360 | case Color::Green: DOCTEST_SET_ATTR(FOREGROUND_GREEN); break; |
no test coverage detected