11#include <gtest/gtest.h>
21 class ConstantEFieldCavityTest :
public ::testing::Test {
23 void SetUp()
override {
24 rep_ = std::make_unique<ConstantEFieldCavityRep>(
"TestConstantEFieldCavity");
25 rep_->setElementLength(1.0);
29 std::unique_ptr<ConstantEFieldCavityRep> rep_;
35 TEST_F(ConstantEFieldCavityTest, GetType) {
39 TEST_F(ConstantEFieldCavityTest, Bends) { EXPECT_FALSE(rep_->bends()); }
41 TEST_F(ConstantEFieldCavityTest, GetExEyEzSetters) {
42 EXPECT_DOUBLE_EQ(rep_->getEx(), 0.0);
43 EXPECT_DOUBLE_EQ(rep_->getEy(), 0.0);
44 EXPECT_DOUBLE_EQ(rep_->getEz(), 10.0);
50 EXPECT_DOUBLE_EQ(rep_->getEx(), 1.0);
51 EXPECT_DOUBLE_EQ(rep_->getEy(), -2.0);
52 EXPECT_DOUBLE_EQ(rep_->getEz(), 3.0);
55 TEST_F(ConstantEFieldCavityTest, GetDimensions) {
56 double startField = 0.0;
57 double endField = 0.0;
58 rep_->initialise(
nullptr, startField, endField);
59 EXPECT_DOUBLE_EQ(endField, 1.0);
61 double zBegin = 0.0, zEnd = 0.0;
62 rep_->getFieldExtend(zBegin, zEnd);
63 EXPECT_DOUBLE_EQ(zBegin, 0.0);
64 EXPECT_DOUBLE_EQ(zEnd, 1.0);
68 rep_->initialise(
nullptr, startField, endField);
69 rep_->getFieldExtend(zBegin, zEnd);
70 EXPECT_DOUBLE_EQ(zBegin, 2.5);
71 EXPECT_DOUBLE_EQ(zEnd, 3.5);
77 TEST_F(ConstantEFieldCavityTest, ApplyInside) {
83 bool out = rep_->apply(R, P, 0.0, E, B);
86 EXPECT_DOUBLE_EQ(E(0), 1.0);
87 EXPECT_DOUBLE_EQ(E(1), 2.0);
88 EXPECT_DOUBLE_EQ(E(2), 3.0 + 10.0);
91 TEST_F(ConstantEFieldCavityTest, ApplyBeforeElement) {
97 bool out = rep_->apply(R, P, 0.0, E, B);
100 EXPECT_DOUBLE_EQ(E(0), 1.0);
101 EXPECT_DOUBLE_EQ(E(1), 2.0);
102 EXPECT_DOUBLE_EQ(E(2), 3.0);
105 TEST_F(ConstantEFieldCavityTest, ApplyAfterElement) {
111 bool out = rep_->apply(R, P, 0.0, E, B);
114 EXPECT_DOUBLE_EQ(E(0), 1.0);
115 EXPECT_DOUBLE_EQ(E(1), 2.0);
116 EXPECT_DOUBLE_EQ(E(2), 3.0);
119 TEST_F(ConstantEFieldCavityTest, ApplyAtZ0) {
125 bool out = rep_->apply(R, P, 0.0, E, B);
128 EXPECT_DOUBLE_EQ(E(0), 0.0);
129 EXPECT_DOUBLE_EQ(E(1), 0.0);
130 EXPECT_DOUBLE_EQ(E(2), 10.0);
133 TEST_F(ConstantEFieldCavityTest, ApplyAtZLength) {
139 bool out = rep_->apply(R, P, 0.0, E, B);
142 EXPECT_DOUBLE_EQ(E(0), 0.0);
143 EXPECT_DOUBLE_EQ(E(1), 0.0);
144 EXPECT_DOUBLE_EQ(E(2), 10.0);
147 TEST_F(ConstantEFieldCavityTest, ApplyAddsFullVector) {
157 bool out = rep_->apply(R, P, 0.0, E, B);
160 EXPECT_DOUBLE_EQ(E(0), 0.5 + 1.0);
161 EXPECT_DOUBLE_EQ(E(1), 0.5 - 2.0);
162 EXPECT_DOUBLE_EQ(E(2), 0.5 + 3.0);
168 TEST_F(ConstantEFieldCavityTest, ApplyToReferenceParticleInside) {
174 bool out = rep_->applyToReferenceParticle(R, P, 0.0, E, B);
177 EXPECT_DOUBLE_EQ(E(0), 0.0);
178 EXPECT_DOUBLE_EQ(E(1), 0.0);
179 EXPECT_DOUBLE_EQ(E(2), 10.0);
182 TEST_F(ConstantEFieldCavityTest, ApplyToReferenceParticleOutside) {
188 bool out = rep_->applyToReferenceParticle(R, P, 0.0, E, B);
191 EXPECT_DOUBLE_EQ(E(0), 0.0);
192 EXPECT_DOUBLE_EQ(E(1), 0.0);
193 EXPECT_DOUBLE_EQ(E(2), 0.0);
ippl::Vector< T, Dim > Vector_t
TEST_F(MonitorTest, GetType)