123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // 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 "gtest/gtest.h"
- #include <errno.h>
- #include <fcntl.h>
- #include <string>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <time.h>
- #include <unistd.h>
- #define GTEST_COUT std::cerr << "[ ] [ INFO ]"
- struct console_details console;
- namespace {
- class RenderFixture : public ::testing::Test {
- public:
- time_t start;
- int fd;
- const char *filename = "render.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(RenderFixture, CheckPause) {
- std::string pause("^P1");
- render(fd, pause);
- int elapsed = time(NULL) - start;
- ASSERT_GT(elapsed, 0);
- ASSERT_EQ(elapsed, 1);
- }
- TEST_F(RenderFixture, CheckPauseTwo) {
- std::string pause("^P2");
- render(fd, pause);
- int elapsed = time(NULL) - start;
- ASSERT_GT(elapsed, 1);
- ASSERT_EQ(elapsed, 2);
- }
- 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
|