#include #include namespace NYT { namespace { //////////////////////////////////////////////////////////////////////////////// TEST(TZigZagTest, Encode32) { EXPECT_EQ(0u, ZigZagEncode32( 0)); EXPECT_EQ(1u, ZigZagEncode32(-1)); EXPECT_EQ(2u, ZigZagEncode32( 1)); EXPECT_EQ(3u, ZigZagEncode32(-2)); // ... EXPECT_EQ(std::numeric_limits::max() - 1, ZigZagEncode32(std::numeric_limits::max())); EXPECT_EQ(std::numeric_limits::max(), ZigZagEncode32(std::numeric_limits::min())); } TEST(TZigZagTest, Decode32) { EXPECT_EQ( 0, ZigZagDecode32(0)); EXPECT_EQ(-1, ZigZagDecode32(1)); EXPECT_EQ( 1, ZigZagDecode32(2)); EXPECT_EQ(-2, ZigZagDecode32(3)); // ... EXPECT_EQ(std::numeric_limits::max(), ZigZagDecode32(std::numeric_limits::max() - 1)); EXPECT_EQ(std::numeric_limits::min(), ZigZagDecode32(std::numeric_limits::max())); } TEST(TZigZagTest, Encode64) { EXPECT_EQ(0ull, ZigZagEncode64( 0)); EXPECT_EQ(1ull, ZigZagEncode64(-1)); EXPECT_EQ(2ull, ZigZagEncode64( 1)); EXPECT_EQ(3ull, ZigZagEncode64(-2)); // ... EXPECT_EQ(std::numeric_limits::max() - 1, ZigZagEncode64(std::numeric_limits::max())); EXPECT_EQ(std::numeric_limits::max(), ZigZagEncode64(std::numeric_limits::min())); } TEST(TZigZagTest, Decode64) { EXPECT_EQ(ZigZagDecode64(0), 0ll); EXPECT_EQ(ZigZagDecode64(1), -1ll); EXPECT_EQ(ZigZagDecode64(2), 1ll); EXPECT_EQ(ZigZagDecode64(3), -2ll); // ... EXPECT_EQ(std::numeric_limits::max(), ZigZagDecode64(std::numeric_limits::max() - 1)); EXPECT_EQ(std::numeric_limits::min(), ZigZagDecode64(std::numeric_limits::max())); } //////////////////////////////////////////////////////////////////////////////// } // namespace } // namespace NYT