1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #include "../Tests.hpp"
- #include "core/Math.hpp"
- #include "core/Test.hpp"
- constexpr float eps = 0.0001f;
- static void testInterpolate() {
- TEST_FLOAT(7.5f, Core::interpolate(5.0f, 10.0f, 0.5f), eps);
- TEST_FLOAT(-2.0, Core::interpolate(-10.0f, 10.0f, 0.4f), eps);
- TEST_FLOAT(10.0f, Core::interpolate(-3.0f, 10.0f, 1.0f), eps);
- TEST_FLOAT(7.0f, Core::interpolate(7.0f, 10.0f, 0.0f), eps);
- TEST_FLOAT(6.0f, Core::interpolate(0.0f, 10.0f, 0.6f), eps);
- }
- static void testIsPowerOf2() {
- TEST_TRUE(Core::isPowerOf2(1));
- TEST_TRUE(Core::isPowerOf2(2));
- TEST_FALSE(Core::isPowerOf2(3));
- TEST_TRUE(Core::isPowerOf2(4));
- TEST_FALSE(Core::isPowerOf2(5));
- TEST_FALSE(Core::isPowerOf2(6));
- TEST_FALSE(Core::isPowerOf2(7));
- TEST_TRUE(Core::isPowerOf2(8));
- TEST_FALSE(Core::isPowerOf2(9));
- TEST_FALSE(Core::isPowerOf2(10));
- for(int i = 16; i < 30'000; i *= 2) {
- TEST_TRUE(Core::isPowerOf2(i));
- TEST_FALSE(Core::isPowerOf2(i + 1));
- TEST_FALSE(Core::isPowerOf2(i + 2));
- TEST_FALSE(Core::isPowerOf2(i + 3));
- }
- }
- static void testRoundUpLog2() {
- TEST(0, Core::roundUpLog2(-5));
- TEST(0, Core::roundUpLog2(0));
- TEST(1, Core::roundUpLog2(1));
- TEST(1, Core::roundUpLog2(2));
- TEST(2, Core::roundUpLog2(3));
- TEST(2, Core::roundUpLog2(4));
- TEST(3, Core::roundUpLog2(5));
- TEST(4, Core::roundUpLog2(10));
- TEST(5, Core::roundUpLog2(20));
- TEST(16, Core::roundUpLog2(35'345));
- TEST(31, Core::roundUpLog2(0x7FFF'FFFF));
- }
- static void testMin() {
- TEST(-5, Core::min(-5));
- TEST(-10, Core::min(-5, 4, 3, 2, -10));
- TEST(4, Core::min(5, 20, 4, 30));
- }
- static void testMax() {
- TEST(-5, Core::max(-5));
- TEST(4, Core::max(-5, 4, 3, 2, -10));
- TEST(30, Core::max(5, 20, 4, 30));
- }
- static void testClamp() {
- TEST(5, Core::clamp(1, 5, 10));
- TEST(7, Core::clamp(7, 5, 10));
- TEST(10, Core::clamp(20, 5, 10));
- TEST(5, Core::clamp(1, 10, 5));
- TEST(7, Core::clamp(7, 10, 5));
- TEST(10, Core::clamp(20, 10, 5));
- }
- static void testRadianToDegree() {
- TEST_FLOAT(45.0f, Core::radianToDegree(Core::PI * 0.25f), eps);
- TEST_FLOAT(90.0f, Core::radianToDegree(Core::PI * 0.5f), eps);
- TEST_FLOAT(180.0f, Core::radianToDegree(Core::PI), eps);
- TEST_FLOAT(360.0f, Core::radianToDegree(Core::PI * 2.0f), eps);
- }
- static void testDegreeToRadian() {
- TEST_FLOAT(Core::PI * 0.25f, Core::degreeToRadian(45.0f), eps);
- TEST_FLOAT(Core::PI * 0.5f, Core::degreeToRadian(90.0f), eps);
- TEST_FLOAT(Core::PI, Core::degreeToRadian(180.0f), eps);
- TEST_FLOAT(Core::PI * 2.0f, Core::degreeToRadian(360.0f), eps);
- }
- void testMath() {
- testInterpolate();
- testIsPowerOf2();
- testRoundUpLog2();
- testMin();
- testMax();
- testClamp();
- testRadianToDegree();
- testDegreeToRadian();
- }
|