ProteoWizard
Public Member Functions | Protected Member Functions | List of all members
CubicHermiteSplineTest Class Reference

Public Member Functions

void Run ()
 

Protected Member Functions

virtual void SetUp ()
 
void TearDown ()
 
void InterpolationTest ()
 
void CubicSplineDummyInitialize (const vector< double > &x, const vector< double > &y)
 
void ErrorTest ()
 
void DiffAndIntegrateTest ()
 

Detailed Description

Definition at line 27 of file CubicHermiteSplineTest.cpp.

Member Function Documentation

◆ Run()

void CubicHermiteSplineTest::Run ( )
inline

Definition at line 29 of file CubicHermiteSplineTest.cpp.

30  {
31  SetUp();
33  ErrorTest();
34  TearDown();
35  }

Referenced by main().

◆ SetUp()

virtual void CubicHermiteSplineTest::SetUp ( )
inlineprotectedvirtual

Definition at line 39 of file CubicHermiteSplineTest.cpp.

40  {
41  }

◆ TearDown()

void CubicHermiteSplineTest::TearDown ( )
inlineprotected

Definition at line 43 of file CubicHermiteSplineTest.cpp.

44  {
45  }

◆ InterpolationTest()

void CubicHermiteSplineTest::InterpolationTest ( )
inlineprotected

Definition at line 47 of file CubicHermiteSplineTest.cpp.

48  {
49  vector<double> x;
50  vector<double> y;
51  x.push_back(3.1415);
52  x.push_back(3.63753);
53  x.push_back(4.13355);
54  x.push_back(4.62958);
55  x.push_back(5.12561);
56  x.push_back(5.62163);
57  x.push_back(6.11766);
58  x.push_back(6.61368);
59  x.push_back(7.10971);
60  x.push_back(7.60574);
61  x.push_back(8.10176);
62  x.push_back(8.59779);
63  x.push_back(9.09382);
64  x.push_back(9.58984);
65  x.push_back(10.0859);
66  x.push_back(10.5819);
67  x.push_back(11.0779);
68  x.push_back(11.5739);
69  x.push_back(12.07);
70  x.push_back(12.566);
71  y.push_back(-5.89868e-005);
72  y.push_back(0.233061);
73  y.push_back(0.216427);
74  y.push_back(0.0486148);
75  y.push_back(-0.133157);
76  y.push_back(-0.172031);
77  y.push_back(-0.0456079);
78  y.push_back(0.0906686);
79  y.push_back(0.116462);
80  y.push_back(0.0557287);
81  y.push_back(-0.03875);
82  y.push_back(-0.10346);
83  y.push_back(-0.0734111);
84  y.push_back(0.0298435);
85  y.push_back(0.094886);
86  y.push_back(0.0588743);
87  y.push_back(-0.0171021);
88  y.push_back(-0.0630512);
89  y.push_back(-0.0601684);
90  y.push_back(-0.00994154);
91 
92  vector<double> xIn;
93  vector<double> yIn;
94  const double PI = 3.1415;
95  const int N = 12;
96  double xx = PI;
97  double step = 4 * PI / (N - 1);
98  for (int i = 0; i < N; ++i, xx += step)
99  {
100  xIn.push_back(xx);
101  yIn.push_back(sin(2 * xx) / xx);
102  }
103 
104  CubicHermiteSpline interpolator(xIn, yIn);
105  const int N_out = 20;
106  xx = PI;
107  step = (3 * PI) / (N_out - 1);
108  for (int i = 0; i < N_out; ++i, xx += step)
109  {
110  double interpolatedX = interpolator.Interpolate(xx);
111  double diff = abs(interpolatedX - y[i]);
112  unit_assert(diff < 1.0);
113  }
114  }

References diff(), pwiz::analysis::CubicHermiteSpline::Interpolate(), N, ralab::constants::PI(), unit_assert, x, and y.

◆ CubicSplineDummyInitialize()

void CubicHermiteSplineTest::CubicSplineDummyInitialize ( const vector< double > &  x,
const vector< double > &  y 
)
inlineprotected

Definition at line 116 of file CubicHermiteSplineTest.cpp.

117  {
118  CubicHermiteSpline interpolator(x, y);
119  }

References x, and y.

◆ ErrorTest()

void CubicHermiteSplineTest::ErrorTest ( )
inlineprotected

Definition at line 121 of file CubicHermiteSplineTest.cpp.

