google test使用

章永安
2023-12-01

gtest项目使用举例:

#include "gtest/gtest.h"
#include "messenger/server.h"

class TestServer: public ::testing::Test
{
public:
  virtual void SetUp() {
    server = new MessengerServer();
  }
  virtual void TearDown() {
    if (server) {
      delete server;
      server = nullptr;
    }
  }
bool has_any_zero_bit(unsigned char* bitmap, uint64_t size) {
    assert(bitmap);
    for (uint64_t i = 0; i < size; i++) {
      uint64_t part = i / 8;
      uint64_t off = i % 8;
      if (!(bitmap[part] & (1 << off)))
        return false;
    }
    return true;
  }

  MessengerServer *server;
};
#case1
TEST_F(TestServer, test_judge_available_chunk_with_empty) {
  unsigned char bitmap[BITMAP_SIZE];
  memset(bitmap, 0, BITMAP_SIZE);
  uint64_t s_chunk = 10;
  uint64_t e_chunk = 41;
  ASSERT_FALSE(server->test_has_any_available_chunk(bitmap, s_chunk, e_chunk));
}
#case2
TEST_F(TestServer, test_judge_available_chunk_with_full) {
  unsigned char bitmap[BITMAP_SIZE];
  memset(bitmap, ~0, BITMAP_SIZE);
  uint64_t s_chunk = 10;
  uint64_t e_chunk = 41;
  ASSERT_TRUE(server->test_has_any_available_chunk(bitmap, s_chunk, e_chunk));
}
#case3
TEST_F(TestServer, test_judge_available_chunk_with_any) {
  unsigned char bitmap[BITMAP_SIZE];
  uint64_t s_chunk = 10;
  uint64_t e_chunk = 41;
  for (uint32_t i = 0 + s_chunk; i < BITMAP_SIZE + s_chunk; i++) {
    memset(bitmap, 0, BITMAP_SIZE);
    uint64_t part = (i - s_chunk) / 8;
    uint64_t off = (i - s_chunk) % 8;
    bitmap[part] |= (1 << off);
    ASSERT_TRUE(server->test_has_any_available_chunk(bitmap, s_chunk, e_chunk));
  }
}

int main(int argc, const char **argv) {
	testing::InitGoogleTest(&argc, (char**)argv);
	return RUN_ALL_TESTS();
}
 类似资料: