feat/dataset-detail-chart #5

Merged
gaozheng merged 74 commits from feat/dataset-detail-chart into main 2026-06-13 17:30:37 +08:00
2 changed files with 35 additions and 0 deletions
Showing only changes of commit 548895bdcf - Show all commits

View File

@ -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_include_directories(geopro_tests PRIVATE ${CMAKE_SOURCE_DIR}/src/app)
target_sources(geopro_tests PRIVATE app/test_chart_strategy_registry.cpp) 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 add_subdirectory(spike) # spike S3: banded contour

View File

@ -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);
}