// Not sure where to begin with gtest? // // What can I test with gtest? // // googletest/googletest/docs/primer.md #include "render.h" #include "terminal.h" #include "utils.h" #include "wordplay.h" #include "gtest/gtest.h" #include #include #include #include #include #include #include #define GTEST_COUT std::cerr << "[ ] [ INFO ]" struct console_details console; std::string username = "Pseudonym"; std::string fullname = "Joe User"; int harry_level(void) { return 4; } int randint(int x) { return 1; } int randrange(int x, int y) { return x; } int random_activate(int x) { return 1; } char *repr(const char *) { static char text[] = "tada!"; return text; } bool replace(std::string &str, const std::string &from, const std::string &to) { size_t start_pos = str.find(from); if (start_pos == std::string::npos) return false; str.replace(start_pos, from.length(), to); return true; } const char *logrepr(const char *) { static char text[] = "repr!"; return text; } namespace { class MangleFixture : public ::testing::Test { public: time_t start; int fd; const char *filename = "mangle.testing"; protected: virtual void SetUp() { console_init(&console); start = time(NULL); // creat : File is WRITE ONLY. fd = creat(filename, S_IRUSR | S_IWUSR); } virtual void TearDown() { if (fd > 0) close(fd); unlink(filename); } }; TEST_F(MangleFixture, TestMangle) { std::string data("The bear is sticky"); // This tests the tangler code mangle(fd, data); int lfd = open(filename, O_RDONLY); char buffer[100]; int len = read(lfd, buffer, sizeof(buffer)); if (len == -1) { ASSERT_EQ(errno, 0); } buffer[len] = 0; close(lfd); GTEST_COUT << "buffer:" << buffer << std::endl; ASSERT_STREQ( buffer, "T \bh \be \b \bb \be \ba \br \b \bi \bs \b \bs \bt \bi \bc \bk \by \b"); } /* TEST_F(RenderFixture, ColorTest) { ASSERT_GT(fd, 0); std::string colors("^C01One^C02Two^C03Three^C04Four"); render(fd, colors); int lfd = open(filename, O_RDONLY); char buffer[100]; int len = read(lfd, buffer, sizeof(buffer)); if (len == -1) { ASSERT_EQ(errno, 0); } buffer[len] = 0; close(lfd); GTEST_COUT << "buffer:" << buffer << std::endl; ASSERT_EQ(len, 43); ASSERT_STREQ(buffer, "\x1B[0;34mOne\x1B[0;32mTwo\x1B[0;36mThree\x1B[0;31mFour"); struct console_details cons; console_init(&cons); int color_list[4] = {4, 2, 6, 1}; int color = 0; for (int x = 0; x < len; ++x) { termchar tc; tc = console_char(&cons, buffer[x]); if (tc.ansi == COLOR) { GTEST_COUT << "Console color:" << cons.fgcolor << std::endl; ASSERT_EQ(cons.fgcolor, color_list[color]); color++; } } ASSERT_EQ(color, 4); } TEST_F(RenderFixture, ColorEffectTest) { std::string colors("^S1^R1\x1b[1;33;44mMEOW!\x1b[0m"); render(fd, colors); int lfd = open(filename, O_RDONLY); char buffer[100]; int len = read(lfd, buffer, sizeof(buffer)); if (len == -1) { ASSERT_EQ(errno, 0); } buffer[len] = 0; close(lfd); ASSERT_EQ(strstr(buffer, "\x1b[1;33;44m"), buffer); GTEST_COUT << "buffer:" << buffer << std::endl; ASSERT_EQ(len, 29); ASSERT_STREQ(buffer, "\x1b[1;33;44mM \bE \bO \bW \b! \b\x1b[0m"); } */ } // namespace