|
|
@ -1,5 +1,4 @@
|
|
|
|
import { Vector3 } from 'three';
|
|
|
|
import { Vector3 } from 'three';
|
|
|
|
|
|
|
|
|
|
|
|
import
|
|
|
|
import
|
|
|
|
{
|
|
|
|
{
|
|
|
|
AllObjectData,
|
|
|
|
AllObjectData,
|
|
|
@ -13,37 +12,68 @@ import
|
|
|
|
Line,
|
|
|
|
Line,
|
|
|
|
ObjectAllDataHistoryRecord,
|
|
|
|
ObjectAllDataHistoryRecord,
|
|
|
|
RemoveObjectData,
|
|
|
|
RemoveObjectData,
|
|
|
|
|
|
|
|
CADObject,
|
|
|
|
} from '../../src/DatabaseServices/FileSystem';
|
|
|
|
} from '../../src/DatabaseServices/FileSystem';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function CadObjectToString(obj: CADObject)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
let file = new CADFile();
|
|
|
|
|
|
|
|
obj.WriteFile(file);
|
|
|
|
|
|
|
|
return file.ToString();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test('测试创建', () =>
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (let C of [AllObjectData,
|
|
|
|
|
|
|
|
BlockTableRecord,
|
|
|
|
|
|
|
|
CommandHistoryRecord,
|
|
|
|
|
|
|
|
CreateObjectData,
|
|
|
|
|
|
|
|
HistorycRecord,
|
|
|
|
|
|
|
|
Line,
|
|
|
|
|
|
|
|
ObjectAllDataHistoryRecord,
|
|
|
|
|
|
|
|
RemoveObjectData,
|
|
|
|
|
|
|
|
CADObject])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
//确保每个对象都被正确的创建
|
|
|
|
|
|
|
|
let obj = CADFactory.CreateObject(C.name /*?*/);
|
|
|
|
|
|
|
|
let str = CadObjectToString(obj);
|
|
|
|
|
|
|
|
expect(str).toMatchSnapshot();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//确保对象正确的反序列化
|
|
|
|
|
|
|
|
let fileNew = new CADFile();
|
|
|
|
|
|
|
|
fileNew.Data = JSON.parse(str);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let objNew = CADFactory.CreateObject(C.name);
|
|
|
|
|
|
|
|
let str2 = CadObjectToString(objNew);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//确保反序列化之后的数据是正确的
|
|
|
|
|
|
|
|
expect(str).toBe(str2);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
test('id分配', () =>
|
|
|
|
test('id分配', () =>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
let db = new Database();
|
|
|
|
let db = new Database();
|
|
|
|
let line = new Line();
|
|
|
|
let line = new Line();
|
|
|
|
line.StartPoint = new Vector3(10, 3, 2);
|
|
|
|
|
|
|
|
|
|
|
|
//对象添加到模型空间 分配id
|
|
|
|
let id = db.ModelSpace.Append(line);
|
|
|
|
let id = db.ModelSpace.Append(line);
|
|
|
|
|
|
|
|
|
|
|
|
expect(id != undefined).toBeTruthy();
|
|
|
|
expect(id != undefined).toBeTruthy();//对象已经被创建,所以id被分配
|
|
|
|
expect(id.Object === line).toBeTruthy();
|
|
|
|
expect(id.Object === line).toBeTruthy();//对象id指向对象
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//撤销添加
|
|
|
|
db.hm.Undo();
|
|
|
|
db.hm.Undo();
|
|
|
|
|
|
|
|
|
|
|
|
expect(id.IsErase).toBeTruthy();
|
|
|
|
expect(id.IsErase).toBeTruthy(); //对象已经被删除
|
|
|
|
expect(db.ModelSpace.Cout()).toBe(0);
|
|
|
|
expect(db.ModelSpace.Cout()).toBe(0); //个数应该为0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//还原对象
|
|
|
|
db.hm.Redo();
|
|
|
|
db.hm.Redo();
|
|
|
|
|
|
|
|
|
|
|
|
expect(db.ModelSpace.Cout()).toBe(1);
|
|
|
|
expect(db.ModelSpace.Cout()).toBe(1); //对象还原
|
|
|
|
expect(!id.IsErase).toBeTruthy();
|
|
|
|
expect(!id.IsErase).toBeTruthy(); //id指向的对象不被删除
|
|
|
|
let file = db.FileWrite();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let db2 = new Database();
|
|
|
|
|
|
|
|
db2.FileRead(file);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
console.log(db2.GetObjectId(0));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
db2.GetObjectId(0).Object.ClassName //?
|
|
|
|
|
|
|
|
console.log(db2.ModelSpace.Cout());
|
|
|
|
|
|
|
|
console.log(file);
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -58,12 +88,12 @@ test('changev', () =>
|
|
|
|
db.hm.Undo();
|
|
|
|
db.hm.Undo();
|
|
|
|
db.hm.Redo();
|
|
|
|
db.hm.Redo();
|
|
|
|
|
|
|
|
|
|
|
|
console.log(id.Object === l1);
|
|
|
|
expect(id.Object !== l1).toBeTruthy(); //创建对象的撤销和重做后 id指向了新的实体
|
|
|
|
|
|
|
|
|
|
|
|
(id.Object as Line).StartPoint = new Vector3(2, 3, 4);
|
|
|
|
(id.Object as Line).StartPoint = new Vector3(2, 3, 4);
|
|
|
|
|
|
|
|
|
|
|
|
let file = db.FileWrite();
|
|
|
|
let file = db.FileWrite();
|
|
|
|
console.log(file.ToString());
|
|
|
|
|
|
|
|
|
|
|
|
expect(file.ToString()/*?*/).toMatchSnapshot();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
test('xxx', () =>
|
|
|
|
test('xxx', () =>
|
|
|
@ -96,58 +126,19 @@ test('xxx', () =>
|
|
|
|
(id1.Object as Line).StartPoint = new Vector3(100, 300, 400);
|
|
|
|
(id1.Object as Line).StartPoint = new Vector3(100, 300, 400);
|
|
|
|
(id1.Object as Line).EndPoint = new Vector3(2000, 3000, 4000);
|
|
|
|
(id1.Object as Line).EndPoint = new Vector3(2000, 3000, 4000);
|
|
|
|
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).StartPoint);
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).EndPoint);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
db.hm.Undo();
|
|
|
|
db.hm.Undo();
|
|
|
|
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).StartPoint);
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).EndPoint);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
db.hm.Redo();
|
|
|
|
db.hm.Redo();
|
|
|
|
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).StartPoint);
|
|
|
|
|
|
|
|
console.log((id1.Object as Line).EndPoint);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let f = new CADFile();
|
|
|
|
let f = new CADFile();
|
|
|
|
db.hm.WriteFile(f);
|
|
|
|
db.hm.WriteFile(f);
|
|
|
|
|
|
|
|
|
|
|
|
f.ToString() //?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let db2 = new Database();
|
|
|
|
let db2 = new Database();
|
|
|
|
db2.hm.ReadFile(f);
|
|
|
|
db2.hm.ReadFile(f);
|
|
|
|
|
|
|
|
|
|
|
|
let f3 = new CADFile();
|
|
|
|
let f3 = new CADFile();
|
|
|
|
db2.hm.WriteFile(f3);
|
|
|
|
db2.hm.WriteFile(f3);
|
|
|
|
|
|
|
|
|
|
|
|
f3.ToString() //?
|
|
|
|
expect(f3.ToString()).toBe(f.ToString());//对象序列化反序列化后 数据应该一样
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
let l = CADFactory.CreateObject("Line");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l.ClassName //?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l.constructor.name //?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// function createLine()
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// for (let i = 0; i < 5000; i++)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// let l = CADFactory.CreateObject("Line") as Line;
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // createLine(); //?.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// function undoRedo()
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// for (let i = 0; i < 5000; i++)
|
|
|
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
// db.hm.Undo();
|
|
|
|
|
|
|
|
// db.hm.Redo();
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// // undoRedo(); //?.
|
|
|
|
|
|
|
|