This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Indoor/tests/geo/TestHeading.cpp
FrankE 686151b511 worked on 2D/3D raytracing
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
2017-09-13 08:08:00 +02:00

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