feat/dataset-detail-chart #5
|
|
@ -83,4 +83,9 @@ vtk_module_autoinit(TARGETS geopro_tests MODULES ${VTK_LIBRARIES})
|
|||
target_include_directories(geopro_tests PRIVATE ${CMAKE_SOURCE_DIR}/src/app)
|
||||
target_sources(geopro_tests PRIVATE app/test_chart_strategy_registry.cpp)
|
||||
|
||||
# controller 层:DatasetDetailController 编排集成测试(QSignalSpy 验证 chartReady/loadFailed)。
|
||||
find_package(Qt6 COMPONENTS Test REQUIRED)
|
||||
target_sources(geopro_tests PRIVATE controller/test_dataset_detail_controller.cpp)
|
||||
target_link_libraries(geopro_tests PRIVATE geopro_controller Qt6::Test)
|
||||
|
||||
add_subdirectory(spike) # spike S3: banded contour 渲染验证
|
||||
|
|
|
|||
|
|
@ -0,0 +1,30 @@
|
|||
#include <gtest/gtest.h>
|
||||
#include <QSignalSpy>
|
||||
#include "DatasetDetailController.hpp"
|
||||
#include "repo/IDatasetRepository.hpp"
|
||||
using namespace geopro;
|
||||
namespace {
|
||||
struct StubRepo : data::IDatasetRepository {
|
||||
bool fail = false;
|
||||
std::vector<data::GsNode> loadStructure() override { return {}; }
|
||||
core::Grid loadGrid(const std::string&) override { if (fail) throw std::runtime_error("x"); core::Grid g(2,2); g.x={0,1}; g.y={0,1}; return g; }
|
||||
core::ScatterField loadScatter(const std::string&) override { return {}; }
|
||||
core::ColorScale loadColorScale(const std::string&) override { return {}; }
|
||||
core::ColorScale loadScatterColorScale(const std::string&) override { return {}; }
|
||||
std::vector<core::Anomaly> loadAnomalies(const std::string&) override { return {}; }
|
||||
};
|
||||
}
|
||||
TEST(DatasetDetailController, EmitsChartReadyOnSuccess) {
|
||||
StubRepo repo;
|
||||
controller::DatasetDetailController c(repo);
|
||||
QSignalSpy spy(&c, &controller::DatasetDetailController::chartReady);
|
||||
c.openDataset("ds1", "dd_inversion_data");
|
||||
EXPECT_EQ(spy.count(), 1);
|
||||
}
|
||||
TEST(DatasetDetailController, EmitsLoadFailedOnThrow) {
|
||||
StubRepo repo; repo.fail = true;
|
||||
controller::DatasetDetailController c(repo);
|
||||
QSignalSpy spy(&c, &controller::DatasetDetailController::loadFailed);
|
||||
c.openDataset("ds1", "dd_inversion_data");
|
||||
EXPECT_EQ(spy.count(), 1);
|
||||
}
|
||||
Loading…
Reference in New Issue