#include "gtest/gtest.h" #include "storage/gid.hpp" TEST(Generator, GeneratedOnCorrectWorker) { int my_worker = 775; gid::Generator generator(my_worker); auto gid = generator.Next(); EXPECT_EQ(gid::CreatorWorker(gid), my_worker); } TEST(Generator, DontReuseIds) { gid::Generator generator(0); auto gid = generator.Next(); auto gid_gt = generator.Next(); EXPECT_NE(gid_gt, gid); } TEST(Generator, FromOtherGenerator) { gid::Generator generator_0(0); gid::Generator generator_1(1); for (int i = 0; i < 10; ++i) generator_1.Next(); auto gid1 = generator_1.Next(); auto gid = generator_0.Next(gid1); EXPECT_EQ(gid::CreatorWorker(gid), 1); EXPECT_EQ(gid, gid1); } TEST(Generator, FromSameGenerator) { gid::Generator generator(0); std::vector gids; for (int i = 0; i < 10; ++i) gids.push_back(generator.Next()); for (int i = 0; i < 10; ++i) EXPECT_EQ(gids[i], generator.Next(gids[i])); } TEST(Generator, AdvanceGenerator) { gid::Generator generator_00(0); gid::Generator generator_01(0); for (int i = 0; i < 10; ++i) generator_00.Next(); auto gid00 = generator_00.Next(); auto gid01 = generator_01.Next(gid00); EXPECT_EQ(gid00, gid01); auto gid10 = generator_00.Next(); auto gid11 = generator_01.Next(); EXPECT_EQ(gid10, gid11); }