MathTests.cpp 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  2. // SPDX-License-Identifier: MIT
  3. #include "UnitTestFramework.h"
  4. #include <Jolt/Math/Mat44.h>
  5. TEST_SUITE("Mat44Tests")
  6. {
  7. TEST_CASE("TestCountTrailingZeros")
  8. {
  9. CHECK(CountTrailingZeros(0) == 32);
  10. for (int i = 0; i < 32; ++i)
  11. CHECK(CountTrailingZeros(1U << i) == i);
  12. }
  13. TEST_CASE("TestCountLeadingZeros")
  14. {
  15. CHECK(CountLeadingZeros(0) == 32);
  16. for (int i = 0; i < 32; ++i)
  17. CHECK(CountLeadingZeros(1U << i) == 31 - i);
  18. }
  19. TEST_CASE("TestCountBits")
  20. {
  21. CHECK(CountBits(0) == 0);
  22. CHECK(CountBits(0b10000000000000000000000000000000) == 1);
  23. CHECK(CountBits(0b00000000000000000000000000000001) == 1);
  24. CHECK(CountBits(0b10000000000000001000000000000000) == 2);
  25. CHECK(CountBits(0b00000000000000010000000000000001) == 2);
  26. CHECK(CountBits(0b10000000100000001000000010000000) == 4);
  27. CHECK(CountBits(0b00000001000000010000000100000001) == 4);
  28. CHECK(CountBits(0b10001000100010001000100010001000) == 8);
  29. CHECK(CountBits(0b00010001000100010001000100010001) == 8);
  30. CHECK(CountBits(0b10101010101010101010101010101010) == 16);
  31. CHECK(CountBits(0b01010101010101010101010101010101) == 16);
  32. CHECK(CountBits(0b11111111111111111111111111111111) == 32);
  33. }
  34. TEST_CASE("TestNextPowerOf2")
  35. {
  36. CHECK(GetNextPowerOf2(0) == 1);
  37. for (int i = 0; i < 31; ++i)
  38. {
  39. uint32 pow = uint32(1) << i;
  40. if (pow > 2)
  41. CHECK(GetNextPowerOf2(pow - 1) == pow);
  42. CHECK(GetNextPowerOf2(pow) == pow);
  43. CHECK(GetNextPowerOf2(pow + 1) == pow << 1);
  44. }
  45. CHECK(GetNextPowerOf2(0x8000000U - 1) == 0x8000000U);
  46. CHECK(GetNextPowerOf2(0x8000000U) == 0x8000000U);
  47. }
  48. }