Bladeren bron

fixing tests

Raanan Weber 7 jaren geleden
bovenliggende
commit
343a6c0bd5

+ 1 - 2
Viewer/src/optimizer/custom/extended.ts

@@ -1,6 +1,5 @@
-import { AbstractViewer } from '../../viewer/viewer';
 import { Scalar, DefaultRenderingPipeline, Scene } from 'babylonjs';
-import { SceneManager } from 'viewer/sceneManager';
+import { SceneManager } from '../../viewer/sceneManager';
 
 /**
  * A custom upgrade-oriented function configuration for the scene optimizer.

+ 1 - 1
Viewer/src/optimizer/custom/index.ts

@@ -1,5 +1,5 @@
 import { extendedUpgrade, extendedDegrade } from "./extended";
-import { SceneManager } from "viewer/sceneManager";
+import { SceneManager } from "../../viewer/sceneManager";
 
 const cache: { [key: string]: (sceneManager: SceneManager) => boolean } = {};
 

+ 5 - 3
Viewer/src/viewer/viewer.ts

@@ -391,14 +391,16 @@ export abstract class AbstractViewer {
         }
         window.removeEventListener('resize', this._resize);
 
-        if (this.sceneManager.scene && this.sceneManager.scene.activeCamera) {
-            this.sceneManager.scene.activeCamera.detachControl(this.canvas);
+        if (this.sceneManager) {
+            if (this.sceneManager.scene && this.sceneManager.scene.activeCamera) {
+                this.sceneManager.scene.activeCamera.detachControl(this.canvas);
+            }
+            this.sceneManager.dispose();
         }
 
         this._fpsTimeoutInterval && clearInterval(this._fpsTimeoutInterval);
 
 
-        this.sceneManager.dispose();
 
         this.observablesManager.dispose();
 

+ 6 - 0
Viewer/tests/commons/helper.ts

@@ -1,6 +1,7 @@
 import { BABYLON, AbstractViewer, DefaultViewer, ViewerModel, viewerGlobals, AnimationPlayMode, AnimationState } from "../../src";
 import { ViewerConfiguration } from "../../src/configuration/configuration";
 import { IModelAnimation } from "../../src/model/modelAnimation";
+import { SceneManager } from "../../src/viewer/sceneManager";
 
 export const useNullEngine = true;
 
@@ -117,6 +118,7 @@ export class NullEngineAbstractViewer extends AbstractViewer {
 
     protected _initEngine() {
         let config: any = this._configuration.engine || {};
+
         // TDO enable further configuration
         config.engineOptions = config.engineOptions || {};
 
@@ -134,6 +136,8 @@ export class NullEngineAbstractViewer extends AbstractViewer {
             return this.canvas;
         }
 
+        this.sceneManager = new SceneManager(this.engine, this.observablesManager);
+
         // Disable manifest checking
         BABYLON.Database.IDBStorageEnabled = false;
 
@@ -174,6 +178,8 @@ export class NullEngineDefaultViewer extends DefaultViewer {
             return this.canvas;
         }
 
+        this.sceneManager = new SceneManager(this.engine, this.observablesManager);
+
         // Disable manifest checking
         BABYLON.Database.IDBStorageEnabled = false;
 

+ 42 - 28
Viewer/tests/unit/src/viewer/sceneManager.ts

@@ -6,11 +6,16 @@ export let name = "scene manager";
 
 describe(name, function () {
 
-    it("should be initialized when a viewer is created", (done) => {
+    it("should be initialized when an engine is created", (done) => {
         let viewer = Helper.getNewViewerInstance();
-        assert.isDefined(viewer.sceneManager, "scene manager should be defined");
-        viewer.dispose();
-        done();
+
+        viewer.onEngineInitObservable.add(() => {
+            assert.isDefined(viewer.sceneManager, "scene manager should be defined");
+        });
+        viewer.onInitDoneObservable.add(() => {
+            viewer.dispose();
+            done();
+        });
     })
 
     it("should have objects initialized after init", (done) => {
@@ -49,30 +54,36 @@ describe(name, function () {
         let viewer = Helper.getNewViewerInstance(undefined, { extends: "none" });
         let sceneInitCalled = false;
         viewer.runRenderLoop = false;
-        viewer.sceneManager.onSceneInitObservable.clear();
-        viewer.sceneManager.onSceneInitObservable.add(() => {
-            assert.isDefined(viewer.sceneManager.scene);
-            assert.isUndefined(viewer.sceneManager.camera);
-            sceneInitCalled = true;
-        });
 
         const s: string[] = [];
 
-        let update = (str: string, data) => {
-            if (s.indexOf(str) !== -1) {
-                assert.fail(false, true, str + " observer already called");
-                return false;
-            } else {
-                s.push(str);
-                return true;
+        viewer.onEngineInitObservable.add(() => {
+            viewer.sceneManager.onSceneInitObservable.clear();
+            viewer.sceneManager.onSceneInitObservable.add(() => {
+                assert.isDefined(viewer.sceneManager.scene);
+                assert.isUndefined(viewer.sceneManager.camera);
+                sceneInitCalled = true;
+            });
+
+
+
+            let update = (str: string, data) => {
+                if (s.indexOf(str) !== -1) {
+                    assert.fail(false, true, str + " observer already called");
+                    return false;
+                } else {
+                    s.push(str);
+                    return true;
+                }
             }
-        }
 
-        viewer.sceneManager.onCameraConfiguredObservable.add(update.bind(null, "camera"));
-        viewer.sceneManager.onLightsConfiguredObservable.add(update.bind(null, "light"));
-        viewer.sceneManager.onEnvironmentConfiguredObservable.add(update.bind(null, "env"));
-        viewer.sceneManager.onSceneConfiguredObservable.add(update.bind(null, "scene"));
-        viewer.sceneManager.onSceneOptimizerConfiguredObservable.add(update.bind(null, "optimizer"));
+            viewer.sceneManager.onCameraConfiguredObservable.add(update.bind(null, "camera"));
+            viewer.sceneManager.onLightsConfiguredObservable.add(update.bind(null, "light"));
+            viewer.sceneManager.onEnvironmentConfiguredObservable.add(update.bind(null, "env"));
+            viewer.sceneManager.onSceneConfiguredObservable.add(update.bind(null, "scene"));
+            viewer.sceneManager.onSceneOptimizerConfiguredObservable.add(update.bind(null, "optimizer"));
+
+        });
 
         viewer.onInitDoneObservable.add(() => {
             viewer.updateConfiguration({
@@ -99,11 +110,14 @@ describe(name, function () {
             }
         });
 
-        viewer.runRenderLoop = false;
-        viewer.sceneManager.onSceneInitObservable.clear();
-        viewer.sceneManager.onSceneInitObservable.add((scene) => {
-            viewer.onSceneInitObservable.notifyObserversWithPromise(scene);
-        })
+        viewer.onEngineInitObservable.add(() => {
+
+            viewer.runRenderLoop = false;
+            viewer.sceneManager.onSceneInitObservable.clear();
+            viewer.sceneManager.onSceneInitObservable.add((scene) => {
+                viewer.onSceneInitObservable.notifyObserversWithPromise(scene);
+            });
+        });
 
         viewer.onInitDoneObservable.add(() => {
             assert.isDefined(viewer.sceneManager.defaultRenderingPipeline);

+ 1 - 2
Viewer/tests/unit/src/viewer/viewer.ts

@@ -12,11 +12,10 @@ describe('Viewer', function () {
     it('should initialize a new viewer and its internal variables', (done) => {
         let viewer = Helper.getNewViewerInstance();
         assert.isDefined(viewer.baseId, "base id should be defined");
-        assert.isDefined(viewer.templateManager, "template manager should be defined");
-        assert.isDefined(viewer.sceneManager, "scene manager should be defined");
         assert.isDefined(viewer.modelLoader, "model loader should be defined");
         viewer.onInitDoneObservable.add(() => {
             assert.isDefined(viewer, "Viewer can not be instantiated.");
+            assert.isDefined(viewer.sceneManager, "scene manager should be defined");
             viewer.dispose();
             done();
         });