geopro/tests/data/test_vtk3d_requests.cpp

62 lines
2.2 KiB
C++

#include <gtest/gtest.h>
#include <QJsonArray>
#include "dto/Vtk3dRequests.hpp"
#include "repo/VolumeBuildParams.hpp"
using namespace geopro::data;
TEST(Vtk3dRequests, VolumeBuildParamsFromRequest) {
VoxelGenerateRequest q;
q.sourceDatasetIds = {"d1"};
q.cellXY = 2.0;
q.power = 3.0;
q.colorScaleId = "cs1";
q.interpModel = "Kriging";
const auto p = fromRequest(q);
ASSERT_EQ(p.sourceDatasetIds.size(), 1u);
EXPECT_EQ(p.sourceDatasetIds[0], "d1");
EXPECT_DOUBLE_EQ(p.cellXY, 2.0);
EXPECT_DOUBLE_EQ(p.power, 3.0);
EXPECT_EQ(p.colorScaleId, "cs1");
EXPECT_EQ(p.interpModel, VolumeBuildParams::Model::Kriging);
}
TEST(Vtk3dRequests, FromRequestDefaultsToIdw) {
VoxelGenerateRequest q; // interpModel 默认 "Idw"
EXPECT_EQ(fromRequest(q).interpModel, VolumeBuildParams::Model::Idw);
}
TEST(Vtk3dRequests, VoxelToJsonMatchesContract) {
VoxelGenerateRequest q;
q.projectId = "p1"; q.structParentId = "g1"; q.structParentConfType = 1;
q.name = "体A"; q.sourceDatasetIds = {"d1", "d2"};
const QJsonObject j = q.toJson();
EXPECT_EQ(j["projectId"].toString(), "p1");
EXPECT_EQ(j["structParentId"].toString(), "g1");
EXPECT_EQ(j["structParentConfType"].toInt(), 1);
EXPECT_EQ(j["name"].toString(), "体A");
ASSERT_TRUE(j["sourceDatasetIds"].isArray());
EXPECT_EQ(j["sourceDatasetIds"].toArray().size(), 2);
EXPECT_EQ(j["interpModel"].toString(), "Idw");
EXPECT_DOUBLE_EQ(j["cellXY"].toDouble(), 1.0);
// colorScaleId 为空时不应出现在请求体里。
EXPECT_FALSE(j.contains("colorScaleId"));
}
TEST(Vtk3dRequests, VoxelColorScaleIncludedWhenSet) {
VoxelGenerateRequest q;
q.colorScaleId = "cs1";
EXPECT_EQ(q.toJson()["colorScaleId"].toString(), "cs1");
}
TEST(Vtk3dRequests, SliceToJsonMatchesContract) {
SliceGenerateRequest q;
q.projectId = "p1"; q.volumeDsId = "v1"; q.name = "切片1"; q.axis = 3;
q.origin = {0, 0, -10}; q.point1 = {100, 0, -10}; q.point2 = {0, 50, -10};
const QJsonObject j = q.toJson();
EXPECT_EQ(j["volumeDsId"].toString(), "v1");
EXPECT_EQ(j["axis"].toInt(), 3);
ASSERT_TRUE(j["origin"].isArray());
EXPECT_EQ(j["origin"].toArray().size(), 3);
EXPECT_DOUBLE_EQ(j["point1"].toArray()[0].toDouble(), 100.0);
}