更新最后的测试

pull/7/head
ChenX 7 years ago
parent 1d1e8de6c1
commit c41a5390b6

@ -0,0 +1,21 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`changev 1`] = `"[1,[\\"BlockTableRecord\\",1,0,1,[\\"Line\\",1,1,1,[2,3,4],[0,0,0]]]]"`;
exports[`测试创建 1`] = `"[1,-1,1,[]]"`;
exports[`测试创建 2`] = `"[1,-1,0]"`;
exports[`测试创建 3`] = `"[1,null,0]"`;
exports[`测试创建 4`] = `"[1,[]]"`;
exports[`测试创建 5`] = `"[1,\\"\\",\\"\\",\\"\\"]"`;
exports[`测试创建 6`] = `"[1,-1,1,[0,0,0],[0,0,0]]"`;
exports[`测试创建 7`] = `"[1,\\"\\",\\"\\",\\"\\"]"`;
exports[`测试创建 8`] = `"[1,null]"`;
exports[`测试创建 9`] = `"[1,-1]"`;

@ -1,5 +1,4 @@
import { Vector3 } from 'three';
import
{
AllObjectData,
@ -13,37 +12,68 @@ import
Line,
ObjectAllDataHistoryRecord,
RemoveObjectData,
CADObject,
} 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分配', () =>
{
let db = new Database();
let line = new Line();
line.StartPoint = new Vector3(10, 3, 2);
//对象添加到模型空间 分配id
let id = db.ModelSpace.Append(line);
expect(id != undefined).toBeTruthy();
expect(id.Object === line).toBeTruthy();
expect(id != undefined).toBeTruthy();//对象已经被创建,所以id被分配
expect(id.Object === line).toBeTruthy();//对象id指向对象
//撤销添加
db.hm.Undo();
expect(id.IsErase).toBeTruthy();
expect(db.ModelSpace.Cout()).toBe(0);
expect(id.IsErase).toBeTruthy(); //对象已经被删除
expect(db.ModelSpace.Cout()).toBe(0); //个数应该为0
//还原对象
db.hm.Redo();
expect(db.ModelSpace.Cout()).toBe(1);
expect(!id.IsErase).toBeTruthy();
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);
expect(db.ModelSpace.Cout()).toBe(1); //对象还原
expect(!id.IsErase).toBeTruthy(); //id指向的对象不被删除
});
@ -58,12 +88,12 @@ test('changev', () =>
db.hm.Undo();
db.hm.Redo();
console.log(id.Object === l1);
expect(id.Object !== l1).toBeTruthy(); //创建对象的撤销和重做后 id指向了新的实体
(id.Object as Line).StartPoint = new Vector3(2, 3, 4);
let file = db.FileWrite();
console.log(file.ToString());
expect(file.ToString()/*?*/).toMatchSnapshot();
});
test('xxx', () =>
@ -96,58 +126,19 @@ test('xxx', () =>
(id1.Object as Line).StartPoint = new Vector3(100, 300, 400);
(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();
console.log((id1.Object as Line).StartPoint);
console.log((id1.Object as Line).EndPoint);
db.hm.Redo();
console.log((id1.Object as Line).StartPoint);
console.log((id1.Object as Line).EndPoint);
let f = new CADFile();
db.hm.WriteFile(f);
f.ToString() //?
let db2 = new Database();
db2.hm.ReadFile(f);
let f3 = new CADFile();
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(); //?.

@ -4,19 +4,14 @@ import { Vector3, Line3 } from 'three';
webCAD .
,,.
.
ID
.
1..
2..
3..
@ -31,7 +26,6 @@ db.AppendEntity(ent);
,.
,
###
->
@ -115,7 +109,6 @@ id只有在一个情况下才会更新.跨文档复制时.
*/
//CAD对象工厂,通过注册 和暴露的创建方法,动态创建对象
export class CADFactory
{
@ -133,6 +126,7 @@ export class CADFactory
}
}
//可以通过添加装饰器 在类前面(@Factory),自动注册工厂的序列化
export function Factory(target: Object)
{
CADFactory.RegisterObject(target);

Loading…
Cancel
Save