| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- module Tests;
- import Core.Std;
- import Core.Clock;
- import Core.Logger;
- import Core.Terminal;
- import Core.TerminalConstants;
- import Core.Test;
- import Core.Vector;
- import Core.Types;
- import Core.ToString;
- #define KEY_CASE(key) \
- case key: puts(#key); break
- void testTerminal(bool tty) {
- Core::IntVector2 size = Core::getTerminalSize();
- if(tty) {
- Core::testTrue(size[0] > 0);
- Core::testTrue(size[1] > 0);
- Core::testFalse(Core::enterRawTerminal());
- Core::testFalse(Core::leaveRawTerminal());
- } else {
- Core::test(0, size[0]);
- Core::test(0, size[1]);
- }
- Core::enterAlternativeTerminal();
- Core::clearTerminal();
- Core::resetCursor();
- Core::logError("Not visible!");
- Core::leaveAlternativeTerminal();
- Core::logError("Not visible!");
- Core::moveCursorUp(2);
- Core::moveCursorDown(1);
- Core::moveCursorLeft(3);
- Core::moveCursorRight(3);
- Core::clearTerminalLine();
- Core::hideCursor();
- Core::showCursor();
- u64 u = Core::Terminal::KEY_F5 | Core::Terminal::KEY_SHIFT;
- Core::testTrue(Core::isSpecialChar(u));
- Core::SpecialChar s = Core::convertToSpecialChar(u);
- Core::test(Core::Terminal::KEY_F5, s.key);
- Core::testFalse(s.alt);
- Core::testFalse(s.control);
- Core::testTrue(s.shift);
- }
- void testInteractiveTerminal(void) {
- Core::enterAlternativeTerminal();
- Core::resetCursor();
- Core::hideCursor();
- puts("Hi there");
- Core::logWarning("This is a test");
- Core::IntVector2 v = Core::getTerminalSize();
- Core::print("{} {}\n", v[0], v[1]);
- Core::clearTerminal();
- Core::resetCursor();
- Core::showCursor();
- puts("the final!!!");
- Core::Clock::sleepMillis(500);
- Core::enterRawTerminal();
- while(true) {
- u64 c = Core::getRawChar();
- if(c == 'q') {
- break;
- } else if(c == 0) {
- continue;
- } else if(Core::isSpecialChar(c)) {
- Core::SpecialChar sc = Core::convertToSpecialChar(c);
- if(sc.shift) {
- Core::print("SHIFT + ");
- }
- if(sc.control) {
- Core::print("CTRL + ");
- }
- if(sc.alt) {
- Core::print("ALT + ");
- }
- switch(sc.key) {
- KEY_CASE(Core::Terminal::KEY_ARROW_LEFT);
- KEY_CASE(Core::Terminal::KEY_ARROW_RIGHT);
- KEY_CASE(Core::Terminal::KEY_ARROW_UP);
- KEY_CASE(Core::Terminal::KEY_ARROW_DOWN);
- KEY_CASE(Core::Terminal::KEY_DELETE);
- KEY_CASE(Core::Terminal::KEY_F1);
- KEY_CASE(Core::Terminal::KEY_F2);
- KEY_CASE(Core::Terminal::KEY_F3);
- KEY_CASE(Core::Terminal::KEY_F4);
- KEY_CASE(Core::Terminal::KEY_F5);
- KEY_CASE(Core::Terminal::KEY_F6);
- KEY_CASE(Core::Terminal::KEY_F7);
- KEY_CASE(Core::Terminal::KEY_F8);
- KEY_CASE(Core::Terminal::KEY_F9);
- KEY_CASE(Core::Terminal::KEY_F10);
- KEY_CASE(Core::Terminal::KEY_F11);
- KEY_CASE(Core::Terminal::KEY_F12);
- KEY_CASE(Core::Terminal::KEY_PAGE_UP);
- KEY_CASE(Core::Terminal::KEY_PAGE_DOWN);
- KEY_CASE(Core::Terminal::KEY_HOME);
- KEY_CASE(Core::Terminal::KEY_END);
- default: Core::print("{}\n", sc.key); break;
- }
- } else {
- Core::print("{}\n", c);
- }
- }
- Core::leaveRawTerminal();
- Core::leaveAlternativeTerminal();
- }
|