123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275 |
- #include "terminal.h"
- #include "gtest/gtest.h"
- #include <string>
- console_details console;
- const std::string reset("\x1b[0m\x1b[2J\x1b[1;1H");
- #define GTEST_COUT std::cerr << "[ ] [ INFO ]"
- namespace {
- TEST(ConsoleInit, init) {
- console_init(&console);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 0);
- ASSERT_EQ(console.in_ansi, 0);
- ASSERT_EQ(console.ansi[0], 0);
- ASSERT_EQ(console.status, 0);
- ASSERT_EQ(console.bgcolor, 0);
- ASSERT_EQ(console.fgcolor, 7);
-
- console_receive(&console, reset);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 0);
- ASSERT_EQ(console.in_ansi, 0);
- ASSERT_EQ(console.ansi[0], 0);
- ASSERT_EQ(console.status, 0);
- ASSERT_EQ(console.bgcolor, 0);
- ASSERT_EQ(console.fgcolor, 7);
- }
- TEST(ConsoleBasic, simpleString) {
- console_init(&console);
- std::string send("Hello");
- console_receive(&console, send);
- ASSERT_NE(console.posx, 0);
- ASSERT_EQ(console.posx, (int)send.size());
- ASSERT_EQ(console.posy, 0);
- console_receive(&console, reset);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 0);
- send = "Hello\r\n";
- console_receive(&console, send);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 1);
- }
- TEST(ConsolePosition, simplePositions) {
- console_init(&console);
- std::string send("\x1b[10;5H");
- console_receive(&console, send);
- ASSERT_EQ(console.posx, 4);
- ASSERT_EQ(console.posy, 9);
- std::string save_pos("\x1b[s");
- std::string restore_pos("\x1b[u");
- console_receive(&console, save_pos);
- ASSERT_EQ(console.posx, 4);
- ASSERT_EQ(console.posy, 9);
- send = "\x1b[5;10H";
- console_receive(&console, send);
- ASSERT_EQ(console.posx, 9);
- ASSERT_EQ(console.posy, 4);
- console_receive(&console, restore_pos);
- ASSERT_EQ(console.posx, 4);
- ASSERT_EQ(console.posy, 9);
- }
- TEST(ConsoleCRNL, NLCRTests) {
- console_init(&console);
- std::string send("Hello\r");
- console_receive(&console, send);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 0);
- send = "Hello\n";
- console_receive(&console, send);
- ASSERT_EQ(console.posy, 1);
- ASSERT_EQ(console.posx, 5);
- console_receive(&console, reset);
- send = "Hello\r\n";
- console_receive(&console, send);
- ASSERT_EQ(console.posx, 0);
- ASSERT_EQ(console.posy, 1);
- }
- TEST(ConsoleColor, Colors) {
- console_init(&console);
- std::string send("\x1b[0m");
- console_receive(&console, send);
- ASSERT_EQ(console.fgcolor, 7);
- ASSERT_EQ(console.bgcolor, 0);
- ASSERT_EQ(console.status, 0);
- send = "\x1b[1;34m";
- console_receive(&console, send);
- ASSERT_EQ(console.fgcolor, 4);
- ASSERT_EQ(console.bgcolor, 0);
- ASSERT_EQ(console.status, 1);
- send = "\x1b[0;44m";
- console_receive(&console, send);
- ASSERT_EQ(console.fgcolor, 7);
- ASSERT_EQ(console.bgcolor, 4);
- ASSERT_EQ(console.status, 0);
- }
- TEST(Terminal, init) {
- Terminal term;
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 0);
- ASSERT_EQ(term.inANSI(), 0);
- ASSERT_TRUE(term.ansiempty());
- ASSERT_EQ(term.getstatus(), 0);
- ASSERT_EQ(term.bg(), 0);
- ASSERT_EQ(term.fg(), 7);
- term.putstring(reset);
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 0);
- ASSERT_EQ(term.inANSI(), 0);
- ASSERT_TRUE(term.ansiempty());
- ASSERT_EQ(term.getstatus(), 0);
- ASSERT_EQ(term.bg(), 0);
- ASSERT_EQ(term.fg(), 7);
- }
- TEST(TerminalBasic, simpleString) {
- Terminal term;
- std::string send("Hello");
- term.putstring(send);
- ASSERT_NE(term.getx(), 0);
- ASSERT_EQ(term.getx(), (int)send.size());
- ASSERT_EQ(term.gety(), 0);
- Terminal term2(term);
- term.putstring(reset);
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 0);
-
- ASSERT_NE(term2.getx(), 0);
- ASSERT_EQ(term2.getx(), (int)send.size());
- ASSERT_EQ(term2.gety(), 0);
- send = "Hello\r\n";
- term.putstring(send);
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 1);
- term2.putstring(send);
- ASSERT_EQ(term2.getx(), 0);
- ASSERT_EQ(term2.gety(), 1);
- }
- TEST(TerminalPosition, simplePositions) {
- Terminal term;
- std::string send("\x1b[10;5H");
- term.putstring(send);
- ASSERT_EQ(term.getx(), 4);
- ASSERT_EQ(term.gety(), 9);
- std::string save_pos("\x1b[s");
- std::string restore_pos("\x1b[u");
- term.putstring(save_pos);
- ASSERT_EQ(term.getx(), 4);
- ASSERT_EQ(term.gety(), 9);
-
- Terminal term2(term);
- send = "\x1b[5;10H";
- term.putstring(send);
- ASSERT_EQ(term.getx(), 9);
- ASSERT_EQ(term.gety(), 4);
- term.putstring(restore_pos);
- ASSERT_EQ(term.getx(), 4);
- ASSERT_EQ(term.gety(), 9);
- ASSERT_EQ(term2.getx(), 4);
- ASSERT_EQ(term2.gety(), 9);
- term2.putstring(restore_pos);
- ASSERT_EQ(term2.getx(), 4);
- ASSERT_EQ(term2.gety(), 9);
- }
- TEST(TerminalCRNL, NLCRTests) {
- Terminal term;
- std::string send("Hello\r");
- term.putstring(send);
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 0);
- send = "Hello\n";
- term.putstring(send);
- ASSERT_EQ(term.getx(), 5);
- ASSERT_EQ(term.gety(), 1);
- term.putstring(reset);
- send = "Hello\r\n";
- term.putstring(send);
- ASSERT_EQ(term.getx(), 0);
- ASSERT_EQ(term.gety(), 1);
- }
- }
|