diff options
Diffstat (limited to '')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fApiCase.js | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fApiCase.js b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fApiCase.js new file mode 100644 index 0000000000..3238e6c2ef --- /dev/null +++ b/dom/canvas/test/webgl-conf/checkout/deqp/functional/gles3/es3fApiCase.js @@ -0,0 +1,161 @@ +/*------------------------------------------------------------------------- + * drawElements Quality Program OpenGL ES Utilities + * ------------------------------------------------ + * + * Copyright 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +'use strict'; +goog.provide('functional.gles3.es3fApiCase'); +goog.require('framework.common.tcuTestCase'); +goog.require('framework.opengl.gluStrUtil'); + +goog.scope(function() { + + var es3fApiCase = functional.gles3.es3fApiCase; + var gluStrUtil = framework.opengl.gluStrUtil; + var tcuTestCase = framework.common.tcuTestCase; + + // format numbers as they appear in gl.h + var getHexStr = function(num) { + var numstr = num.toString(16); + var prefix = '0x'; + for ( + var padding = (num < 0x10000 ? 4 : 8) - numstr.length; + padding-- > 0; + ) prefix += '0'; + return prefix + numstr; + }; + + /** + * Base class for all the API tests. + * @constructor + * @extends {tcuTestCase.DeqpTest} + * @param {string} name + * @param {string} desc + */ + es3fApiCase.ApiCase = function(name, desc, gl) { + gl = gl || window.gl; + if (this.test === undefined) { + throw new Error('Unimplemented virtual function: es3fApiCase.ApiCase.test'); + } + tcuTestCase.DeqpTest.call(this, name, desc); + + this.m_gl = gl; + this.m_pass = true; + this.m_comment = ''; + + }; + + es3fApiCase.ApiCase.prototype = Object.create(tcuTestCase.DeqpTest.prototype); + es3fApiCase.ApiCase.prototype.constructor = es3fApiCase.ApiCase; + + /** + * @param {boolean} condition + * @param {string=} message + */ + es3fApiCase.ApiCase.prototype.check = function(condition, message) { + if (this.m_pass && !condition) { + bufferedLogToConsole('Condition is false. Test failed.'); + if (message) + this.m_comment += ' ' + message; + this.m_pass = condition; + } + return condition; + }; + + es3fApiCase.ApiCase.prototype.iterate = function() { + + this.test(); + + if (this.m_pass) + testPassed(this.m_comment); + else + testFailedOptions(this.m_comment, true); + + return tcuTestCase.IterateResult.STOP; + }; + + /** + * @param {Array<number>|number} expected + * @return {boolean} returns true if gl.getError returns an expected error code and false otherwise. + */ + es3fApiCase.ApiCase.prototype.expectError = function(expected) { + if (expected.constructor === Number) + expected = [expected]; + + var err = this.m_gl.getError(); + var conformant = expected.indexOf(err) >= 0; + + if (!conformant) { + + var l = expected.length; + var msg = 'Expected '; + + if (l > 1) + msg += (l == 2 ? 'either ' : 'one of '); + + for (var i = 0; i < l; ++i) msg += ( + (gluStrUtil.getErrorName(expected[i]) || getHexStr(expected[i])) + + (l - i == 2 ? ' or ' : ', ') + ); + + msg += 'but got ' + (gluStrUtil.getErrorName(err) || getHexStr(err)) + '.'; + + this.testFailed(msg); + + } + + return conformant; + }; + + es3fApiCase.ApiCase.prototype.testFailed = function(comment) { + bufferedLogToConsole(comment); + if (this.m_pass) { + this.m_comment = comment; + this.m_pass = false; + } + }; + + es3fApiCase.ApiCase.prototype.expectThrowNoError = function(f) { + try { + f(); + this.testFailed("should have thrown exception"); + } catch (e) { + this.expectError(this.m_gl.NO_ERROR); + } + } + + /** + * Base class for all the API tests. + * @constructor + * @extends {es3fApiCase.ApiCase} + * @param {string} name + * @param {string} desc + * @param {function(this:es3fApiCase.ApiCaseCallback)} callback + */ + es3fApiCase.ApiCaseCallback = function(name, desc, gl, callback) { + this.test = callback; + es3fApiCase.ApiCase.call(this, name, desc, gl); + }; + es3fApiCase.ApiCaseCallback.prototype = Object.create(es3fApiCase.ApiCase.prototype); + es3fApiCase.ApiCaseCallback.prototype.constructor = es3fApiCase.ApiCaseCallback; + +/* + es3fApiCase.ApiCase.prototype.expectError // (error) or (error0, error1) + es3fApiCase.ApiCase.prototype.getSupportedExtensions // (number numSupportedValues, number extension, [number] values ) + es3fApiCase.ApiCase.prototype.checkBooleans // (char value, char expected); +//*/ +}); |