File indexing completed on 2024-05-05 03:48:27
0001 /* 0002 File : IntegrationTest.cpp 0003 Project : LabPlot 0004 Description : Tests for numerical integration 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2018 Stefan Gerlach <stefan.gerlach@uni.kn> 0007 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #include "IntegrationTest.h" 0012 #include "backend/core/column/Column.h" 0013 #include "backend/worksheet/plots/cartesian/XYIntegrationCurve.h" 0014 0015 // ############################################################################## 0016 0017 void IntegrationTest::testLinear() { 0018 // data 0019 QVector<int> xData = {1, 2, 3, 4}; 0020 QVector<double> yData = {1., 2., 3., 4.}; 0021 0022 // data source columns 0023 Column xDataColumn(QStringLiteral("x"), AbstractColumn::ColumnMode::Integer); 0024 xDataColumn.replaceInteger(0, xData); 0025 0026 Column yDataColumn(QStringLiteral("y"), AbstractColumn::ColumnMode::Double); 0027 yDataColumn.replaceValues(0, yData); 0028 0029 XYIntegrationCurve integrationCurve(QStringLiteral("integration")); 0030 integrationCurve.setXDataColumn(&xDataColumn); 0031 integrationCurve.setYDataColumn(&yDataColumn); 0032 0033 // prepare the integration 0034 XYIntegrationCurve::IntegrationData integrationData = integrationCurve.integrationData(); 0035 integrationCurve.setIntegrationData(integrationData); 0036 0037 // perform the integration 0038 integrationCurve.recalculate(); 0039 const XYIntegrationCurve::IntegrationResult& integrationResult = integrationCurve.integrationResult(); 0040 0041 // check the results 0042 QCOMPARE(integrationResult.available, true); 0043 QCOMPARE(integrationResult.valid, true); 0044 0045 const AbstractColumn* resultXDataColumn = integrationCurve.xColumn(); 0046 const AbstractColumn* resultYDataColumn = integrationCurve.yColumn(); 0047 0048 const int np = resultXDataColumn->rowCount(); 0049 QCOMPARE(np, 4); 0050 0051 for (int i = 0; i < np; i++) 0052 QCOMPARE(resultXDataColumn->valueAt(i), (double)i + 1); 0053 0054 QCOMPARE(resultYDataColumn->valueAt(0), 0.); 0055 QCOMPARE(resultYDataColumn->valueAt(1), 1.5); 0056 QCOMPARE(resultYDataColumn->valueAt(2), 4.); 0057 QCOMPARE(resultYDataColumn->valueAt(3), 7.5); 0058 } 0059 0060 QTEST_MAIN(IntegrationTest)