PFASST++
test_boris_physics.cpp
Go to the documentation of this file.
1 #include <memory>
2 #include <vector>
3 using namespace std;
4 
5 #include <gtest/gtest.h>
6 #include <gmock/gmock.h>
7 using namespace ::testing;
8 
9 #include "../examples/boris/physics.hpp"
10 
11 using namespace pfasst;
12 using namespace pfasst::examples::boris;
13 
14 #include "mocks.hpp"
15 
17 
18 typedef ElectricField<double, double, MockParticle> EFieldT;
19 typedef MagneticField<double, double, MockParticle> BFieldT;
21 
22 
23 TEST(ElectricFieldTest, Instantiation)
24 {
25  EFieldT default_ctor;
26  EXPECT_THAT(default_ctor.omega_e, DoubleEq(1.0));
27 
28  EFieldT special_ctor = EFieldT(0.5);
29  EXPECT_THAT(special_ctor.omega_e, DoubleEq(0.5));
30 }
31 
32 TEST(ElectricFieldTest, OmegaZ)
33 {
34  EFieldT default_ctor;
35  default_ctor.omega_e = 0.0;
36  EXPECT_THAT(default_ctor.omega_e, DoubleEq(0.0));
37 }
38 
39 TEST(ElectricFieldTest, Evaluation)
40 {
41  EFieldT default_ctor;
42  vector<shared_ptr<MockParticleT>> particles { make_shared<MockParticleT>(),
43  make_shared<MockParticleT>(),
44  make_shared<MockParticleT>() };
45  EXPECT_THROW(default_ctor.evaluate(particles, 0, 0.0), NotImplementedYet);
46 }
47 
48 
49 TEST(MagneticFieldTest, Instantiation)
50 {
51  BFieldT default_ctor;
52  EXPECT_THAT(default_ctor.omega_b, DoubleEq(1.0));
53 
54  BFieldT special_ctor = BFieldT(0.5);
55  EXPECT_THAT(special_ctor.omega_b, DoubleEq(0.5));
56 }
57 
58 TEST(MagneticFieldTest, OmegaC)
59 {
60  BFieldT default_ctor;
61  default_ctor.omega_b = 0.0;
62  EXPECT_THAT(default_ctor.omega_b, DoubleEq(0.0));
63 }
64 
65 TEST(MagneticFieldTest, Evaluation)
66 {
67  BFieldT default_ctor;
68  vector<shared_ptr<MockParticleT>> particles { make_shared<MockParticleT>(),
69  make_shared<MockParticleT>(),
70  make_shared<MockParticleT>() };
71  EXPECT_THROW(default_ctor.evaluate(particles, 0, 0.0), NotImplementedYet);
72 }
73 
74 
75 TEST(EnergyOperatorTest, Evaluation)
76 {
77  EnergyOperatorT e_operator;
78 
79  vector<shared_ptr<typename EnergyOperatorT::particle_type>> particles \
80  { make_shared<typename EnergyOperatorT::particle_type>(),
81  make_shared<typename EnergyOperatorT::particle_type>(),
82  make_shared<typename EnergyOperatorT::particle_type>() };
83 
84  ON_CALL(e_operator, evaluate(_, _))
85  .WillByDefault(Return(1.0));
86  EXPECT_CALL(e_operator, evaluate(_, _))
87  .Times(1);
88  EXPECT_THAT(e_operator.evaluate(particles, 0.0), DoubleEq(1.0));
89 }
90 
91 
92 int main(int argc, char** argv)
93 {
94  testing::InitGoogleTest(&argc, argv);
95  return RUN_ALL_TESTS();
96 }
Not implemented yet exception.
Definition: interfaces.hpp:29
STL namespace.
ElectricField< double, double, MockParticle > EFieldT
MockEOperator< double, double > EnergyOperatorT
Particle3DEncapsulation< scalar, time > MockParticle
Definition: mocks.hpp:39
TEST(ElectricFieldTest, Instantiation)
MagneticField< double, double, MockParticle > BFieldT
MockParticle< double, double > MockParticleT
int main(int argc, char **argv)