461 changes: 286 additions & 175 deletions llvm/unittests/Object/ELFObjectFileTest.cpp

Large diffs are not rendered by default.

38 changes: 20 additions & 18 deletions llvm/unittests/Object/ELFTypesTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,34 +100,36 @@ static_assert(
decltype(BBAddrMap::BBEntry::ID)>,
"PGOAnalysisMap should use the same type for basic block ID as BBAddrMap");

TEST(ELFTypesTest, PGOAnalysisMapFeaturesEncodingTest) {
const std::array<PGOAnalysisMap::Features, 7> Decoded = {
{{false, false, false},
{true, false, false},
{false, true, false},
{false, false, true},
{true, true, false},
{false, true, true},
{true, true, true}}};
const std::array<uint8_t, 7> Encoded = {
{0b000, 0b001, 0b010, 0b100, 0b011, 0b110, 0b111}};
TEST(ELFTypesTest, BBAddrMapFeaturesEncodingTest) {
const std::array<BBAddrMap::Features, 9> Decoded = {
{{false, false, false, false},
{true, false, false, false},
{false, true, false, false},
{false, false, true, false},
{false, false, false, true},
{true, true, false, false},
{false, true, true, false},
{false, true, true, true},
{true, true, true, true}}};
const std::array<uint8_t, 9> Encoded = {
{0b0000, 0b0001, 0b0010, 0b0100, 0b1000, 0b0011, 0b0110, 0b1110, 0b1111}};
for (const auto &[Feat, EncodedVal] : llvm::zip(Decoded, Encoded))
EXPECT_EQ(Feat.encode(), EncodedVal);
for (const auto &[Feat, EncodedVal] : llvm::zip(Decoded, Encoded)) {
Expected<PGOAnalysisMap::Features> FeatEnableOrError =
PGOAnalysisMap::Features::decode(EncodedVal);
Expected<BBAddrMap::Features> FeatEnableOrError =
BBAddrMap::Features::decode(EncodedVal);
ASSERT_THAT_EXPECTED(FeatEnableOrError, Succeeded());
EXPECT_EQ(*FeatEnableOrError, Feat);
}
}

TEST(ELFTypesTest, PGOAnalysisMapFeaturesInvalidEncodingTest) {
TEST(ELFTypesTest, BBAddrMapFeaturesInvalidEncodingTest) {
const std::array<std::string, 2> Errors = {
"invalid encoding for PGOAnalysisMap::Features: 0x8",
"invalid encoding for PGOAnalysisMap::Features: 0xff"};
const std::array<uint8_t, 2> Values = {{0b1000, 0b1111'1111}};
"invalid encoding for BBAddrMap::Features: 0x10",
"invalid encoding for BBAddrMap::Features: 0xff"};
const std::array<uint8_t, 2> Values = {{0b10000, 0b1111'1111}};
for (const auto &[Val, Error] : llvm::zip(Values, Errors)) {
EXPECT_THAT_ERROR(PGOAnalysisMap::Features::decode(Val).takeError(),
EXPECT_THAT_ERROR(BBAddrMap::Features::decode(Val).takeError(),
FailedWithMessage(Error));
}
}