Files
cocos-engine/tests/core/serialization/deserialize-capacity.test.ts
Leslie Leigh (李的序) 705c977fc9 Binary serialization (#8946)
* Binary serialization

* Update snapshots

* Update

* rename option ccon -> useCCON

* Missing script

* encodeCCONJson: chunks -> chunkURLs

* Update

* (de)serializeSymbol -> (de)serializeTag;

* CustomizedSerializable -> CustomSerializable

* _deserializePrimitiveObject -> _fillPlainObject

* Unify CCClass CCClassConstructor

* encodeCCONJson -> parseCCONJson

* Custom serializable

* Move (de)serializeSuper(This) from context into global

* property -> read(write)Property; (de)serializeThis(Super) -> (read)writeThis(Super)

* CI and lint

* Mock cc env
2021-07-15 10:21:25 +08:00

26 lines
809 B
TypeScript

import { ccclass } from '../../../cocos/core/data/decorators';
import { property } from '../../../cocos/core/data/decorators/property';
import { deserialize } from '../../../cocos/core/data/deserialize';
@ccclass('Foo')
class Foo { @property foo!: Foo | null; }
const EXPECTED_CAPACITY = 900;
test(`Deserialization capacity`, () => {
const fooSerialized = createVeryDeepFoo(EXPECTED_CAPACITY);
expect(() => deserialize(fooSerialized, undefined, undefined)).not.toThrow();
});
function createVeryDeepFoo (depth: number) {
const serializedDocument: Record<string, unknown>[] = [];
for (let i = 0; i < depth; ++i) {
serializedDocument.push({
__type__: 'Foo',
foo: i === depth - 1 ? null : { __id__: i + 1 },
});
}
return serializedDocument;
}