#include #include "panels/chart/ScatterHoverTip.hpp" using geopro::app::electrodeHoverText; using geopro::app::measurementHoverText; using geopro::app::scatterHoverText; // 对齐原版 Plotly hovertemplate: // X: %{x:.3f}
Y: %{y:.3f}
值: %{marker.color:.3f} TEST(ScatterHoverTip, FormatsXYValueWith3Decimals) { const QString t = scatterHoverText(12.3456, 24.0, 60.77); EXPECT_EQ(t, QStringLiteral("X: 12.346
Y: 24.000
值: 60.770")); } TEST(ScatterHoverTip, RoundsAndPadsToFixed3) { // 负值、整数、需补零各覆盖一次 EXPECT_EQ(scatterHoverText(-1.0, 0.5, 1.0), QStringLiteral("X: -1.000
Y: 0.500
值: 1.000")); } // measurement 浮动框:X/Y/Value/a/b/m/n 多行(对齐原版 Plotly 浮动框)。 TEST(ScatterHoverTip, MeasurementFloatingTipShowsXYValueABMN) { const QString t = measurementHoverText(2.283, -1.2, 242.952988, 1, 4, 2, 3); EXPECT_EQ(t, QStringLiteral("X: 2.283
Y: -1.200
Value: 242.953" "
a: 1
b: 4
m: 2
n: 3")); } // 电极浮动框:x(7 位有效数字)/ y: 0 / num(电极编号),对齐原版 Plotly 电极 trace。 TEST(ScatterHoverTip, ElectrodeFloatingTipShowsXYNum) { const QString t = electrodeHoverText(5.123837209632222, 4); EXPECT_EQ(t, QStringLiteral("x: 5.123837
y: 0
num: 4")); }