Permalink
Browse files

Start of webglstub parameter

  • Loading branch information...
1 parent c0f8776 commit 4912f4992dc051cbe7c54bd468f29044bbc92ac8 @pjcozzi pjcozzi committed Dec 1, 2016
Showing with 43 additions and 14 deletions.
  1. +1 −1 Specs/Scene/SceneSpec.js
  2. +19 −6 Specs/createScene.js
  3. +5 −1 Specs/customizeJasmine.js
  4. +4 −2 Specs/karma-main.js
  5. +7 −3 Specs/spec-main.js
  6. +2 −1 gulpfile.js
  7. +1 −0 index.html
  8. +3 −0 index.release.html
  9. +1 −0 package.json
View
@@ -1,5 +1,5 @@
/*global defineSuite*/
-defineSuite([
+fdefineSuite([
'Core/BoundingSphere',
'Core/Cartesian2',
'Core/Cartesian3',
View
@@ -17,9 +17,11 @@ define([
destroyCanvas) {
'use strict';
+// TODO: check for window.webglStub in createContext
// TODO: expectRenderForSpecs that passes in time for ModelSpec.js and maybe others
// TODO: expectRenderForSpecs for picking
// TODO: update https://github.com/AnalyticalGraphicsInc/cesium/tree/master/Documentation/Contributors/TestingGuide with when/why to use these
+// * index.html and command line: npm run test-webgl-stub
function createScene(options) {
options = defaultValue(options, {});
@@ -59,14 +61,25 @@ define([
this.render();
var rgba = this.context.readPixels();
- // Most tests want to compare the rendered rgba to a known rgba, but some
- // only want to compare some rgba components or use a more complicated
- // expectation. These cases are handled with a callback.
- if (expectationCallbackOrExpectedRgba instanceof Function) {
- return expectationCallbackOrExpectedRgba(rgba);
+ // When the WebGL stub is used, all WebGL function calls are noops so
+ // the expectation is not verified. This allows running all the WebGL
+ // tests, to exercise as much Cesium code as possible, even if the system
+ // doesn't have a WebGL implementation or a reliable one.
+ if (window.webglStub) {
+ // Most tests want to compare the rendered rgba to a known rgba, but some
+ // only want to compare some rgba components or use a more complicated
+ // expectation. These cases are handled with a callback.
+ if (expectationCallbackOrExpectedRgba instanceof Function) {
+ return expectationCallbackOrExpectedRgba(rgba);
+ }
+
+ expect(rgba).toEqual(expectationCallbackOrExpectedRgba);
+ } else {
+ // To avoid Jasmine's spec has no expecttions error
+ expect(true).toEqual(true);
+
}
- expect(rgba).toEqual(expectationCallbackOrExpectedRgba);
return undefined;
};
@@ -9,7 +9,7 @@ define([
equalsMethodEqualityTester) {
"use strict";
- return function (env, includedCategory, excludedCategory, webglValidation, release) {
+ return function (env, includedCategory, excludedCategory, webglValidation, webglStub, release) {
function defineSuite(deps, name, suite, categories, focus) {
/*global define,describe,fdescribe*/
if (typeof suite === 'object' || typeof suite === 'string') {
@@ -137,6 +137,10 @@ define([
window.webglValidation = true;
}
+ if (webglStub) {
+ window.webglStub = true;
+ }
+
//env.catchExceptions(true);
env.beforeEach(function () {
View
@@ -5,13 +5,15 @@
var included = '';
var excluded = '';
var webglValidation = false;
+ var webglStub = false;
var release = false;
if(__karma__.config.args){
included = __karma__.config.args[0];
excluded = __karma__.config.args[1];
webglValidation = __karma__.config.args[2];
- release = __karma__.config.args[3];
+ webglStub = __karma__.config.args[3];
+ release = __karma__.config.args[4];
}
var toRequire = ['Cesium'];
@@ -55,7 +57,7 @@
], function(
customizeJasmine) {
- customizeJasmine(jasmine.getEnv(), included, excluded, webglValidation, release);
+ customizeJasmine(jasmine.getEnv(), included, excluded, webglValidation, webglStub, release);
var specFiles = Object.keys(__karma__.files).filter(function(file) {
return /Spec\.js$/.test(file);
View
@@ -210,10 +210,14 @@
window.webglValidation = true;
}
- var queryStringForSpecFocus = Cesium.clone(queryString);
- if (queryStringForSpecFocus.category === 'none') {
+ if (queryString.webglStub !== undefined) {
+ window.webglStub = true;
+ }
+
+ var queryStringForSpecFocus = Cesium.clone(queryString);
+ if (queryStringForSpecFocus.category === 'none') {
delete queryStringForSpecFocus.category;
- }
+ }
var catchingExceptions = queryString['catch'];
env.catchExceptions(typeof catchingExceptions === "undefined" ? true : catchingExceptions);
View
@@ -618,6 +618,7 @@ gulp.task('test', function(done) {
var includeCategory = argv.include ? argv.include : '';
var excludeCategory = argv.exclude ? argv.exclude : '';
var webglValidation = argv.webglValidation ? argv.webglValidation : false;
+ var webglStub = argv.webglStub ? argv.webglStub : false;
var release = argv.release ? argv.release : false;
var failTaskOnError = argv.failTaskOnError ? argv.failTaskOnError : false;
var suppressPassed = argv.suppressPassed ? argv.suppressPassed : false;
@@ -651,7 +652,7 @@ gulp.task('test', function(done) {
},
files: files,
client: {
- args: [includeCategory, excludeCategory, webglValidation, release]
+ args: [includeCategory, excludeCategory, webglValidation, webglStub, release]
}
}, function(e) {
return done(failTaskOnError ? e : undefined);
View
@@ -44,6 +44,7 @@
<li>
<a href="Specs/SpecRunner.html">Run all tests</a>
<span class="smallFont">(<a href="Specs/SpecRunner.html?webglValidation">Run with WebGL validation</a>)</span>
+ <span class="smallFont">(<a href="Specs/SpecRunner.html?webglStub">Run with WebGL stub</a>)</span>
</li>
<li>
<a href="Specs/SpecRunner.html?category=none">Select a test to run</a>
View
@@ -63,6 +63,9 @@
<a href="Specs/SpecRunner.html?webglValidation">Run with WebGL validation</a>
</dt>
<dt>
+ <a href="Specs/SpecRunner.html?webglStub">Run with WebGL stub</a>
+ </dt>
+ <dt>
<a href="Specs/SpecRunner.html?category=none">Select a test to run</a>
</dt>
<dt>
View
@@ -92,6 +92,7 @@
"test-webgl": "gulp test --include WebGL",
"test-non-webgl": "gulp test --exclude WebGL",
"test-webgl-validation": "gulp test --webglValidation",
+ "test-webgl-stub": "gulp test --webglStub",
"test-release": "gulp test --release",
"generateStubs": "gulp generateStubs",
"sortRequires": "gulp sortRequires",

0 comments on commit 4912f49

Please sign in to comment.