/* * spheretest.cpp * * Created on: Dec 31, 2014 * Author: gregor */ #include #include #include #include "GLTB/geom/sphere.h" TEST(Sphere, fromTwoPoints) { gltb::Sphere sphere(glm::vec3(0, 1, 0), glm::vec3(0, 1, 1)); ASSERT_FLOAT_EQ(0, sphere.center.x); ASSERT_FLOAT_EQ(1, sphere.center.y); ASSERT_FLOAT_EQ(0.5, sphere.center.z); ASSERT_FLOAT_EQ(0.5, sphere.radius); } TEST(Sphere, fromThreePoints) { gltb::Sphere sphere(glm::vec3(0, 1, 0), glm::vec3(0, 1, 1), glm::vec3(0, 0, 0)); ASSERT_FLOAT_EQ(0, sphere.center.x); ASSERT_FLOAT_EQ(0.5, sphere.center.y); ASSERT_FLOAT_EQ(0.5, sphere.center.z); ASSERT_FLOAT_EQ(0.5 * sqrt(2), sphere.radius); } TEST(Sphere, minimalEnclosingFor2Points) { std::vector points; points.push_back(glm::vec3(0, 1, 0)); points.push_back(glm::vec3(0, 1, 1)); gltb::Sphere sphere(points); ASSERT_FLOAT_EQ(0, sphere.center.x); ASSERT_FLOAT_EQ(1, sphere.center.y); ASSERT_FLOAT_EQ(0.5, sphere.center.z); ASSERT_FLOAT_EQ(0.5, sphere.radius); } TEST(Sphere, minimalEnclosingFor3Points) { std::vector points; points.push_back(glm::vec3(0, 1, 0)); points.push_back(glm::vec3(0, 1, 1)); points.push_back(glm::vec3(0, 0, 0)); gltb::Sphere sphere(points); ASSERT_FLOAT_EQ(0, sphere.center.x); ASSERT_FLOAT_EQ(0.5, sphere.center.y); ASSERT_FLOAT_EQ(0.5, sphere.center.z); ASSERT_FLOAT_EQ(0.5 * sqrt(2), sphere.radius); } TEST(Sphere, minimalEnclosingFor5Points) { std::vector points; points.push_back(glm::vec3(0, 1, 0)); points.push_back(glm::vec3(0, 1, 1)); points.push_back(glm::vec3(0, 0, 0)); points.push_back(glm::vec3(0, 0, 1)); points.push_back(glm::vec3(0, 0.5, 0.5)); gltb::Sphere sphere(points); ASSERT_FLOAT_EQ(0, sphere.center.x); ASSERT_FLOAT_EQ(0.5, sphere.center.y); ASSERT_FLOAT_EQ(0.5, sphere.center.z); ASSERT_FLOAT_EQ(0.5 * sqrt(2), sphere.radius); } int main(int argc, char *argv[]) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }