Files
cocos-engine/tests/core/serialization/shared/cases/ciculer-reference.test.ts
2023-09-25 09:42:15 +08:00

45 lines
2.0 KiB
TypeScript

import * as cc from 'cc';
import { PORTS_BOTH_DYNAMIC_COMPILED, testEachPort } from "../port";
import { ccclassAutoNamed, runTest } from "../utils";
@ccclassAutoNamed(__filename)
class CCClassSelfCircularReference { @cc._decorator.property me: CCClassSelfCircularReference = this; }
@ccclassAutoNamed(__filename)
class CCClassIndirectCircularReferenceFoo { @cc._decorator.property bar!: CCClassIndirectCircularReferenceBar; }
@ccclassAutoNamed(__filename)
class CCClassIndirectCircularReferenceBar { @cc._decorator.property foo!: CCClassIndirectCircularReferenceFoo; }
const ccClassIndirectCircularReferenceFoo = new CCClassIndirectCircularReferenceFoo();
const ccClassIndirectCircularReferenceBar = new CCClassIndirectCircularReferenceBar();
ccClassIndirectCircularReferenceFoo.bar = ccClassIndirectCircularReferenceBar;
ccClassIndirectCircularReferenceBar.foo = ccClassIndirectCircularReferenceFoo;
// Not supported by now
// class PlainObjectSelfCircularReference { me: PlainObjectSelfCircularReference = this; }
// class PlainObjectIndirectCircularReferenceFoo { bar!: PlainObjectIndirectCircularReferenceBar; }
// class PlainObjectIndirectCircularReferenceBar { foo!: PlainObjectIndirectCircularReferenceFoo; }
// const plainObjectIndirectCircularReferenceFoo = new PlainObjectIndirectCircularReferenceFoo();
// const plainObjectIndirectCircularReferenceBar = new PlainObjectIndirectCircularReferenceBar();
// plainObjectIndirectCircularReferenceFoo.bar = plainObjectIndirectCircularReferenceBar;
// plainObjectIndirectCircularReferenceBar.foo = plainObjectIndirectCircularReferenceFoo;
const value = {
selfCircularReference: new CCClassSelfCircularReference(),
ccClassIndirectCircularReference: ccClassIndirectCircularReferenceFoo,
// plainObjectSelfCircularReference: new PlainObjectSelfCircularReference(),
// plainObjectIndirectCircularReference: plainObjectIndirectCircularReferenceFoo,
};
testEachPort(PORTS_BOTH_DYNAMIC_COMPILED, async (port) => {
await runTest(
__filename,
port,
value,
);
});