|
@@ -0,0 +1,87 @@
|
|
|
+/**
|
|
|
+ * Describes the test suite.
|
|
|
+ */
|
|
|
+describe('Babylon Node', () => {
|
|
|
+ let subject: BABYLON.Engine;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Loads the dependencies.
|
|
|
+ */
|
|
|
+ before(function (done) {
|
|
|
+ this.timeout(180000);
|
|
|
+ (BABYLONDEVTOOLS).Loader
|
|
|
+ .useDist()
|
|
|
+ .load(function () {
|
|
|
+ // Force apply promise polyfill for consistent behavior between PhantomJS, IE11, and other browsers.
|
|
|
+ BABYLON.PromisePolyfill.Apply(true);
|
|
|
+ done();
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create a new engine subject before each test.
|
|
|
+ */
|
|
|
+ beforeEach(function () {
|
|
|
+ subject = new BABYLON.NullEngine({
|
|
|
+ renderHeight: 256,
|
|
|
+ renderWidth: 256,
|
|
|
+ textureSize: 256,
|
|
|
+ deterministicLockstep: false,
|
|
|
+ lockstepMaxSteps: 1
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ describe('#Node', () => {
|
|
|
+ it('dispose', () => {
|
|
|
+ const scene = new BABYLON.Scene(subject);
|
|
|
+ const node = new BABYLON.Node("node", scene);
|
|
|
+ const transformNode = new BABYLON.TransformNode("transformNode", scene);
|
|
|
+ transformNode.parent = node;
|
|
|
+ const mesh = new BABYLON.Mesh("node2", scene);
|
|
|
+ mesh.parent = node;
|
|
|
+ mesh.material = new BABYLON.PBRMaterial("material", scene)
|
|
|
+
|
|
|
+ node.dispose();
|
|
|
+
|
|
|
+ expect(node.isDisposed(), "node.isDisposed").to.be.true;
|
|
|
+ expect(transformNode.isDisposed(), "transformNode.isDisposed").to.be.true;
|
|
|
+ expect(mesh.isDisposed(), "mesh.isDisposed").to.be.true;
|
|
|
+
|
|
|
+ expect(scene.materials, "scene.materials").to.have.lengthOf(1);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('dispose with doNotRecurse', () => {
|
|
|
+ const scene = new BABYLON.Scene(subject);
|
|
|
+ const node = new BABYLON.Node("node", scene);
|
|
|
+ const transformNode = new BABYLON.TransformNode("transformNode", scene);
|
|
|
+ transformNode.parent = node;
|
|
|
+ const mesh = new BABYLON.Mesh("node2", scene);
|
|
|
+ mesh.parent = node;
|
|
|
+ mesh.material = new BABYLON.PBRMaterial("material", scene)
|
|
|
+
|
|
|
+ node.dispose(true);
|
|
|
+
|
|
|
+ expect(node.isDisposed(), "node.isDisposed").to.be.true;
|
|
|
+ expect(transformNode.isDisposed(), "transformNode.isDisposed").to.be.false;
|
|
|
+ expect(mesh.isDisposed(), "mesh.isDisposed").to.be.false;
|
|
|
+
|
|
|
+ expect(scene.materials, "scene.materials").to.have.lengthOf(1);
|
|
|
+ });
|
|
|
+
|
|
|
+ it('dispose with disposeMaterialAndTextures', () => {
|
|
|
+ const scene = new BABYLON.Scene(subject);
|
|
|
+ const transformNode = new BABYLON.TransformNode("transformNode", scene);
|
|
|
+ const mesh = new BABYLON.Mesh("mesh", scene);
|
|
|
+ mesh.parent = transformNode;
|
|
|
+ mesh.material = new BABYLON.PBRMaterial("material", scene)
|
|
|
+
|
|
|
+ transformNode.dispose(false, true);
|
|
|
+
|
|
|
+ expect(transformNode.isDisposed(), "node.isDisposed").to.be.true;
|
|
|
+ expect(mesh.isDisposed(), "mesh.isDisposed").to.be.true;
|
|
|
+
|
|
|
+ expect(scene.meshes, "scene.meshes").to.be.empty;
|
|
|
+ expect(scene.materials, "scene.materials").to.be.empty;
|
|
|
+ });
|
|
|
+ });
|
|
|
+});
|