62 lines
2.2 KiB
C++
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);
|
|
}
|