Prechádzať zdrojové kódy

making unit tests great again

Raanan Weber 7 rokov pred
rodič
commit
999a9f4ad4

+ 14 - 9
Tools/Gulp/gulpfile.js

@@ -1055,7 +1055,7 @@ var rmDir = function (dirPath) {
  * Launches the viewer's KARMA validation tests in chrome in order to debug them.
  * (Can only be launch locally.)
  */
-gulp.task("tests-viewer-validation-karma", function (done) {
+gulp.task("tests-viewer-validation-karma", ["tests-viewer-transpile"], function (done) {
     var kamaServerOptions = {
         configFile: __dirname + "/../../Viewer/tests/validation/karma.conf.js",
         singleRun: false
@@ -1068,22 +1068,27 @@ gulp.task("tests-viewer-validation-karma", function (done) {
 /**
  * Transpiles viewer typescript unit tests. 
  */
-gulp.task("tests-viewer-unit-transpile", function (done) {
+gulp.task("tests-viewer-transpile", function (done) {
 
     let wpBuild = webpack(require('../../Viewer/tests/unit/webpack.config.js'));
 
     // clean the built directory
-    rmDir("../../Viewer/tests/unit/build/");
+    rmDir("../../Viewer/tests/build/");
 
     return wpBuild
-        .pipe(gulp.dest("../../Viewer/tests/unit/build/"));
+        .pipe(rename(function (path) {
+            if (path.extname === '.js') {
+                path.basename = "test";
+            }
+        }))
+        .pipe(gulp.dest("../../Viewer/tests/build/"));
 });
 
 /**
- * Launches the KARMA unit tests in phantomJS.
- * (Can only be launch on any branches.)
+ * Launches the KARMA unit tests in chrome.
+ * (Can be launch on any branches.)
  */
-gulp.task("tests-viewer-unit-debug", ["tests-viewer-unit-transpile"], function (done) {
+gulp.task("tests-viewer-unit-debug", ["tests-viewer-transpile"], function (done) {
     var kamaServerOptions = {
         configFile: __dirname + "/../../Viewer/tests/karma.conf.js",
         singleRun: false,
@@ -1096,9 +1101,9 @@ gulp.task("tests-viewer-unit-debug", ["tests-viewer-unit-transpile"], function (
 
 /**
  * Launches the KARMA unit tests in phantomJS.
- * (Can only be launch on any branches.)
+ * (Can be launch on any branches.)
  */
-gulp.task("tests-viewer-unit", ["tests-viewer-unit-transpile"], function (done) {
+gulp.task("tests-viewer-unit", ["tests-viewer-transpile"], function (done) {
     var kamaServerOptions = {
         configFile: __dirname + "/../../Viewer/tests/karma.conf.js",
         singleRun: true

+ 8 - 0
Viewer/src/viewer/sceneManager.ts

@@ -146,6 +146,14 @@ export class SceneManager {
         // create a new scene
         this.scene = new Scene(this._viewer.engine);
 
+        var defaultMaterial = new BABYLON.PBRMaterial('default-material', this.scene);
+        defaultMaterial.environmentBRDFTexture = null;
+        defaultMaterial.usePhysicalLightFalloff = true;
+        defaultMaterial.reflectivityColor = new BABYLON.Color3(0.1, 0.1, 0.1);
+        defaultMaterial.microSurface = 0.6;
+
+        this.scene.defaultMaterial = defaultMaterial;
+
         this._mainColor = new Color3();
 
         if (sceneConfiguration) {

+ 1 - 14
Viewer/tests/commons/boot.ts

@@ -69,23 +69,10 @@ export class Boot {
         });
     }
 
-    /*private static loadSync(url: string): string {
-        var req = new XMLHttpRequest();
-        req.open('GET', url, false);
-        req.send();
-        if (req.status >= 200 && req.status < 300) {
-            //successful request
-            return req.responseText;
-        } else {
-            //failed request
-            console.error(req.status + ' ' + req.statusText);
-            return null;
-        }
-    }*/
-
 }
 
 if (!useNullEngine) {
+    console.log("mocking webgl");
     webglSupport();
 }
 export var main = Boot.main;

+ 8 - 5
Viewer/tests/commons/helper.ts

@@ -137,13 +137,15 @@ export class NullEngineAbstractViewer extends AbstractViewer {
             window.addEventListener('resize', this._resize);
         }
 
-        this.engine.runRenderLoop(this._render);
-
         if (this._configuration.engine && this._configuration.engine.adaptiveQuality) {
             var scale = Math.max(0.5, 1 / (window.devicePixelRatio || 2));
             this.engine.setHardwareScalingLevel(scale);
         }
 
+        this.engine.createCubeTexture = <any>function () { };
+
+        this.engine.dispose = function () { };
+
         return Promise.resolve(this.engine);
     }
 }
@@ -172,14 +174,15 @@ export class NullEngineDefaultViewer extends DefaultViewer {
             window.addEventListener('resize', this._resize);
         }
 
-
-        this.engine.runRenderLoop(this._render);
-
         if (this._configuration.engine && this._configuration.engine.adaptiveQuality) {
             var scale = Math.max(0.5, 1 / (window.devicePixelRatio || 2));
             this.engine.setHardwareScalingLevel(scale);
         }
 
+        this.engine.createCubeTexture = <any>function () { };
+
+        this.engine.dispose = function () { };
+
         return Promise.resolve(this.engine);
     }
 }

+ 1 - 1
Viewer/tests/karma.conf.js

@@ -12,7 +12,7 @@ module.exports = function (config) {
         frameworks: ['mocha', 'chai', 'sinon'],
 
         files: [
-            './tests/unit/build/*.js',
+            './tests/build/*.js',
             { pattern: './tests/**/*', watched: false, included: false, served: true },
         ],
         proxies: {

+ 14 - 17
Viewer/tests/unit/src/Viewer/viewer.ts

@@ -54,19 +54,17 @@ describe('Viewer', function () {
         let renderCount = 0;
         let sceneRenderCount = 0;
         viewer.onSceneInitObservable.add(() => {
-            // force-create a camera for the render loop to work
-            viewer.updateConfiguration({ camera: {} });
-            viewer.sceneManager.scene.registerAfterRender(() => {
+            viewer.sceneManager.scene.registerBeforeRender(() => {
                 sceneRenderCount++;
-            })
-        });
-        viewer.onFrameRenderedObservable.add(() => {
-            renderCount++;
-            assert.equal(renderCount, sceneRenderCount, "function was not executed with each frame");
-            if (renderCount === 20) {
-                viewer.dispose();
-                done();
-            }
+            });
+            viewer.onFrameRenderedObservable.add(() => {
+                renderCount++;
+                assert.equal(renderCount, sceneRenderCount, "function was not executed with each frame");
+                if (renderCount === 20) {
+                    viewer.dispose();
+                    done();
+                }
+            });
         });
     });
 
@@ -74,12 +72,11 @@ describe('Viewer', function () {
 
         let viewer: DefaultViewer = <DefaultViewer>Helper.getNewViewerInstance();
         let renderCount = 0;
-        viewer.onFrameRenderedObservable.add(() => {
-            renderCount++;
-        });
+
         viewer.onInitDoneObservable.add(() => {
-            // force-create a camera for the render loop to work
-            viewer.updateConfiguration({ camera: {} });
+            viewer.onFrameRenderedObservable.add(() => {
+                renderCount++;
+            });
             assert.equal(renderCount, 0);
             window.requestAnimationFrame(function () {
                 assert.equal(renderCount, 1, "render loop should have been executed");

+ 4 - 2
Viewer/tests/unit/src/index.ts

@@ -1,3 +1,5 @@
 import { main } from '../../commons/boot';
-main();
-export * from './Viewer/viewer';
+if (window && !window['validation'])
+    main();
+export * from './Viewer/viewer';
+export * from '../../../src'

+ 4 - 4
Viewer/tests/unit/webpack.config.js

@@ -5,11 +5,11 @@ module.exports = {
     entry: {
         'test': __dirname + '/src/index.ts'
     },
-    /*output: {
-        libraryTarget: 'var',
-        library: 'ViewerTests',
+    output: {
+        libraryTarget: 'umd',
+        library: 'BabylonViewer',
         umdNamedDefine: true
-    },*/
+    },
     resolve: {
         extensions: ['.ts', '.js'],
         alias: {