67 lines
3.8 KiB
C#
67 lines
3.8 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
namespace NavisworksTransport.UnitTests.Integration
|
|
{
|
|
[TestClass]
|
|
[TestCategory("NavisworksIntegration")]
|
|
[TestCategory("NavisworksIntegration.Ground")]
|
|
public class AutoPathGridGenerationAutomationTests
|
|
{
|
|
private const string BaselineRouteName = "测试基准";
|
|
private const double BaselineObjectLengthInMeters = 0.4;
|
|
private const double BaselineObjectWidthInMeters = 0.4;
|
|
private const double BaselineSafetyMarginInMeters = 0.05;
|
|
private const double BaselineGridSizeInMeters = 0.3;
|
|
|
|
[TestMethod]
|
|
[Timeout(240000)]
|
|
public async Task GroundAutoPath_BaselineRoute_CreatesPath()
|
|
{
|
|
using (var client = new NavisworksTestAutomationClient())
|
|
{
|
|
await client.EnsureServiceReadyAsync(TimeSpan.FromSeconds(90)).ConfigureAwait(false);
|
|
|
|
JObject response = await client.RunAutoPathAsync(
|
|
"Ground",
|
|
BaselineRouteName,
|
|
BaselineObjectLengthInMeters,
|
|
BaselineObjectWidthInMeters,
|
|
BaselineSafetyMarginInMeters,
|
|
BaselineGridSizeInMeters).ConfigureAwait(false);
|
|
Assert.IsTrue(response.Value<bool>("ok"), "测试 HTTP 接口返回失败: " + (string)response["error"]);
|
|
|
|
JObject data = (JObject)response["data"];
|
|
Assert.IsNotNull(data, "缺少测试结果 data");
|
|
|
|
JObject sourceRoute = (JObject)data["sourceRoute"];
|
|
Assert.IsNotNull(sourceRoute, "缺少 sourceRoute");
|
|
Assert.AreEqual(BaselineRouteName, (string)sourceRoute["name"], "自动路径测试必须使用精确命名的测试基准路径作为起终点来源");
|
|
Assert.AreEqual("Ground", (string)sourceRoute["pathType"], "源路径类型不匹配");
|
|
|
|
JObject generatedRoute = (JObject)data["generatedRoute"];
|
|
Assert.IsNotNull(generatedRoute, "缺少 generatedRoute");
|
|
Assert.AreEqual("Ground", (string)generatedRoute["pathType"], "生成路径类型不匹配");
|
|
Assert.IsTrue((int)generatedRoute["pointCount"] >= 2, "生成路径至少应包含起点和终点");
|
|
Assert.IsTrue((double)generatedRoute["length"] > 0, "生成路径长度必须大于 0");
|
|
|
|
JObject planningParameters = (JObject)data["planningParameters"];
|
|
Assert.IsNotNull(planningParameters, "缺少 planningParameters");
|
|
|
|
Assert.AreEqual(BaselineObjectLengthInMeters, (double)planningParameters["objectLengthInMeters"], 1e-9, "物体长度参数不匹配");
|
|
Assert.AreEqual(BaselineObjectWidthInMeters, (double)planningParameters["objectWidthInMeters"], 1e-9, "物体宽度参数不匹配");
|
|
Assert.AreEqual(BaselineSafetyMarginInMeters, (double)planningParameters["safetyMarginInMeters"], 1e-9, "安全间隙参数不匹配");
|
|
Assert.AreEqual(BaselineGridSizeInMeters, (double)planningParameters["gridSizeInMeters"], 1e-9, "网格大小参数不匹配");
|
|
|
|
JObject segmentValidation = (JObject)data["segmentValidation"];
|
|
Assert.IsNotNull(segmentValidation, "缺少 segmentValidation");
|
|
Assert.AreEqual(0, (int)segmentValidation["blockedSampleCount"], "生成路径存在穿过不可通行网格的采样点");
|
|
Assert.AreEqual(0, (int)segmentValidation["blockedCellInteriorIntersectionCount"], "生成路径线段穿过了不可通行网格的实际归属区域");
|
|
Assert.AreEqual(0, (int)segmentValidation["invalidSampleCount"], "生成路径存在落在网格外的采样点");
|
|
}
|
|
}
|
|
}
|
|
}
|