OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
TestConstantEzRep.cpp
Go to the documentation of this file.
1
8#include <gtest/gtest.h>
9
12
13#include <cmath>
14#include <memory>
15
16namespace {
17
18 class ConstantEFieldCavityRepTest : public ::testing::Test {
19 protected:
20 void SetUp() override {
21 rep_ = std::make_unique<ConstantEFieldCavityRep>("TestRep");
22 rep_->setElementLength(2.0);
23 rep_->setEz(5.0);
24 }
25
26 std::unique_ptr<ConstantEFieldCavityRep> rep_;
27 };
28
29 // ---------------------------------------------------------------------------
30 // Geometry and field
31 // ---------------------------------------------------------------------------
32 TEST_F(ConstantEFieldCavityRepTest, GeometryLength) {
33 EXPECT_DOUBLE_EQ(rep_->getGeometry().getElementLength(), 2.0);
34 rep_->setElementLength(3.5);
35 EXPECT_DOUBLE_EQ(rep_->getGeometry().getElementLength(), 3.5);
36 EXPECT_DOUBLE_EQ(rep_->getElementLength(), 3.5);
37 }
38
39 TEST_F(ConstantEFieldCavityRepTest, FieldEz) {
40 EXPECT_DOUBLE_EQ(rep_->getField().getEz(), 5.0);
41 rep_->setEz(-1.5);
42 EXPECT_DOUBLE_EQ(rep_->getField().getEz(), -1.5);
43 EXPECT_DOUBLE_EQ(rep_->getEz(), -1.5);
44 }
45
46 TEST_F(ConstantEFieldCavityRepTest, ExEySetters) {
47 EXPECT_DOUBLE_EQ(rep_->getEx(), 0.0);
48 EXPECT_DOUBLE_EQ(rep_->getEy(), 0.0);
49
50 rep_->setEx(1.0);
51 rep_->setEy(-2.0);
52
53 EXPECT_DOUBLE_EQ(rep_->getEx(), 1.0);
54 EXPECT_DOUBLE_EQ(rep_->getEy(), -2.0);
55 }
56
57 TEST_F(ConstantEFieldCavityRepTest, SetEzSyncsBaseAndField) {
58 rep_->setEz(100.0);
59 EXPECT_DOUBLE_EQ(rep_->getEz(), 100.0);
60 EXPECT_DOUBLE_EQ(rep_->getField().getEz(), 100.0);
61 }
62
63 // ---------------------------------------------------------------------------
64 // Clone
65 // ---------------------------------------------------------------------------
66 TEST_F(ConstantEFieldCavityRepTest, Clone) {
67 std::unique_ptr<ElementBase> copy(rep_->clone());
68 ASSERT_NE(copy.get(), nullptr);
69 ConstantEFieldCavityRep* repCopy = dynamic_cast<ConstantEFieldCavityRep*>(copy.get());
70 ASSERT_NE(repCopy, nullptr);
71 EXPECT_DOUBLE_EQ(repCopy->getElementLength(), 2.0);
72 EXPECT_DOUBLE_EQ(repCopy->getEz(), 5.0);
73 EXPECT_DOUBLE_EQ(repCopy->getField().getEz(), 5.0);
74 }
75
76 // ---------------------------------------------------------------------------
77 // Channels L and EZ
78 // ---------------------------------------------------------------------------
79 TEST_F(ConstantEFieldCavityRepTest, ChannelL) {
80 Channel* ch = rep_->getChannel("L", false);
81 ASSERT_NE(ch, nullptr);
82 EXPECT_TRUE(ch->set(1.5));
83 EXPECT_DOUBLE_EQ(rep_->getElementLength(), 1.5);
84 EXPECT_DOUBLE_EQ(rep_->getGeometry().getElementLength(), 1.5);
85 double val = 0.0;
86 EXPECT_TRUE(ch->get(val));
87 EXPECT_DOUBLE_EQ(val, 1.5);
88 delete ch;
89 }
90
91 TEST_F(ConstantEFieldCavityRepTest, ChannelEZ) {
92 Channel* ch = rep_->getChannel("EZ", false);
93 ASSERT_NE(ch, nullptr);
94 EXPECT_TRUE(ch->set(7.0));
95 EXPECT_DOUBLE_EQ(rep_->getEz(), 7.0);
96 EXPECT_DOUBLE_EQ(rep_->getField().getEz(), 7.0);
97 double val = 0.0;
98 EXPECT_TRUE(ch->get(val));
99 EXPECT_DOUBLE_EQ(val, 7.0);
100 delete ch;
101 }
102
103 TEST_F(ConstantEFieldCavityRepTest, ChannelUnknownReturnsNull) {
104 Channel* ch = rep_->getChannel("UNKNOWN", false);
105 EXPECT_EQ(ch, nullptr);
106 }
107
108} // namespace
TEST_F(MonitorTest, GetType)
Abstract interface for read/write access to variable.
Definition Channel.h:30
virtual bool set(double value)=0
Store [b]value[/b] into channel.
virtual bool get(double &value) const =0
Read channel.
virtual double getEz() const
Get component.
ConstEzField & getField() override
Return field.
virtual double getElementLength() const
Get design length.