adjusted BVH improved 2D/3D BVH new bounding volumes new test cases renamed some test-cases for grouping reasons made GPC header-only using slight adjustments
75 lines
1.5 KiB
C++
75 lines
1.5 KiB
C++
#ifdef WITH_TESTS
|
|
|
|
#include "../Tests.h"
|
|
#include "../../geo/Heading.h"
|
|
|
|
TEST(Geo_Heading, diff) {
|
|
|
|
// 180 degree turn
|
|
{
|
|
// Heading h1(0,0, 0,+1);
|
|
// Heading h2(0,0, 0,-1);
|
|
// ASSERT_NEAR(h1.getDiffHalfRAD(h2), M_PI, 0.001);
|
|
// ASSERT_NEAR(h2.getDiffHalfRAD(h1), M_PI, 0.001);
|
|
}
|
|
|
|
// ~180 degree turn
|
|
{
|
|
Heading h1(0,0, 0.00,+1);
|
|
Heading h2(0,1, -0.01,-1);
|
|
Heading h3(0,1, +0.01,-1);
|
|
ASSERT_NEAR(h1.getDiffHalfRAD(h2), M_PI, 0.01);
|
|
ASSERT_NEAR(h2.getDiffHalfRAD(h1), M_PI, 0.01);
|
|
ASSERT_NEAR(h1.getDiffHalfRAD(h3), M_PI, 0.01);
|
|
ASSERT_NEAR(h3.getDiffHalfRAD(h1), M_PI, 0.01);
|
|
}
|
|
|
|
}
|
|
|
|
TEST(Geo_Heading, mod) {
|
|
|
|
const float d = 0.0001;
|
|
|
|
Heading h1(+0); h1 += 3.1415; ASSERT_NEAR(3.1415, h1.getRAD(), d);
|
|
Heading h2(+4); h2 += 3; ASSERT_NEAR(7 - 2*M_PI, h2.getRAD(), d);
|
|
Heading h3(+0); h3 -= 3; ASSERT_NEAR(2*M_PI-3, h3.getRAD(), d);
|
|
|
|
}
|
|
|
|
TEST(Geo_Heading, ctor) {
|
|
|
|
// OK
|
|
Heading(0);
|
|
Heading(1);
|
|
Heading(2);
|
|
Heading(3);
|
|
Heading(4);
|
|
Heading(5);
|
|
Heading(6);
|
|
Heading(2*M_PI-0.0001);
|
|
|
|
// out of range
|
|
ASSERT_THROW(Heading(-0.0001), std::exception);
|
|
ASSERT_THROW(Heading(2*M_PI+0.0001), std::exception);
|
|
|
|
}
|
|
|
|
TEST(Geo_Heading, eq) {
|
|
|
|
ASSERT_EQ(Heading(0), Heading(0));
|
|
ASSERT_EQ(Heading(1), Heading(1));
|
|
ASSERT_EQ(Heading(2), Heading(2));
|
|
|
|
}
|
|
|
|
//TEST(Heading, random) {
|
|
|
|
// // two random values must not be equal
|
|
// ASSERT_NE(Heading::rnd(), Heading::rnd());
|
|
// ASSERT_NE(Heading::rnd(), Heading::rnd());
|
|
// ASSERT_NE(Heading::rnd(), Heading::rnd());
|
|
|
|
//}
|
|
|
|
#endif
|