geopro/tests/controller/test_dataset_detail_control...

32 lines
1.5 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 <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);
}