#include "UniqueIdGenerator.h"
#include "absl/container/flat_hash_set.h"
#include "rocketmq/RocketMQ.h"
#include "spdlog/spdlog.h"
#include "gtest/gtest.h"

#include <iostream>
ROCKETMQ_NAMESPACE_BEGIN

TEST(UniqueIdGeneratorTest, testOutputSampleId) {
std::cout << "A sample unique ID: " << UniqueIdGenerator::instance().next() << std::endl;
}

TEST(UniqueIdGeneratorTest, testNext) {
  absl::flat_hash_set<std::string> id_set;
  uint32_t total = 500000;
  uint32_t count = 0;
  while (total--) {
    std::string id = UniqueIdGenerator::instance().next();
    if (id_set.contains(id)) {
      SPDLOG_WARN("Yuck, found an duplicated ID: {}", id);
    } else {
      id_set.insert(id);
    }
    ++count;
  }
  EXPECT_EQ(count, id_set.size());
}

ROCKETMQ_NAMESPACE_END