浏览代码

add unit test to check for number of shader compiles

Trevor Baron 7 年之前
父节点
当前提交
4377bb5c7d
共有 2 个文件被更改,包括 65 次插入0 次删除
  1. 64 0
      tests/unit/babylon/src/PostProcess/babylon.postProcess.tests.ts
  2. 1 0
      tests/unit/karma.conf.js

+ 64 - 0
tests/unit/babylon/src/PostProcess/babylon.postProcess.tests.ts

@@ -0,0 +1,64 @@
+/**
+ * Describes the test suite.
+ */
+describe('Babylon Scene Loader', function () {
+    let subject: BABYLON.Engine;
+
+    this.timeout(10000);
+
+    /**
+     * 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
+        });
+    });
+
+    /**
+     * Integration tests for post processes.
+     */
+    describe('#postProcesses', () => {
+        it('Add default pipeline', () => {            
+            const scene = new BABYLON.Scene(subject);
+            var camera = new BABYLON.ArcRotateCamera("Camera", 0, 0, 100, new BABYLON.Vector3(0, 0, 0), scene);
+            
+            // Set caps so that HDR will be set when creating default pipeline
+            var caps = subject.getCaps();
+            caps.textureFloatRender = true;
+
+            var promise = new Promise<void>((res, rej)=>{
+                scene.whenReadyAsync().then(()=>{
+                    let createShaderProgramSpy = sinon.spy(subject, "createShaderProgram");
+                    var defaultPipeline = new BABYLON.DefaultRenderingPipeline("default", true, scene, [camera]);
+                    // wait for all shaders to be compiled if needed
+                    setTimeout(() => {
+                        expect(createShaderProgramSpy.callCount, "number of shaders compiled").to.equal(1); // Image process shader is compiled by default
+                        createShaderProgramSpy.restore();
+                        caps.textureFloatRender = false;
+                        res();
+                    }, 500);
+                });
+            });
+            return promise;
+        });
+    });
+});

+ 1 - 0
tests/unit/karma.conf.js

@@ -17,6 +17,7 @@ module.exports = function (config) {
             './tests/unit/babylon/serializers/babylon.glTFSerializer.tests.js',
             './tests/unit/babylon/src/babylon.node.tests.js',
             './tests/unit/babylon/src/Loading/babylon.sceneLoader.tests.js',
+            './tests/unit/babylon/src/PostProcess/babylon.postProcess.tests.js',
             './tests/unit/babylon/src/Material/babylon.material.tests.js',
             './tests/unit/babylon/src/Mesh/babylon.mesh.vertexData.tests.js',
             './tests/unit/babylon/src/Tools/babylon.promise.tests.js',