19GTEST_TEST(testDifferentiationMethods, forwardDifferenceMethodReturnsAVectorWithASizeOneLessThanTheInputs)
21 std::vector<long double> x, y, expectedResult;
23 for (std::size_t i {}; i <= 10; ++i)
25 x.push_back(
static_cast<long double>(i));
26 y.push_back(
static_cast<long double>(i));
28 expectedResult.push_back((x[i] * x[i]) / 2.0);
32 std::vector<long double> forwardFDM1(10, 1.0);
33 auto forwardResult1 = DryChem::forwardDifferenceMethod(x, y);
35 ASSERT_EQ(forwardFDM1, forwardResult1);
38 std::vector<long double> forwardFDM2 {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5};
39 auto forwardResult2 = DryChem::forwardDifferenceMethod(x.begin(), x.end(), expectedResult.begin(), expectedResult.end());
41 ASSERT_EQ(forwardFDM2, forwardResult2);
44GTEST_TEST(testDifferentiationMethods, backwardsDifferenceMethodReturnsAVectorWithASizeOneLessThanTheInputs)
46 std::vector<long double> x, y, expectedResult;
48 for (std::size_t i {}; i <= 10; ++i)
50 x.push_back(
static_cast<long double>(i));
51 y.push_back(
static_cast<long double>(i));
53 expectedResult.push_back((x[i] * x[i]) / 2.0);
57 std::vector<long double> backwardsFDM1(10, 1.0);
58 auto backwardsResult1 = DryChem::backwardsDifferenceMethod(x, y);
60 ASSERT_EQ(backwardsFDM1, backwardsResult1);
63 std::vector<long double> backwardsFDM2 {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5};
65 = DryChem::backwardsDifferenceMethod(x.begin(), x.end(), expectedResult.begin(), expectedResult.end());
67 ASSERT_EQ(backwardsFDM2, backwardsResult2);
70GTEST_TEST(testDifferentiationMethods, defaultCenteredDifferenceMethodReturnsAVectorWithASizeEqualToThatOfTheInputs)
72 std::vector<long double> x, y, expectedResult;
74 for (std::size_t i {}; i <= 10; ++i)
76 x.push_back(
static_cast<long double>(i));
77 y.push_back(
static_cast<long double>(i));
78 expectedResult.push_back((x[i] * x[i]) / 2.0);
82 std::vector<long double> centeredFDM1(11, 1.0);
83 auto centeredResult1 = DryChem::centeredDifferenceMethod(x, y);
85 ASSERT_EQ(centeredFDM1, centeredResult1);
88 std::vector<long double> centeredFDM2 {0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 9.5};
90 = DryChem::centeredDifferenceMethod(x.begin(), x.end(), expectedResult.begin(), expectedResult.end());
92 ASSERT_EQ(centeredFDM2, centeredResult2);
95GTEST_TEST(testDifferentiationMethods, nonDefaultCenteredDifferenceMethodReturnsAVectorWithASizeTwoLessThanTheInputs)
97 std::vector<long double> x, y, expectedResult;
99 for (std::size_t i {}; i <= 10; ++i)
101 x.push_back(
static_cast<long double>(i));
102 y.push_back(
static_cast<long double>(i));
103 expectedResult.push_back((x[i] * x[i]) / 2.0);
107 std::vector<long double> centeredFDM1(9, 1.0);
108 auto centeredResult1 = DryChem::centeredDifferenceMethod(x, y,
false);
110 ASSERT_EQ(centeredFDM1, centeredResult1);
113 std::vector<long double> centeredFDM2 {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
115 = DryChem::centeredDifferenceMethod(x.begin(), x.end(), expectedResult.begin(), expectedResult.end(),
false);
117 ASSERT_EQ(centeredFDM2, centeredResult2);
120GTEST_TEST(testDifferentiationMethods, passingTwoDifferentlySizedContainersResultsInFatalException)
122 std::stringstream deathRegex;
124 deathRegex <<
"Common-Utilities Fatal Error: ";
126#if GTEST_USES_POSIX_RE
127 deathRegex <<
"[(](forward|backwards|centered)DifferenceMethod.hpp: *[0-9]*[)]\n\t";
128#elif GTEST_USES_SIMPLE_RE
129 deathRegex <<
"\\(\\S*DifferenceMethod.hpp: \\d*\\)\n\t";
132 deathRegex <<
"Input sizes for x and y containers must be the same.\n";
134 std::vector<long double> x {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
135 std::vector<long double> y {2.0, 5.0, 3.0, 7.0, 8.0, 9.0, 12.0, 10.0, 15.0, 20.0};
141 DryChem::forwardDifferenceMethod(x.begin(), x.end(), y.begin(), y.end() - 2);
143 catch (
const DryChem::InputSizeMismatch& except)
145 except.handleErrorWithMessage();
154 DryChem::backwardsDifferenceMethod(x.begin(), x.end(), y.begin(), y.end() - 2);
156 catch (
const DryChem::InputSizeMismatch& except)
158 except.handleErrorWithMessage();
167 DryChem::centeredDifferenceMethod(x.begin(), x.end(), y.begin(), y.end() - 2);
169 catch (
const DryChem::InputSizeMismatch& except)
171 except.handleErrorWithMessage();
GTEST_TEST(testDifferentiationMethods, forwardDifferenceMethodReturnsAVectorWithASizeOneLessThanTheInputs)
Definition testDifferentiationMethods.hpp:19