summaryrefslogtreecommitdiff
path: root/Source/UnitTests/Common
diff options
context:
space:
mode:
authorTilka <tilkax@gmail.com>2017-06-22 20:47:36 +0100
committerGitHub <noreply@github.com>2017-06-22 20:47:36 +0100
commit4e39a42e6bcbdb97820aabde88124436fb6b5979 (patch)
treef3cb1cae081cff81327b0bc20655505f6c17bff7 /Source/UnitTests/Common
parente30484e8a7895a2a26f7e4e609c44c5b0d1c6331 (diff)
parent56158ca176eee120f29375a286182b5dd3d7fa60 (diff)
Merge pull request #5662 from blubberdiblub/improve_mmu_mask_checks
Improve MMU mask checks
Diffstat (limited to 'Source/UnitTests/Common')
-rw-r--r--Source/UnitTests/Common/BitUtilsTest.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/Source/UnitTests/Common/BitUtilsTest.cpp b/Source/UnitTests/Common/BitUtilsTest.cpp
index 987868e6e4..75f7adf50e 100644
--- a/Source/UnitTests/Common/BitUtilsTest.cpp
+++ b/Source/UnitTests/Common/BitUtilsTest.cpp
@@ -57,3 +57,35 @@ TEST(BitUtils, ExtractBits)
// Ensure bit extraction with type overriding works as expected
EXPECT_EQ((Common::ExtractBits<0, 31, s32, s32>(negative_one)), -1);
}
+
+TEST(BitUtils, IsValidLowMask)
+{
+ EXPECT_TRUE(Common::IsValidLowMask(0b0u));
+ EXPECT_TRUE(Common::IsValidLowMask(0b1u));
+ EXPECT_FALSE(Common::IsValidLowMask(0b10u));
+ EXPECT_TRUE(Common::IsValidLowMask(0b11u));
+ EXPECT_FALSE(Common::IsValidLowMask(0b1110u));
+ EXPECT_TRUE(Common::IsValidLowMask(0b1111u));
+ EXPECT_FALSE(Common::IsValidLowMask(0b10000u));
+ EXPECT_FALSE(Common::IsValidLowMask(0b101111u));
+
+ EXPECT_TRUE(Common::IsValidLowMask((u8)~0b0));
+ EXPECT_FALSE(Common::IsValidLowMask((u8)(~0b0 - 1)));
+ EXPECT_FALSE(Common::IsValidLowMask((u8)~(0b10000)));
+ EXPECT_FALSE(Common::IsValidLowMask((u8)(~((u8)(~0b0) >> 1) | 0b1111)));
+
+ EXPECT_TRUE(Common::IsValidLowMask((u16)~0b0));
+ EXPECT_FALSE(Common::IsValidLowMask((u16)(~0b0 - 1)));
+ EXPECT_FALSE(Common::IsValidLowMask((u16)~(0b10000)));
+ EXPECT_FALSE(Common::IsValidLowMask((u16)(~((u16)(~0b0) >> 1) | 0b1111)));
+
+ EXPECT_TRUE(Common::IsValidLowMask((u32)~0b0));
+ EXPECT_FALSE(Common::IsValidLowMask((u32)(~0b0 - 1)));
+ EXPECT_FALSE(Common::IsValidLowMask((u32)~(0b10000)));
+ EXPECT_FALSE(Common::IsValidLowMask((u32)(~((u32)(~0b0) >> 1) | 0b1111)));
+
+ EXPECT_TRUE(Common::IsValidLowMask((u64)~0b0));
+ EXPECT_FALSE(Common::IsValidLowMask((u64)(~0b0 - 1)));
+ EXPECT_FALSE(Common::IsValidLowMask((u64)~(0b10000)));
+ EXPECT_FALSE(Common::IsValidLowMask((u64)(~((u64)(~0b0) >> 1) | 0b1111)));
+}