diff options
Diffstat (limited to 'llvm/unittests/Support/MathExtrasTest.cpp')
-rw-r--r-- | llvm/unittests/Support/MathExtrasTest.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/llvm/unittests/Support/MathExtrasTest.cpp b/llvm/unittests/Support/MathExtrasTest.cpp index bd09bab..a557b61 100644 --- a/llvm/unittests/Support/MathExtrasTest.cpp +++ b/llvm/unittests/Support/MathExtrasTest.cpp @@ -189,8 +189,13 @@ TEST(MathExtras, AlignTo) { EXPECT_EQ(8u, alignTo(5, 8)); EXPECT_EQ(24u, alignTo(17, 8)); EXPECT_EQ(0u, alignTo(~0LL, 8)); - EXPECT_EQ(static_cast<uint64_t>(std::numeric_limits<uint32_t>::max()) + 1, - alignTo(std::numeric_limits<uint32_t>::max(), 2)); + EXPECT_EQ(8u, alignTo(5ULL, 8ULL)); + + EXPECT_EQ(8u, alignTo<8>(5)); + EXPECT_EQ(24u, alignTo<8>(17)); + EXPECT_EQ(0u, alignTo<8>(~0LL)); + EXPECT_EQ(254u, + alignTo<static_cast<uint8_t>(127)>(static_cast<uint8_t>(200))); EXPECT_EQ(7u, alignTo(5, 8, 7)); EXPECT_EQ(17u, alignTo(17, 8, 1)); @@ -198,12 +203,21 @@ TEST(MathExtras, AlignTo) { EXPECT_EQ(552u, alignTo(321, 255, 42)); EXPECT_EQ(std::numeric_limits<uint32_t>::max(), alignTo(std::numeric_limits<uint32_t>::max(), 2, 1)); + + // Overflow. + EXPECT_EQ(0u, alignTo(static_cast<uint8_t>(200), static_cast<uint8_t>(128))); + EXPECT_EQ(0u, alignTo<static_cast<uint8_t>(128)>(static_cast<uint8_t>(200))); + EXPECT_EQ(0u, alignTo(static_cast<uint8_t>(200), static_cast<uint8_t>(128), + static_cast<uint8_t>(0))); + EXPECT_EQ(0u, alignTo(std::numeric_limits<uint32_t>::max(), 2)); } TEST(MathExtras, AlignToPowerOf2) { + EXPECT_EQ(0u, alignToPowerOf2(0u, 8)); EXPECT_EQ(8u, alignToPowerOf2(5, 8)); EXPECT_EQ(24u, alignToPowerOf2(17, 8)); EXPECT_EQ(0u, alignToPowerOf2(~0LL, 8)); + EXPECT_EQ(240u, alignToPowerOf2(240, 16)); EXPECT_EQ(static_cast<uint64_t>(std::numeric_limits<uint32_t>::max()) + 1, alignToPowerOf2(std::numeric_limits<uint32_t>::max(), 2)); } |