| 214 | } |
| 215 | |
| 216 | void XYFunctionCurveTest::removeCurveRenameAutomaticAdd() { |
| 217 | Project project; |
| 218 | auto* ws = new Worksheet(QStringLiteral("Worksheet")); |
| 219 | QVERIFY(ws != nullptr); |
| 220 | project.addChild(ws); |
| 221 | |
| 222 | auto* p = new CartesianPlot(QStringLiteral("plot")); |
| 223 | p->setType(CartesianPlot::Type::TwoAxes); // Otherwise no axis are created |
| 224 | QVERIFY(p != nullptr); |
| 225 | ws->addChild(p); |
| 226 | |
| 227 | p->addChild(new XYEquationCurve(QLatin1String("eq"))); |
| 228 | |
| 229 | auto equationCurves = p->children(AspectType::XYEquationCurve); |
| 230 | QCOMPARE(equationCurves.count(), 1); |
| 231 | auto* equationCurve = static_cast<XYEquationCurve*>(equationCurves.at(0)); |
| 232 | XYEquationCurve::EquationData data; |
| 233 | data.count = 100; |
| 234 | data.expression1 = QStringLiteral("x"); |
| 235 | data.expression2 = QString(); |
| 236 | data.min = QStringLiteral("1"); |
| 237 | data.max = QStringLiteral("100"); |
| 238 | data.type = XYEquationCurve::EquationType::Cartesian; |
| 239 | equationCurve->setEquationData(data); |
| 240 | |
| 241 | QCOMPARE(equationCurve->xColumn()->rowCount(), data.count); |
| 242 | |
| 243 | p->addChild(new XYFunctionCurve(QLatin1String("eq2"))); |
| 244 | auto functionCurves = p->children(AspectType::XYFunctionCurve); |
| 245 | QCOMPARE(functionCurves.count(), 1); |
| 246 | auto* functionCurve = static_cast<XYFunctionCurve*>(functionCurves.at(0)); |
| 247 | |
| 248 | auto dock = XYFunctionCurveDock(nullptr); |
| 249 | dock.setupGeneral(); |
| 250 | dock.setCurves({functionCurve}); |
| 251 | |
| 252 | functionCurve->setFunction(QStringLiteral("2*x"), {QStringLiteral("x")}, {equationCurve}); |
| 253 | |
| 254 | { |
| 255 | const auto* xColumn = functionCurve->xColumn(); |
| 256 | const auto* yColumn = functionCurve->yColumn(); |
| 257 | QCOMPARE(xColumn->rowCount(), data.count); |
| 258 | QCOMPARE(yColumn->rowCount(), data.count); |
| 259 | for (int i = 0; i < xColumn->rowCount(); i++) { |
| 260 | VALUES_EQUAL(xColumn->valueAt(i), i + 1.); |
| 261 | VALUES_EQUAL(yColumn->valueAt(i), (i + 1.) * 2.); |
| 262 | } |
| 263 | } |
| 264 | |
| 265 | equationCurve->remove(); |
| 266 | |
| 267 | QCOMPARE(functionCurve->functionData().at(0).curve(), nullptr); |
| 268 | QCOMPARE(functionCurve->functionData().at(0).curvePath(), i18n("Project") + QStringLiteral("/Worksheet/plot/eq")); |
| 269 | |
| 270 | p->addChild(new XYEquationCurve(QLatin1String("eqDifferent"))); // different name than eq! |
| 271 | auto eqs = p->children(AspectType::XYEquationCurve); |
| 272 | QCOMPARE(eqs.count(), 1); |
| 273 | auto* equationCurveNew = static_cast<XYEquationCurve*>(eqs.at(0)); |
nothing calls this directly
no test coverage detected