geopro/tests/app/test_chart_strategy_registr...

73 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <gtest/gtest.h>
#include "DatasetDetailTab.hpp"
#include "IDatasetChartStrategy.hpp" // geopro::controller控制器层
#include "panels/chart/MeasurementStrategy.hpp"
#include "panels/chart/GrMeasurementStrategy.hpp"
using namespace geopro::controller;
namespace {
struct Fake : IDatasetChartStrategy {
std::string ddCode() const override { return "dd_inversion_data"; }
std::vector<TabSpec> tabs() const override {
return {
{QStringLiteral("原数据"), ViewKind::Scatter,
QStringLiteral("inversion.scatter"), /*lazy*/ false, /*paginated*/ false},
{QStringLiteral("网格数据"), ViewKind::FilledContour,
QStringLiteral("inversion.grid"), /*lazy*/ true, /*paginated*/ false},
};
}
};
}
TEST(ChartStrategyRegistry, FindsRegisteredAndDegradesUnknown) {
ChartStrategyRegistry reg;
reg.add(std::make_unique<Fake>());
EXPECT_TRUE(reg.supports("dd_inversion_data"));
EXPECT_NE(reg.find("dd_inversion_data"), nullptr);
EXPECT_FALSE(reg.supports("dd_unknown"));
EXPECT_EQ(reg.find("dd_unknown"), nullptr);
}
TEST(ChartStrategyRegistry, ExposesTabSpecsFromStrategy) {
ChartStrategyRegistry reg;
reg.add(std::make_unique<Fake>());
auto* s = reg.find("dd_inversion_data");
ASSERT_NE(s, nullptr);
const auto tabs = s->tabs();
ASSERT_EQ(tabs.size(), 2u);
EXPECT_FALSE(tabs[0].lazy); // 原数据非 lazy
EXPECT_TRUE(tabs[1].lazy); // 网格数据 lazy
EXPECT_EQ(tabs[1].kind, ViewKind::FilledContour);
}
TEST(MeasurementStrategy, DrivesTwoTabsScatterAndTable) {
geopro::app::MeasurementStrategy s;
EXPECT_EQ(s.ddCode(), "dd_ert_measurement_data");
const auto tabs = s.tabs();
ASSERT_EQ(tabs.size(), 2u);
// 散点图Scatter非 lazy。
EXPECT_EQ(tabs[0].title.toStdString(), std::string("散点图"));
EXPECT_EQ(tabs[0].kind, ViewKind::Scatter);
EXPECT_FALSE(tabs[0].lazy);
EXPECT_EQ(tabs[0].loaderKey.toStdString(), "ert_measurement.scatter");
// 数据列表Tablelazy。
EXPECT_EQ(tabs[1].title.toStdString(), std::string("数据列表"));
EXPECT_EQ(tabs[1].kind, ViewKind::Table);
EXPECT_TRUE(tabs[1].lazy);
EXPECT_EQ(tabs[1].loaderKey.toStdString(), "ert_measurement.rows");
}
TEST(GrMeasurementStrategy, DrivesBarAndTableTabs) {
geopro::app::GrMeasurementStrategy s;
EXPECT_EQ(s.ddCode(), "dd_ert_measurement_gr_data");
const auto tabs = s.tabs();
ASSERT_EQ(tabs.size(), 2u);
// 柱状图Bar非 lazy。
EXPECT_EQ(tabs[0].title.toStdString(), std::string("柱状图"));
EXPECT_EQ(tabs[0].kind, ViewKind::Bar);
EXPECT_FALSE(tabs[0].lazy);
EXPECT_EQ(tabs[0].loaderKey.toStdString(), "gr.bar");
// 列表Tablelazy。
EXPECT_EQ(tabs[1].title.toStdString(), std::string("列表"));
EXPECT_EQ(tabs[1].kind, ViewKind::Table);
EXPECT_TRUE(tabs[1].lazy);
EXPECT_EQ(tabs[1].loaderKey.toStdString(), "gr.rows");
}