Skip to content
Snippets Groups Projects
CVectorTest.h 1.62 KiB
Newer Older
  • Learn to ignore specific revisions
  • pospelov's avatar
    pospelov committed
    #ifndef CVECTORTEST_H
    #define CVECTORTEST_H
    
    
    #include "Types.h"
    #include <cmath>
    
    
    pospelov's avatar
    pospelov committed
    class CVectorTest : public ::testing::Test
    {
    
    pospelov's avatar
    pospelov committed
        CVectorTest();
        virtual ~CVectorTest();
    };
    
    
    CVectorTest::CVectorTest()
    {
    }
    
    CVectorTest::~CVectorTest()
    {
    }
    
    
    TEST_F(CVectorTest, TrivialOperations)
    {
        kvector_t vec_k(1.,2.,3.);
    
        EXPECT_EQ( vec_k.complex().z(), complex_t(3.,0.) );
    
        cvector_t vec_c(complex_t(1.,3.), complex_t(2.,-5.), complex_t(-3.,-4.));
        EXPECT_EQ( -vec_c.z(), complex_t(3.,4.) );
        EXPECT_DOUBLE_EQ( vec_c.mag(), 8. );
    
    pospelov's avatar
    pospelov committed
    TEST_F(CVectorTest, BasicArithmetics)
    {
    
        // Dot product with "Eigen" library
        Eigen::Vector3cd va(complex_t(1.,0.), complex_t(2.,0.), complex_t(3.,0.));
        Eigen::Vector3cd vc(complex_t(1.,1.), complex_t(2.,-5.), complex_t(3.,4.));
        EXPECT_TRUE(va.dot(vc) == complex_t(14.,3.));
    
        // Dot product defined in BasicVector3D
    
        cvector_t vec_a(complex_t(1.,0.), complex_t(2.,0.), complex_t(3.,0.));
        cvector_t vec_b(complex_t(2.,0.), complex_t(3.,0.), complex_t(4.,0.));
        cvector_t vec_c(complex_t(1.,1.), complex_t(2.,-5.), complex_t(3.,4.));
        EXPECT_TRUE(vec_a.dot(vec_b) == complex_t(20.,0));
        EXPECT_TRUE(vec_a.dot(vec_c) == complex_t(14.,3.));
        EXPECT_TRUE(vec_c.dot(vec_b) == complex_t(20.,-3.));
        EXPECT_TRUE(vec_a.dot(vec_a) == complex_t(14.,0));
        EXPECT_TRUE(vec_c.dot(vec_c) == complex_t(56.,0));
    
    pospelov's avatar
    pospelov committed
    
        // f = f_re + j*f_im
    
        cvector_t vec_e(1.,2.,3.);
        cvector_t vec_f(5.,6.,7.);
    
        EXPECT_EQ( vec_e+complex_t(0,1)*vec_f,
                   cvector_t(complex_t(1.,5.), complex_t(2.,6), complex_t(3,7)) );
    
    pospelov's avatar
    pospelov committed
    }
    
    
    #endif // CVECTORTEST_H