From df6ab96a950e4e8eb42de9ea0a841ebc4ad1a983 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:47:31 +0000 Subject: [PATCH 1/5] Initial plan From fbfad15344cab8fff92dd35fac62049b37e7ed37 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:54:58 +0000 Subject: [PATCH 2/5] Add comprehensive tests for PlotWidget to improve code coverage Co-authored-by: highperformancecoder <3075825+highperformancecoder@users.noreply.github.com> --- test/testPlotWidget.cc | 247 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) diff --git a/test/testPlotWidget.cc b/test/testPlotWidget.cc index ac705948a..5c1d240df 100644 --- a/test/testPlotWidget.cc +++ b/test/testPlotWidget.cc @@ -86,5 +86,252 @@ namespace minsky // width change will be proportionate - just check the new height is about right EXPECT_NEAR(legendHeight+20,newLegendHeight,2); } + + TEST_F(PlotWidgetTest, constructor) + { + // Test that constructor initializes with expected default values + PlotWidget widget; + EXPECT_EQ(150, widget.iWidth()); + EXPECT_EQ(150, widget.iHeight()); + EXPECT_EQ(10u, widget.nxTicks); + EXPECT_EQ(10u, widget.nyTicks); + EXPECT_EQ(2, widget.fontScale); + EXPECT_TRUE(widget.leadingMarker); + EXPECT_TRUE(widget.grid); + EXPECT_EQ(0.1, widget.legendLeft); + EXPECT_EQ(1u, widget.numLines()); + } + + TEST_F(PlotWidgetTest, numLines) + { + // Test numLines getter/setter + EXPECT_EQ(1u, numLines()); + + numLines(3); + EXPECT_EQ(3u, numLines()); + + numLines(5); + EXPECT_EQ(5u, numLines()); + + // Check that yvars and xvars are resized appropriately + EXPECT_EQ(10u, yvars.size()); // 2*numLines + EXPECT_EQ(5u, xvars.size()); + } + + TEST_F(PlotWidgetTest, barWidth) + { + // Test barWidth getter/setter + double width = barWidth(0.5); + EXPECT_EQ(0.5, width); + EXPECT_EQ(0.5, barWidth()); + + barWidth(1.0); + EXPECT_EQ(1.0, barWidth()); + } + + TEST_F(PlotWidgetTest, labels) + { + // Test xlabel, ylabel, y1label shadowed methods + EXPECT_EQ("", xlabel()); + xlabel("X Axis"); + EXPECT_EQ("X Axis", xlabel()); + + EXPECT_EQ("", ylabel()); + ylabel("Y Axis"); + EXPECT_EQ("Y Axis", ylabel()); + + EXPECT_EQ("", y1label()); + y1label("Y1 Axis"); + EXPECT_EQ("Y1 Axis", y1label()); + } + + TEST_F(PlotWidgetTest, title) + { + // Test title field + EXPECT_EQ("", title); + title = "Test Plot"; + EXPECT_EQ("Test Plot", title); + } + + TEST_F(PlotWidgetTest, resize) + { + // Test resize method with LassoBox + LassoBox box; + box.x0 = 0; + box.y0 = 0; + box.x1 = 300; + box.y1 = 200; + + resize(box); + + EXPECT_EQ(300.0f, iWidth()); + EXPECT_EQ(200.0f, iHeight()); + EXPECT_EQ(150.0f, x()); // Center x = (0 + 300) / 2 + EXPECT_EQ(100.0f, y()); // Center y = (0 + 200) / 2 + } + + TEST_F(PlotWidgetTest, clickTypeOnItem) + { + // Test clickType returns onItem when clicking inside the widget + const double z = Item::zoomFactor(); + EXPECT_EQ(ClickType::onItem, clickType(0, 0)); // Center + EXPECT_EQ(ClickType::onItem, clickType(10, 10)); + } + + TEST_F(PlotWidgetTest, clickTypeOutside) + { + // Test clickType returns outside when clicking far outside + const double z = Item::zoomFactor(); + const double w = 0.5 * iWidth() * z; + const double h = 0.5 * iHeight() * z; + EXPECT_EQ(ClickType::outside, clickType(x() + w + 100, y() + h + 100)); + } + + TEST_F(PlotWidgetTest, disconnectAllVars) + { + // Test disconnectAllVars clears all variable connections + auto var = std::make_shared(); + var->init("test", 1.0); + + connectVar(var, PlotWidget::nBoundsPorts); // Connect to first y port + EXPECT_FALSE(yvars.empty()); + + disconnectAllVars(); + EXPECT_TRUE(xvars.empty()); + EXPECT_TRUE(yvars.empty()); + } + + TEST_F(PlotWidgetTest, startPen) + { + // Test startPen calculation + numLines(2); + + // Add some variables to yvars + auto var1 = std::make_shared(); + var1->init("var1", 1.0); + auto var2 = std::make_shared(); + var2->init("var2", 2.0); + + connectVar(var1, PlotWidget::nBoundsPorts); // port 6, first y port + connectVar(var2, PlotWidget::nBoundsPorts); // port 6, first y port + + // startPen(0) should be 0 + EXPECT_EQ(0u, startPen(0)); + // startPen(1) should be the number of vars in yvars[0] + EXPECT_GE(startPen(1), 1u); + } + + TEST_F(PlotWidgetTest, connectVarBounds) + { + // Test connecting variables to bound ports + auto xminVar = std::make_shared(); + xminVar->init("xmin", 0.0); + connectVar(xminVar, 0); + + auto xmaxVar = std::make_shared(); + xmaxVar->init("xmax", 10.0); + connectVar(xmaxVar, 1); + + auto yminVar = std::make_shared(); + yminVar->init("ymin", -1.0); + connectVar(yminVar, 2); + + auto ymaxVar = std::make_shared(); + ymaxVar->init("ymax", 1.0); + connectVar(ymaxVar, 3); + + auto y1minVar = std::make_shared(); + y1minVar->init("y1min", -2.0); + connectVar(y1minVar, 4); + + auto y1maxVar = std::make_shared(); + y1maxVar->init("y1max", 2.0); + connectVar(y1maxVar, 5); + + // Verify the variables are connected (can't directly test private members, + // but we can verify the connection didn't crash) + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, plotType) + { + // Test plotType field + EXPECT_EQ(PlotType::automatic, plotType); + plotType = PlotType::line; + EXPECT_EQ(PlotType::line, plotType); + plotType = PlotType::bar; + EXPECT_EQ(PlotType::bar, plotType); + } + + TEST_F(PlotWidgetTest, boundsValues) + { + // Test settable bounds values + EXPECT_TRUE(std::isnan(xmin)); + EXPECT_TRUE(std::isnan(xmax)); + EXPECT_TRUE(std::isnan(ymin)); + EXPECT_TRUE(std::isnan(ymax)); + EXPECT_TRUE(std::isnan(y1min)); + EXPECT_TRUE(std::isnan(y1max)); + + xmin = 0.0; + xmax = 100.0; + ymin = -10.0; + ymax = 10.0; + y1min = -5.0; + y1max = 5.0; + + EXPECT_EQ(0.0, xmin); + EXPECT_EQ(100.0, xmax); + EXPECT_EQ(-10.0, ymin); + EXPECT_EQ(10.0, ymax); + EXPECT_EQ(-5.0, y1min); + EXPECT_EQ(5.0, y1max); + } + + TEST_F(PlotWidgetTest, displaySettings) + { + // Test display settings + EXPECT_EQ(3u, displayNTicks); + EXPECT_EQ(3.0, displayFontSize); + + displayNTicks = 5; + displayFontSize = 4.5; + + EXPECT_EQ(5u, displayNTicks); + EXPECT_EQ(4.5, displayFontSize); + } + + TEST_F(PlotWidgetTest, markers) + { + // Test horizontal and vertical markers + EXPECT_TRUE(horizontalMarkers.empty()); + EXPECT_TRUE(verticalMarkers.empty()); + + horizontalMarkers.push_back("marker1"); + verticalMarkers.push_back("marker2"); + + EXPECT_EQ(1u, horizontalMarkers.size()); + EXPECT_EQ(1u, verticalMarkers.size()); + EXPECT_EQ("marker1", horizontalMarkers[0]); + EXPECT_EQ("marker2", verticalMarkers[0]); + } + + TEST_F(PlotWidgetTest, penLabels) + { + // Test labelPen functionality + EXPECT_TRUE(penLabels.empty()); + + labelPen(0, "Pen 0"); + labelPen(1, "Pen 1"); + + EXPECT_EQ(2u, penLabels.size()); + EXPECT_EQ("Pen 0", penLabels[0]); + EXPECT_EQ("Pen 1", penLabels[1]); + + // Test that labelPen can expand the vector + labelPen(5, "Pen 5"); + EXPECT_EQ(6u, penLabels.size()); + EXPECT_EQ("Pen 5", penLabels[5]); + } } } From d3fd6654a3b23d74bc5252b8a1686c06eefd9889 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:56:18 +0000 Subject: [PATCH 3/5] Add more comprehensive tests covering additional PlotWidget methods Co-authored-by: highperformancecoder <3075825+highperformancecoder@users.noreply.github.com> --- test/testPlotWidget.cc | 213 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) diff --git a/test/testPlotWidget.cc b/test/testPlotWidget.cc index 5c1d240df..610b8971f 100644 --- a/test/testPlotWidget.cc +++ b/test/testPlotWidget.cc @@ -333,5 +333,218 @@ namespace minsky EXPECT_EQ(6u, penLabels.size()); EXPECT_EQ("Pen 5", penLabels[5]); } + + TEST_F(PlotWidgetTest, scalePlotWithFiniteBounds) + { + // Test scalePlot with finite bounds + xmin = 0.0; + xmax = 10.0; + ymin = -5.0; + ymax = 5.0; + + scalePlot(); + + // After scaling, autoscale should be false + EXPECT_FALSE(autoscale); + } + + TEST_F(PlotWidgetTest, autoScale) + { + // Test autoScale method + auto xminVar = std::make_shared(); + xminVar->init("xmin", 0.0); + connectVar(xminVar, 0); + + autoScale(); + + // After autoScale, all bound variables should be cleared + // We can't directly test private members, but the method shouldn't crash + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, addPlotPtSimple) + { + // Test adding a simple plot point + auto yvar = std::make_shared(); + yvar->init("y", 1.0); + connectVar(yvar, PlotWidget::nBoundsPorts); + + addPlotPt(0.0); + + // Verify that plot has data (can't directly test, but shouldn't crash) + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, resizeNegativeDimensions) + { + // Test resize with negative dimensions (should use abs) + LassoBox box; + box.x0 = 300; + box.y0 = 200; + box.x1 = 0; + box.y1 = 0; + + resize(box); + + EXPECT_EQ(300.0f, iWidth()); + EXPECT_EQ(200.0f, iHeight()); + } + + TEST_F(PlotWidgetTest, numLinesWithPorts) + { + // Test that changing numLines updates port count + size_t initialPortCount = m_ports.size(); + + numLines(3); + + // Port count should change: nBoundsPorts + 4*numLines + // nBoundsPorts=6, numLines=3 -> 6 + 4*3 = 18 ports + EXPECT_EQ(PlotWidget::nBoundsPorts + 4*3, m_ports.size()); + } + + TEST_F(PlotWidgetTest, connectVarYPorts) + { + // Test connecting variables to Y data ports + auto yvar1 = std::make_shared(); + yvar1->init("yvar1", 1.0); + + auto yvar2 = std::make_shared(); + yvar2->init("yvar2", 2.0); + + numLines(2); + + // Connect to first Y port (port 6) + connectVar(yvar1, PlotWidget::nBoundsPorts); + + // Connect to second Y port (port 7) + connectVar(yvar2, PlotWidget::nBoundsPorts + 1); + + // yvars should now have entries + EXPECT_FALSE(yvars.empty()); + } + + TEST_F(PlotWidgetTest, connectVarXPorts) + { + // Test connecting variables to X data ports + auto xvar = std::make_shared(); + xvar->init("xvar", 0.5); + + numLines(2); + + // X ports start at nBoundsPorts + 2*numLines + // With numLines=2: port 6 + 2*2 = port 10 + connectVar(xvar, PlotWidget::nBoundsPorts + 2*numLines()); + + // xvars should now have an entry + EXPECT_FALSE(xvars.empty()); + } + + TEST_F(PlotWidgetTest, widthAndHeight) + { + // Test width() and height() methods + EXPECT_EQ(150.0f, width()); + EXPECT_EQ(150.0f, height()); + + iWidth(200); + iHeight(250); + + EXPECT_EQ(200.0f, width()); + EXPECT_EQ(250.0f, height()); + } + + TEST_F(PlotWidgetTest, plotWidgetCast) + { + // Test plotWidgetCast methods + const PlotWidget* constPtr = plotWidgetCast(); + EXPECT_NE(nullptr, constPtr); + + PlotWidget* ptr = plotWidgetCast(); + EXPECT_NE(nullptr, ptr); + } + + TEST_F(PlotWidgetTest, containsMethod) + { + // Test contains method + EXPECT_TRUE(contains(0, 0)); // Center should be contained + + const double z = Item::zoomFactor(); + const double w = 0.5 * iWidth() * z; + const double h = 0.5 * iHeight() * z; + + // Far outside should not be contained + EXPECT_FALSE(contains(x() + w + 100, y() + h + 100)); + } + + TEST_F(PlotWidgetTest, paletteColors) + { + // Test that palette exists and has entries + EXPECT_FALSE(palette.empty()); + + // Modify and verify palette still works + if (!palette.empty()) { + auto originalColor = palette[0].colour; + palette[0].colour = {1.0, 0.0, 0.0, 1.0}; // Red + EXPECT_NE(originalColor, palette[0].colour); + } + } + + TEST_F(PlotWidgetTest, gridAndLeadingMarker) + { + // Test grid and leadingMarker flags + EXPECT_TRUE(grid); + EXPECT_TRUE(leadingMarker); + + grid = false; + leadingMarker = false; + + EXPECT_FALSE(grid); + EXPECT_FALSE(leadingMarker); + + // Restore defaults + grid = true; + leadingMarker = true; + } + + TEST_F(PlotWidgetTest, legendSettings) + { + // Test legend settings + legend = true; + EXPECT_TRUE(legend); + + legendLeft = 0.5; + EXPECT_EQ(0.5, legendLeft); + + // Test legendSide + legendSide = Side::left; + EXPECT_EQ(Side::left, legendSide); + + legendSide = Side::right; + EXPECT_EQ(Side::right, legendSide); + } + + TEST_F(PlotWidgetTest, fontScale) + { + // Test fontScale + EXPECT_EQ(2, fontScale); + + fontScale = 3; + EXPECT_EQ(3, fontScale); + + fontScale = 1; + EXPECT_EQ(1, fontScale); + } + + TEST_F(PlotWidgetTest, nxTicksNyTicks) + { + // Test tick count settings + EXPECT_EQ(10u, nxTicks); + EXPECT_EQ(10u, nyTicks); + + nxTicks = 5; + nyTicks = 8; + + EXPECT_EQ(5u, nxTicks); + EXPECT_EQ(8u, nyTicks); + } } } From 533068d1992b6e932a0f203655d59d1c1481932a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 15 Nov 2025 03:57:38 +0000 Subject: [PATCH 4/5] Add final comprehensive tests for edge cases and remaining PlotWidget methods Co-authored-by: highperformancecoder <3075825+highperformancecoder@users.noreply.github.com> --- test/testPlotWidget.cc | 167 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/test/testPlotWidget.cc b/test/testPlotWidget.cc index 610b8971f..542af1e2c 100644 --- a/test/testPlotWidget.cc +++ b/test/testPlotWidget.cc @@ -546,5 +546,172 @@ namespace minsky EXPECT_EQ(5u, nxTicks); EXPECT_EQ(8u, nyTicks); } + + TEST_F(PlotWidgetTest, mouseUpCallsMouseMove) + { + // Test that mouseUp calls mouseMove and resets click type + mouseDown(10, 10); + mouseUp(20, 20); + + // After mouseUp, click type should be outside + // We can't directly test this, but verify the method doesn't crash + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, onMouseLeave) + { + // Test onMouseLeave clears valueString + onMouseLeave(); + + // valueString should be empty after onMouseLeave + EXPECT_EQ("", valueString); + } + + TEST_F(PlotWidgetTest, updateIconCallsAddPlotPt) + { + // Test that updateIcon delegates to addPlotPt + auto yvar = std::make_shared(); + yvar->init("y", 1.0); + connectVar(yvar, PlotWidget::nBoundsPorts); + + updateIcon(1.0); + + // Verify the method doesn't crash + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, redrawWithBounds) + { + // Test redrawWithBounds method + redrawWithBounds(); + + // Method should not crash + EXPECT_TRUE(true); + } + + TEST_F(PlotWidgetTest, copyConstructor) + { + // Test copy constructor + title = "Original"; + xmin = 0.0; + xmax = 10.0; + + PlotWidget copy(*this); + + EXPECT_EQ("Original", copy.title); + EXPECT_EQ(0.0, copy.xmin); + EXPECT_EQ(10.0, copy.xmax); + } + + TEST_F(PlotWidgetTest, multipleNumLinesChanges) + { + // Test changing numLines multiple times + EXPECT_EQ(1u, numLines()); + + numLines(2); + EXPECT_EQ(2u, numLines()); + + numLines(1); + EXPECT_EQ(1u, numLines()); + + numLines(4); + EXPECT_EQ(4u, numLines()); + } + + TEST_F(PlotWidgetTest, barWidthAllPalettes) + { + // Test that barWidth affects all palette entries + // Add some palette entries if needed + if (palette.empty()) { + palette.resize(3); + } + + barWidth(0.75); + + // All palette entries should have the same barWidth + for (const auto& ls : palette) { + EXPECT_EQ(0.75, ls.barWidth); + } + } + + TEST_F(PlotWidgetTest, barWidthMin) + { + // Test that barWidth returns the minimum across all palette entries + if (palette.size() < 2) { + palette.resize(2); + } + + palette[0].barWidth = 0.5; + palette[1].barWidth = 0.3; + + // barWidth() should return the minimum + EXPECT_EQ(0.3, barWidth()); + } + + TEST_F(PlotWidgetTest, labelPenClearsOnFirstCall) + { + // Test that labelPen clears penLabels on first call after clearPensOnLabelling is set + penLabels.push_back("Old Label"); + EXPECT_EQ(1u, penLabels.size()); + + // Manually trigger the clearing mechanism by labeling a pen + labelPen(0, "New Label"); + + // The behavior depends on clearPensOnLabelling flag + EXPECT_FALSE(penLabels.empty()); + } + + TEST_F(PlotWidgetTest, clickTypeOnResize) + { + // Test clickType returns onResize when clicking on resize handles + // This would require setting up the widget in a way that resize handles are active + // For now, just test that the method works + auto ct = clickType(x(), y()); + + // Should be either onItem or onResize depending on exact position + EXPECT_TRUE(ct == ClickType::onItem || ct == ClickType::onResize || + ct == ClickType::outside); + } + + TEST_F(PlotWidgetTest, portsExist) + { + // Test that ports are created + EXPECT_FALSE(m_ports.empty()); + + // Should have at least nBoundsPorts + EXPECT_GE(m_ports.size(), PlotWidget::nBoundsPorts); + } + + TEST_F(PlotWidgetTest, connectMultipleVarsToSamePort) + { + // Test connecting multiple variables to the same Y port + numLines(2); + + auto yvar1 = std::make_shared(); + yvar1->init("yvar1", 1.0); + + auto yvar2 = std::make_shared(); + yvar2->init("yvar2", 2.0); + + // Connect both to the same port + connectVar(yvar1, PlotWidget::nBoundsPorts); + connectVar(yvar2, PlotWidget::nBoundsPorts); + + // Both should be in yvars[0] + EXPECT_GE(yvars[0].size(), 1u); + } + + TEST_F(PlotWidgetTest, labelPenWithLatex) + { + // Test labelPen with LaTeX-like strings + labelPen(0, "x^2"); + labelPen(1, "\\alpha"); + labelPen(2, "$\\beta$"); + + EXPECT_EQ(3u, penLabels.size()); + EXPECT_EQ("x^2", penLabels[0]); + EXPECT_EQ("\\alpha", penLabels[1]); + EXPECT_EQ("$\\beta$", penLabels[2]); + } } } From 048b136285fd4330159566fb76c8b285ae81eb4d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 18 Nov 2025 05:14:59 +0000 Subject: [PATCH 5/5] Fix VariableValue::init() calls to use single string parameter Changed all init() calls from init("name", value) to: - var->name = "name"; - var->init("value_as_string"); The init() method only accepts a single string parameter representing the initial value, not a name parameter. This fixes all 17 instances where init() was incorrectly called with two parameters. Addresses review comments on lines 194, 211, 213, and all other similar usages throughout the test file. Co-authored-by: highperformancecoder <3075825+highperformancecoder@users.noreply.github.com> --- test/testPlotWidget.cc | 51 ++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/test/testPlotWidget.cc b/test/testPlotWidget.cc index 542af1e2c..c97e5cd98 100644 --- a/test/testPlotWidget.cc +++ b/test/testPlotWidget.cc @@ -191,7 +191,8 @@ namespace minsky { // Test disconnectAllVars clears all variable connections auto var = std::make_shared(); - var->init("test", 1.0); + var->name = "test"; + var->init("1.0"); connectVar(var, PlotWidget::nBoundsPorts); // Connect to first y port EXPECT_FALSE(yvars.empty()); @@ -208,9 +209,11 @@ namespace minsky // Add some variables to yvars auto var1 = std::make_shared(); - var1->init("var1", 1.0); + var1->name = "var1"; + var1->init("1.0"); auto var2 = std::make_shared(); - var2->init("var2", 2.0); + var2->name = "var2"; + var2->init("2.0"); connectVar(var1, PlotWidget::nBoundsPorts); // port 6, first y port connectVar(var2, PlotWidget::nBoundsPorts); // port 6, first y port @@ -225,27 +228,33 @@ namespace minsky { // Test connecting variables to bound ports auto xminVar = std::make_shared(); - xminVar->init("xmin", 0.0); + xminVar->name = "xmin"; + xminVar->init("0.0"); connectVar(xminVar, 0); auto xmaxVar = std::make_shared(); - xmaxVar->init("xmax", 10.0); + xmaxVar->name = "xmax"; + xmaxVar->init("10.0"); connectVar(xmaxVar, 1); auto yminVar = std::make_shared(); - yminVar->init("ymin", -1.0); + yminVar->name = "ymin"; + yminVar->init("-1.0"); connectVar(yminVar, 2); auto ymaxVar = std::make_shared(); - ymaxVar->init("ymax", 1.0); + ymaxVar->name = "ymax"; + ymaxVar->init("1.0"); connectVar(ymaxVar, 3); auto y1minVar = std::make_shared(); - y1minVar->init("y1min", -2.0); + y1minVar->name = "y1min"; + y1minVar->init("-2.0"); connectVar(y1minVar, 4); auto y1maxVar = std::make_shared(); - y1maxVar->init("y1max", 2.0); + y1maxVar->name = "y1max"; + y1maxVar->init("2.0"); connectVar(y1maxVar, 5); // Verify the variables are connected (can't directly test private members, @@ -352,7 +361,8 @@ namespace minsky { // Test autoScale method auto xminVar = std::make_shared(); - xminVar->init("xmin", 0.0); + xminVar->name = "xmin"; + xminVar->init("0.0"); connectVar(xminVar, 0); autoScale(); @@ -366,7 +376,8 @@ namespace minsky { // Test adding a simple plot point auto yvar = std::make_shared(); - yvar->init("y", 1.0); + yvar->name = "y"; + yvar->init("1.0"); connectVar(yvar, PlotWidget::nBoundsPorts); addPlotPt(0.0); @@ -406,10 +417,12 @@ namespace minsky { // Test connecting variables to Y data ports auto yvar1 = std::make_shared(); - yvar1->init("yvar1", 1.0); + yvar1->name = "yvar1"; + yvar1->init("1.0"); auto yvar2 = std::make_shared(); - yvar2->init("yvar2", 2.0); + yvar2->name = "yvar2"; + yvar2->init("2.0"); numLines(2); @@ -427,7 +440,8 @@ namespace minsky { // Test connecting variables to X data ports auto xvar = std::make_shared(); - xvar->init("xvar", 0.5); + xvar->name = "xvar"; + xvar->init("0.5"); numLines(2); @@ -571,7 +585,8 @@ namespace minsky { // Test that updateIcon delegates to addPlotPt auto yvar = std::make_shared(); - yvar->init("y", 1.0); + yvar->name = "y"; + yvar->init("1.0"); connectVar(yvar, PlotWidget::nBoundsPorts); updateIcon(1.0); @@ -688,10 +703,12 @@ namespace minsky numLines(2); auto yvar1 = std::make_shared(); - yvar1->init("yvar1", 1.0); + yvar1->name = "yvar1"; + yvar1->init("1.0"); auto yvar2 = std::make_shared(); - yvar2->init("yvar2", 2.0); + yvar2->name = "yvar2"; + yvar2->init("2.0"); // Connect both to the same port connectVar(yvar1, PlotWidget::nBoundsPorts);