更新最后的测试

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 { 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(); //?.

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

Loading…
Cancel
Save