Skip to content

Commit

Permalink
FEXCore/unittests: Adds a FlexBitSet test
Browse files Browse the repository at this point in the history
To ensure correctness
  • Loading branch information
Sonicadvance1 committed Jan 25, 2025
1 parent dcb7a78 commit a6674ed
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions FEXCore/unittests/APITests/FlexBitSet.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#include <catch2/catch_test_macros.hpp>
#include <catch2/generators/catch_generators_range.hpp>

#include "Utils/Allocator/FlexBitSet.h"

TEST_CASE("FlexBitSet - Sizing") {
// Ensure that FlexBitSet sizing is correct.

// Size of zero shouldn't take any space.
CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBytes(0) == 0);
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBytes(0) == 0);
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBytes(0) == 0);
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBytes(0) == 0);

CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBits(0) == 0);
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBits(0) == 0);
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBits(0) == 0);
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBits(0) == 0);

// Size of 1 should take one sizeof(ElementSize) size
CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBytes(1) == sizeof(uint8_t));
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBytes(1) == sizeof(uint16_t));
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBytes(1) == sizeof(uint32_t));
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBytes(1) == sizeof(uint64_t));

CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBits(1) == sizeof(uint8_t) * 8);
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBits(1) == sizeof(uint16_t) * 8);
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBits(1) == sizeof(uint32_t) * 8);
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBits(1) == sizeof(uint64_t) * 8);

// Size of `sizeof(ElementSize) * 8` should take one sizeof(ElementSize) size
CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBytes(sizeof(uint8_t) * 8) == sizeof(uint8_t));
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBytes(sizeof(uint16_t) * 8) == sizeof(uint16_t));
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBytes(sizeof(uint32_t) * 8) == sizeof(uint32_t));
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBytes(sizeof(uint64_t) * 8) == sizeof(uint64_t));

CHECK(FEXCore::FlexBitSet<uint8_t>::SizeInBits(sizeof(uint8_t) * 8) == sizeof(uint8_t) * 8);
CHECK(FEXCore::FlexBitSet<uint16_t>::SizeInBits(sizeof(uint16_t) * 8) == sizeof(uint16_t) * 8);
CHECK(FEXCore::FlexBitSet<uint32_t>::SizeInBits(sizeof(uint32_t) * 8) == sizeof(uint32_t) * 8);
CHECK(FEXCore::FlexBitSet<uint64_t>::SizeInBits(sizeof(uint64_t) * 8) == sizeof(uint64_t) * 8);
}

0 comments on commit a6674ed

Please sign in to comment.