babylon.node.tests.ts 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * Describes the test suite.
  3. */
  4. describe('Babylon Node', () => {
  5. let subject: BABYLON.Engine;
  6. /**
  7. * Loads the dependencies.
  8. */
  9. before(function(done) {
  10. this.timeout(180000);
  11. (BABYLONDEVTOOLS).Loader
  12. .useDist()
  13. .testMode()
  14. .load(function() {
  15. // Force apply promise polyfill for consistent behavior between chrome headless, IE11, and other browsers.
  16. BABYLON.PromisePolyfill.Apply(true);
  17. done();
  18. });
  19. });
  20. /**
  21. * Create a new engine subject before each test.
  22. */
  23. beforeEach(function() {
  24. subject = new BABYLON.NullEngine({
  25. renderHeight: 256,
  26. renderWidth: 256,
  27. textureSize: 256,
  28. deterministicLockstep: false,
  29. lockstepMaxSteps: 1
  30. });
  31. });
  32. describe('#Node', () => {
  33. it('dispose', () => {
  34. const scene = new BABYLON.Scene(subject);
  35. const node = new BABYLON.Node("node", scene);
  36. const transformNode = new BABYLON.TransformNode("transformNode", scene);
  37. transformNode.parent = node;
  38. const mesh = new BABYLON.Mesh("node2", scene);
  39. mesh.parent = node;
  40. mesh.material = new BABYLON.PBRMaterial("material", scene)
  41. node.dispose();
  42. expect(node.isDisposed(), "node.isDisposed").to.be.true;
  43. expect(transformNode.isDisposed(), "transformNode.isDisposed").to.be.true;
  44. expect(mesh.isDisposed(), "mesh.isDisposed").to.be.true;
  45. expect(scene.materials, "scene.materials").to.have.lengthOf(1);
  46. });
  47. it('dispose with doNotRecurse', () => {
  48. const scene = new BABYLON.Scene(subject);
  49. const node = new BABYLON.Node("node", scene);
  50. const transformNode = new BABYLON.TransformNode("transformNode", scene);
  51. transformNode.parent = node;
  52. const mesh = new BABYLON.Mesh("node2", scene);
  53. mesh.parent = node;
  54. mesh.material = new BABYLON.PBRMaterial("material", scene)
  55. node.dispose(true);
  56. expect(node.isDisposed(), "node.isDisposed").to.be.true;
  57. expect(transformNode.isDisposed(), "transformNode.isDisposed").to.be.false;
  58. expect(mesh.isDisposed(), "mesh.isDisposed").to.be.false;
  59. expect(scene.materials, "scene.materials").to.have.lengthOf(1);
  60. });
  61. it('dispose with disposeMaterialAndTextures', () => {
  62. const scene = new BABYLON.Scene(subject);
  63. const transformNode = new BABYLON.TransformNode("transformNode", scene);
  64. const mesh = new BABYLON.Mesh("mesh", scene);
  65. mesh.parent = transformNode;
  66. mesh.material = new BABYLON.PBRMaterial("material", scene)
  67. transformNode.dispose(false, true);
  68. expect(transformNode.isDisposed(), "node.isDisposed").to.be.true;
  69. expect(mesh.isDisposed(), "mesh.isDisposed").to.be.true;
  70. expect(scene.meshes, "scene.meshes").to.be.empty;
  71. expect(scene.materials, "scene.materials").to.be.empty;
  72. });
  73. });
  74. });