32 lines
1.5 KiB
C++
32 lines
1.5 KiB
C++
#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 { core::Grid g(2,2); g.x={0,1}; g.y={0,1}; return g; }
|
||
// openDataset 现只拉 scatter/scatterScale/anomalies(网格懒加载),失败路径由 loadScatter 抛出触发。
|
||
core::ScatterField loadScatter(const std::string&) override { if (fail) throw std::runtime_error("x"); 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);
|
||
}
|