Skip to content
Snippets Groups Projects
Select Git revision
  • e826dd7e642f56c84a5dffb6398ec4b0f2dea68e
  • master default protected
  • github/fork/hrani/master
  • github/fork/dilawar/master
  • chamcham
  • chhennapoda
  • wheel
  • 3.2.0-pre0
  • v3.1.3
  • 3.1.2
  • 3.1.1
  • chamcham-3.1.1
  • 3.1.0
  • ghevar_3.0.2_pre2
  • ghevar_3.0.2
15 results

utility.h

Blame
  • test_point.cpp 2.16 KiB
    #include <cmath>
    #include <limits>
    
    #include "gtest.h"
    
    #include "../src/point.hpp"
    
    using namespace nest::mc;
    
    TEST(point, construction)
    {
        {
            // default constructor
            point<float> p;
    
            EXPECT_FALSE(p.is_set());
    
            // expect NaN, which returns false when comparing for equality
            EXPECT_NE(p.x, p.x);
            EXPECT_NE(p.y, p.y);
            EXPECT_NE(p.z, p.z);
        }
    
        {
            // initializer list
            point<float> p{1, 2, 3};
            EXPECT_EQ(p.x, 1.);
            EXPECT_EQ(p.y, 2.);
            EXPECT_EQ(p.z, 3.);
        }
    
        {
            // explicit call to constructor
            point<double> p1(1, 2, 3);
    
            EXPECT_EQ(p1.x, 1.);
            EXPECT_EQ(p1.y, 2.);
            EXPECT_EQ(p1.z, 3.);
    
            // copy constructor
            auto p2 = p1;
            EXPECT_EQ(p1, p2);
        }
    }
    
    TEST(point, constexpr)
    {
        // perform test using constexpr
        constexpr point<double> p1(1, 2, 3);
        constexpr point<double> p2(1, 2, 3);
    
        constexpr auto p = p1 + p2;
    
        static_assert(p.x == p1.x+p2.x, "failed x-component");
        static_assert(p.y == p1.y+p2.y, "failed y-component");
        static_assert(p.z == p1.z+p2.z, "failed z-component");
    }
    
    TEST(point, addition)
    {
        // perform test using constexpr
        point<double> p1(1, 2, 3);
        point<double> p2(1, 2, 3);
    
        auto p = p1 + p2;
    
        EXPECT_EQ(point<double>(2, 4, 6), p);
    }
    
    TEST(point, subtraction)
    {
        // perform test using constexpr
        point<double> p1(1, 2, 3);
        point<double> p2(1, 2, 3);
    
        auto p = p1 - p2;
    
        EXPECT_EQ(point<double>(0, 0, 0), p);
    }
    
    TEST(point, scalar_prod)
    {
        // perform test using constexpr
        point<double> p1(1, 2, 3);
    
        auto p = 0.5 * p1;
    
        EXPECT_EQ(point<double>(0.5, 1.0, 1.5), p);
    }
    
    TEST(point, norm)
    {
        // don't use constexpr, because the sqrt is not constexpr
        point<double> p1(1, 1, 1);
        point<double> p2(1, 2, 3);
    
        EXPECT_EQ(norm(p1), std::sqrt(3.));
        EXPECT_EQ(norm(p2), std::sqrt(1.+4.+9.));
    }
    
    TEST(point, dot)
    {
        // perform test using constexpr
        constexpr point<double> p1(1, -1, 1);
        constexpr point<double> p2(1, 2, 3);
    
        static_assert(dot(p1,p2)==2., "unable to perform constexpr dot product");
    
        EXPECT_EQ(dot(p1,p2), 2.);
    }