File indexing completed on 2024-09-29 03:31:30
0001 /* 0002 File : MultiRangeTest_macros.h 0003 Project : LabPlot 0004 Description : Tests for multi ranges 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2021 Martin Marmsoler <martin.marmsoler@gmail.com> 0007 SPDX-FileCopyrightText: 2021 Stefan Gerlach <stefan.gerlach@uni.kn> 0008 0009 SPDX-License-Identifier: GPL-2.0-or-later 0010 */ 0011 0012 #include "MultiRangeTest.h" 0013 0014 #include "backend/core/Project.h" 0015 #include "backend/core/Workbook.h" 0016 #include "backend/lib/macros.h" 0017 #include "backend/matrix/Matrix.h" 0018 #include "backend/spreadsheet/Spreadsheet.h" 0019 #include "backend/worksheet/Worksheet.h" 0020 #include "backend/worksheet/plots/cartesian/Axis.h" 0021 #include "backend/worksheet/plots/cartesian/CartesianCoordinateSystem.h" 0022 #include "backend/worksheet/plots/cartesian/CartesianPlot.h" 0023 #include "backend/worksheet/plots/cartesian/CartesianPlotPrivate.h" 0024 #include "backend/worksheet/plots/cartesian/XYCurve.h" 0025 #include "backend/worksheet/plots/cartesian/XYEquationCurve.h" 0026 #include "commonfrontend/worksheet/WorksheetView.h" 0027 #include "kdefrontend/dockwidgets/BaseDock.h" 0028 #include "kdefrontend/dockwidgets/XYCurveDock.h" 0029 0030 #include <QAction> 0031 #include <QComboBox> 0032 #include <QGraphicsSceneWheelEvent> 0033 #include <QUndoStack> 0034 0035 // ############################################################################## 0036 // ##################### import of LabPlot projects ############################ 0037 // ############################################################################## 0038 0039 #define LOAD_PROJECT \ 0040 Project project; \ 0041 project.load(QFINDTESTDATA(QLatin1String("data/TestMultiRange.lml"))); \ 0042 /* check the project tree for the imported project */ \ 0043 /* first child of the root folder */ \ 0044 auto* aspect = project.child<AbstractAspect>(0); \ 0045 QVERIFY(aspect != nullptr); \ 0046 if (aspect) \ 0047 QCOMPARE(aspect->name(), QLatin1String("Arbeitsblatt")); \ 0048 QVERIFY(aspect->type() == AspectType::Worksheet); \ 0049 auto w = dynamic_cast<Worksheet*>(aspect); \ 0050 if (!w) \ 0051 return; \ 0052 \ 0053 auto p1 = dynamic_cast<CartesianPlot*>(aspect->child<CartesianPlot>(0)); \ 0054 QVERIFY(p1 != nullptr); \ 0055 auto p2 = dynamic_cast<CartesianPlot*>(aspect->child<CartesianPlot>(1)); \ 0056 QVERIFY(p2 != nullptr); \ 0057 if (!p1 || !p2) \ 0058 return; \ 0059 \ 0060 auto* view = dynamic_cast<WorksheetView*>(w->view()); \ 0061 QVERIFY(view != nullptr); \ 0062 view->initActions(); /* needed by SET_CARTESIAN_MOUSE_MODE() */ \ 0063 \ 0064 /* axis selected */ \ 0065 auto sinCurve = dynamic_cast<XYCurve*>(p1->child<XYCurve>(0)); \ 0066 QVERIFY(sinCurve != nullptr); \ 0067 if (!sinCurve) \ 0068 return; \ 0069 QCOMPARE(sinCurve->name(), QStringLiteral("sinCurve")); \ 0070 auto tanCurve = dynamic_cast<XYCurve*>(p1->child<XYCurve>(1)); \ 0071 QVERIFY(tanCurve != nullptr); \ 0072 if (!tanCurve) \ 0073 return; \ 0074 QCOMPARE(tanCurve->name(), QStringLiteral("tanCurve")); \ 0075 auto logCurve = dynamic_cast<XYCurve*>(p1->child<XYCurve>(2)); \ 0076 QVERIFY(logCurve != nullptr); \ 0077 if (!logCurve) \ 0078 return; \ 0079 QCOMPARE(logCurve->name(), QStringLiteral("logx")); \ 0080 \ 0081 auto cosCurve = dynamic_cast<XYCurve*>(p2->child<XYCurve>(0)); \ 0082 QVERIFY(cosCurve != nullptr); \ 0083 if (!cosCurve) \ 0084 return; \ 0085 QCOMPARE(cosCurve->name(), QStringLiteral("cosCurve")); \ 0086 \ 0087 auto horAxisP1 = static_cast<Axis*>(p1->child<Axis>(0)); \ 0088 QVERIFY(horAxisP1 != nullptr); \ 0089 QCOMPARE(horAxisP1->orientation() == Axis::Orientation::Horizontal, true); \ 0090 \ 0091 auto vertAxisP1 = static_cast<Axis*>(p1->child<Axis>(1)); \ 0092 QVERIFY(vertAxisP1 != nullptr); \ 0093 QCOMPARE(vertAxisP1->orientation() == Axis::Orientation::Vertical, true); \ 0094 \ 0095 auto vertAxis2P1 = static_cast<Axis*>(p1->child<Axis>(2)); \ 0096 QVERIFY(vertAxis2P1 != nullptr); \ 0097 QCOMPARE(vertAxis2P1->orientation() == Axis::Orientation::Vertical, true); \ 0098 \ 0099 auto vertAxis3P1 = static_cast<Axis*>(p1->child<Axis>(3)); \ 0100 QVERIFY(vertAxis3P1 != nullptr); \ 0101 QCOMPARE(vertAxis3P1->orientation() == Axis::Orientation::Vertical, true); \ 0102 QCOMPARE(vertAxis3P1->name(), QStringLiteral("y-axis 1")); \ 0103 \ 0104 auto horAxisP2 = static_cast<Axis*>(p2->child<Axis>(0)); \ 0105 QVERIFY(horAxisP2 != nullptr); \ 0106 QCOMPARE(horAxisP2->orientation() == Axis::Orientation::Horizontal, true); 0107 0108 #define SET_CARTESIAN_MOUSE_MODE(mode) \ 0109 QAction a(nullptr); \ 0110 a.setData(static_cast<int>(mode)); \ 0111 view->cartesianPlotMouseModeChanged(&a);