You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
WebCAD/__test__/Room/RoomHoleUpdate.test.ts

109 lines
3.1 KiB

import { Vector3 } from "three";
import { RoomHolePolyline } from "../../src/DatabaseServices/Room/Entity/Wall/Hole/RoomHolePolyline";
import { RoomWallLine } from "../../src/DatabaseServices/Room/Entity/Wall/RoomWallLine";
import { RoomIHoleParseAndModify } from "../../src/DatabaseServices/Room/ParseService/Hole/RoomIHoleParseAndModify";
import { RoomWallParse, UpdateRelevanceWallHole } from "../../src/ueapi";
import "../Utils/jest.util";
import { LoadEntityFromFileData } from "../Utils/LoadEntity.util";
LoadEntityFromFileData;
//如果不延迟导入,则导致循环依赖错误
import { Database } from "../../src/DatabaseServices/Database";
import { RoomWallArc } from "../../src/DatabaseServices/Room/Entity/Wall/RoomWallArc";
test('墙洞1', () =>
{
let db = new Database;
let wall1 = new RoomWallLine(new Vector3(0, 0, 0), new Vector3(5000, 0, 0));
let wall2 = new RoomWallLine(new Vector3(0, 0, 0), new Vector3(0, 5000, 0));
db.ModelSpace.Append(wall1);
db.ModelSpace.Append(wall2);
let hole = new RoomHolePolyline();
hole.Points = [
new Vector3(100, 0, 0),
new Vector3(1100, 0, 0),
];
hole.RelevancyWalls = [wall1.Id];
db.ModelSpace.Append(hole);
wall1.RelevancyHoles.push(hole.Id);
new RoomWallParse(true, db, true).Parse([wall1, wall2]);
UpdateRelevanceWallHole([wall1, wall2]);
let m = new RoomIHoleParseAndModify(hole);
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
m.LeftDist = 300;
UpdateRelevanceWallHole([wall1, wall2]);
m = new RoomIHoleParseAndModify(hole);
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
m.RightDist = 300;
UpdateRelevanceWallHole([wall1, wall2]);
m = new RoomIHoleParseAndModify(hole);
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
m.LeftDist = 0;
UpdateRelevanceWallHole([wall1, wall2]);
m = new RoomIHoleParseAndModify(hole);
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
m.RightDist = 0;
UpdateRelevanceWallHole([wall1, wall2]);
m = new RoomIHoleParseAndModify(hole);
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
});
test('圆弧I洞', () =>
{
let db = new Database;
let wall = new RoomWallArc(new Vector3(0, 0, 0), 5000, 0, Math.PI);
db.ModelSpace.Append(wall);
new RoomWallParse(true, db, true).Parse([wall]);
let hole = new RoomHolePolyline();
hole.Points = [
wall.GetPointAtDistance(100),
wall.GetPointAtDistance(600),
];
hole.RelevancyWalls = [wall.Id];
db.ModelSpace.Append(hole);
wall.RelevancyHoles.push(hole.Id);
UpdateRelevanceWallHole([wall]);
let m = new RoomIHoleParseAndModify(hole);
expect(m.Length).toMatchNumberSnapshot();
m.LeftDist = 0;
UpdateRelevanceWallHole([wall]);
m = new RoomIHoleParseAndModify(hole);
expect(m.Length).toMatchNumberSnapshot();
expect(m.LeftDist).toMatchNumberSnapshot();
expect(m.RightDist).toMatchNumberSnapshot();
});