122  {
123  // Should throw on empty data
124  vector<double> x;
125  vector<double> y;
126  unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error, "[CubicHermiteSpline] unusable values were provided to the spline function.");
127 
128  // Should throw on unsorted x data
129  x.clear();
130  y.clear();
131  x.push_back(1.0);
132  x.push_back(0.0);
133  x.push_back(2.0);
134  for (size_t i = 0; i < x.size(); ++i)
135  {
136  y.push_back(0.0);
137  }
138  unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error, "[CubicHermiteSpline] unusable values were provided to the spline function.");
139 
140  // Should throw on non-unique x data
141  x.clear();
142  y.clear();
143  x.push_back(1.0);
144  x.push_back(2.0);
145  x.push_back(2.0);
146  for (size_t i = 0; i < x.size(); ++i)
147  {
148  y.push_back(0.0);
149  }
150  unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error, "[CubicHermiteSpline] unusable values were provided to the spline function.");
151 
152  // Should throw on different lengths of x and y data
153  x.clear();
154  y.clear();
155  x.push_back(1.0);
156  x.push_back(2.0);
157  x.push_back(3.0);
158  for (size_t i = 0; i < x.size(); ++i)
159  {
160  y.push_back(0.0);
161  }
162  y.push_back(0.0); // add one more to y data
163  unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error, "[CubicHermiteSpline] unusable values were provided to the spline function.");
164 
165  // Should throw on different lengths of x and y data
166  x.clear();
167  y.clear();
168  x.push_back(1.0);
169  x.push_back(2.0);
170  x.push_back(3.0);
171  y.push_back(0.0);
172  y.push_back(0.0);
173  unit_assert_throws_what(CubicSplineDummyInitialize(x, y), std::runtime_error, "[CubicHermiteSpline] unusable values were provided to the spline function.");
174  }

References unit_assert_throws_what, x, and y.

◆ DiffAndIntegrateTest()

void CubicHermiteSplineTest::DiffAndIntegrateTest ( )
inlineprotected

Definition at line 176 of file CubicHermiteSplineTest.cpp.

177  {
178  vector<double> x;
179  vector<double> y;
180  x.push_back(1.0);
181  x.push_back(2.0);
182  x.push_back(3.0);
183  x.push_back(4.0);
184  y.push_back(1.0);
185  y.push_back(2.0);
186  y.push_back(3.0);
187  y.push_back(6.0);
188 
189  CubicHermiteSpline interpolator(x, y);
190 
191  unit_assert(!interpolator.IsDifferentiable());
192  unit_assert(!interpolator.IsIntegrable());
193 
194  if (interpolator.IsDifferentiable())
195  {
196  // Differentiation is not implemented. This is a placeholder for if the feature is added.
197  unit_assert(false);
198 
199  // Placeholder test of differentiation
200  unit_assert_equal(interpolator.Differentiate(2.0), 1.0, 0.00001);
201  }
202  else
203  {
204  unit_assert_throws_what(interpolator.Differentiate(2.0), runtime_error, "[CubicHermiteSpline] attempted to differentiate a non-differentiable implementation of IInterpolation.")
205  }
206 
207  if (interpolator.IsIntegrable())
208  {
209  // Integration is not implemented. This is a placeholder for if the feature is added.
210  unit_assert(false);
211 
212  // Placeholder test of integration
213  unit_assert_equal(interpolator.Integrate(1.0, 2.0), 0.5, 0.00001);
214  }
215  else
216  {
217  unit_assert_throws_what(interpolator.Integrate(1.0, 2.0), runtime_error, "[CubicHermiteSpline] attempted to integrate a non-integrable implementation of IInterpolation.")
218  }
219  }

References pwiz::analysis::CubicHermiteSpline::Differentiate(), pwiz::analysis::CubicHermiteSpline::Integrate(), pwiz::analysis::CubicHermiteSpline::IsDifferentiable(), pwiz::analysis::CubicHermiteSpline::IsIntegrable(), unit_assert, unit_assert_equal, unit_assert_throws_what, x, and y.


The documentation for this class was generated from the following file:
unit_assert_throws_what
#define unit_assert_throws_what(x, exception, whatStr)
Definition: unit.hpp:119
unit_assert_equal
#define unit_assert_equal(x, y, epsilon)
Definition: unit.hpp:99
CubicHermiteSplineTest::SetUp
virtual void SetUp()
Definition: CubicHermiteSplineTest.cpp:39
pwiz::analysis::CubicHermiteSpline
An implementation of the IInterpolation interface that acts as a wrapper for a cSpline.
Definition: CubicHermiteSpline.hpp:33
y
KernelTraitsBase< Kernel >::space_type::ordinate_type y
Definition: MatchedFilter.hpp:143
CubicHermiteSplineTest::InterpolationTest
void InterpolationTest()
Definition: CubicHermiteSplineTest.cpp:47
diff
void diff(const string &filename1, const string &filename2)
Definition: FrequencyDataTest.cpp:40
x
KernelTraitsBase< Kernel >::space_type::abscissa_type x
Definition: MatchedFilter.hpp:142
CubicHermiteSplineTest::CubicSplineDummyInitialize
void CubicSplineDummyInitialize(const vector< double > &x, const vector< double > &y)
Definition: CubicHermiteSplineTest.cpp:116
CubicHermiteSplineTest::ErrorTest
void ErrorTest()
Definition: CubicHermiteSplineTest.cpp:121
ralab::constants::PI
const double PI(3.14159265358979323846264338327950288)
the ratio of the circumference of a circle to its diameter;
unit_assert
#define unit_assert(x)
Definition: unit.hpp:85
N
N
Definition: Chemistry.hpp:80
CubicHermiteSplineTest::TearDown
void TearDown()
Definition: CubicHermiteSplineTest.cpp:43