OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
OPAL
SDDSParserTest.cpp
Go to the documentation of this file.
1 
2 #include "Util/SDDSReader.h"
3 #include "gtest/gtest.h"
4 
5 
6 namespace {
7 
8  // The fixture for testing class Foo.
9  class SDDSParserTest : public ::testing::Test {
10  protected:
11 
12  SDDSParserTest() {
13  // You can do set-up work for each test here.
14  sddsr = new SDDSReader("resources/test.stat");
15  }
16 
17  virtual ~SDDSParserTest() {
18  // You can do clean-up work that doesn't throw exceptions here.
19  delete sddsr;
20  }
21 
22  // If the constructor and destructor are not enough for setting up
23  // and cleaning up each test, you can define the following methods:
24 
25  virtual void SetUp() {
26  // Code here will be called immediately after the constructor (right
27  // before each test).
28  sddsr->parseFile();
29  }
30 
31  virtual void TearDown() {
32  // Code here will be called immediately after each test (right
33  // before the destructor).
34  }
35 
36  // Objects declared here can be used by all tests in the test case
37  SDDSReader *sddsr;
38  };
39 
40  TEST_F(SDDSParserTest, ReadEnergy) {
41 
42  double energy = 0.0;
43  std::string s = "energy";
44  sddsr->getValue(1, s, energy);
45 
46  double expected = 2.220252349855340e-01;
47  ASSERT_DOUBLE_EQ(expected, energy);
48  }
49 
50  TEST_F(SDDSParserTest, ReadLastPosition) {
51 
52  double position = 0.0;
53  std::string s = "s";
54  sddsr->getValue(-1, s, position);
55 
56  double expected = 4.247573354842603e-03;
57  ASSERT_DOUBLE_EQ(expected, position);
58  }
59 
60  TEST_F(SDDSParserTest, InterpolateRms_x) {
61 
62  double spos = 4.0e-03;
63  double rmsx_interp = 0.0;
64 
65  EXPECT_NO_THROW({
66  sddsr->getInterpolatedValue(spos, "rms_x", rmsx_interp);
67  });
68 
69  double spos_before = 3.786226707177705e-03;
70  double spos_after = 4.015012129060398e-03;
71  double rmsx_before = 3.147090549966750e-04;
72  double rmsx_after = 3.166390884805550e-04;
73 
74  double expected = rmsx_before + (spos - spos_before) * (rmsx_after - rmsx_before) / (spos_after - spos_before);
75 
76  ASSERT_DOUBLE_EQ(expected, rmsx_interp);
77  }
78 
79 }
80 
81 int main(int argc, char **argv) {
82  ::testing::InitGoogleTest(&argc, argv);
83  return RUN_ALL_TESTS();
84 }
85 
Implements a parser and value extractor for Probe loss files.
Definition: SDDSReader.h:6
int main(int argc, char *argv[])
Definition: Main.cpp:107
void getValue(int t, std::string column_name, T &nval)
Definition: SDDSParser.h:72