* Coverage

* added fixes

* removed spacing

* removed junk

* removed print

* removed coverage

* removed useless stuff

* fix

---------

Co-authored-by: Saikari <lin@sz.cn.eu.org>
This commit is contained in:
2025-12-23 02:47:12 +03:00
committed by GitHub
parent a03620c18f
commit 897484bea1
39 changed files with 2482 additions and 145 deletions

View File

@@ -0,0 +1,54 @@
#include "omath/collision/simplex.hpp"
#include "omath/linear_algebra/vector3.hpp"
#include <gtest/gtest.h>
using omath::Vector3;
TEST(SimplexAdditional, RegionACSelectsAC)
{
// Construct points that force the Region AC branch where ac points toward the origin
Vector3<float> a{1.f, 0.f, 0.f};
Vector3<float> b{2.f, 0.f, 0.f};
Vector3<float> c{0.f, 1.f, 0.f};
omath::collision::Simplex<omath::Vector3<float>> s;
s = { a, b, c };
omath::Vector3<float> dir{0.f, 0.f, 0.f};
const bool hit = s.handle(dir);
// Should not report a collision; simplex should reduce to {a, c}
EXPECT_FALSE(hit);
EXPECT_EQ(s.size(), 2u);
EXPECT_TRUE(s[0] == a);
EXPECT_TRUE(s[1] == c);
// direction should be finite and non-zero
EXPECT_TRUE(std::isfinite(dir.x));
EXPECT_TRUE(std::isfinite(dir.y));
EXPECT_TRUE(std::isfinite(dir.z));
}
TEST(SimplexAdditional, AbcAboveSetsDirection)
{
// Choose triangle so abc points roughly toward the origin (abc · ao > 0)
Vector3<float> a{-1.f, 0.f, 0.f};
Vector3<float> b{0.f, 1.f, 0.f};
Vector3<float> c{0.f, 0.f, 1.f};
omath::collision::Simplex<omath::Vector3<float>> s;
s = { a, b, c };
omath::Vector3<float> dir{0.f, 0.f, 0.f};
const bool hit = s.handle(dir);
EXPECT_FALSE(hit);
const auto ab = b - a;
const auto ac = c - a;
const auto abc = ab.cross(ac);
// direction should equal abc (above triangle case)
EXPECT_NEAR(dir.x, abc.x, 1e-6f);
EXPECT_NEAR(dir.y, abc.y, 1e-6f);
EXPECT_NEAR(dir.z, abc.z, 1e-6f);
}