geopro/tests/data/test_vtk3d_requests.cpp

40 lines
1.5 KiB
C++

#include <gtest/gtest.h>
#include <QJsonArray>
#include "dto/Vtk3dRequests.hpp"
using namespace geopro::data;
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);
}