summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html82
1 files changed, 82 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html b/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html
new file mode 100644
index 0000000000..fb65bf2ad1
--- /dev/null
+++ b/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html>
+<head>
+<meta charset="utf-8">
+<!--
+Copyright (c) 2019 The Khronos Group Inc.
+Use of this source code is governed by an MIT-style license that can be
+found in the LICENSE.txt file.
+-->
+<link rel="stylesheet" type="text/css" href="../unit.css" />
+<script type="application/javascript" src="../unit.js"></script>
+<script type="application/javascript" src="../util.js"></script>
+<script type="application/javascript" src="quickCheckAPI.js"></script>
+
+<script type="application/javascript">
+
+// Test that all GL functions specified in ArgGenerators fail
+// when called with randomly generated invalid arguments
+// Works only on tests with checkArgValidity defined
+Tests.testInvalidArgs = function() {
+ var randomTestCount = 100;
+ for (var name in ArgGenerators) {
+ try {
+ if (!GL[name])
+ throw (new Error(name + " is missing from the WebGL context"));
+ var argGen = ArgGenerators[name];
+ var alreadyTriedArgs = {};
+ if (!argGen.generate || !argGen.checkArgValidity) continue;
+ // test each GL function with randomTestCount randomly generated valid args
+ argGeneratorTestRunner(argGen, function(args, gen, setupVars) {
+ var mutatedArgs;
+ var foundArgs = false;
+ for (var j=0; j<100; j++) {
+ mutatedArgs = mutateArgs(args);
+ var validArgs = false;
+ try {
+ validArgs = gen.checkArgValidity.apply(gen, mutatedArgs);
+ } catch(e) {}
+ if (!validArgs) {
+ if (gen.noAlreadyTriedCheck) {
+ foundArgs = true;
+ break; // found new invalid args
+ }
+ var src = Object.toSource(mutatedArgs);
+ if (!alreadyTriedArgs[src]) {
+ alreadyTriedArgs[src] = true;
+ foundArgs = true;
+ break; // found new invalid args
+ }
+ }
+ }
+ if (!foundArgs)
+ return true;
+ var ok = false;
+ var rv;
+ // assert that GL function fails when called with invalid args
+ assertFail("This should fail: "+name+"("+argsToString(mutatedArgs)+")",
+ function(){
+ GL.getError(); // clear off existing error
+ rv = GL[name].apply(GL, mutatedArgs);
+ throwError(GL, name);
+ ok = true;
+ });
+ // if we need to cleanup the return value, do it here
+ // e.g. calling gl.deleteBuffer(rv) after testing gl.createBuffer() above
+ if (gen.returnValueCleanup && rv != null) {
+ assertOk("Cleaning up return value after "+name+"("+argsToString(mutatedArgs)+")",
+ function() { gen.returnValueCleanup(rv); });
+ }
+ GL.getError();
+ return !ok;
+ }, argGen.testCount || randomTestCount);
+ } catch(e) {
+ testFailed(name, e.name, formatError(e));
+ }
+ }
+}
+
+</script>
+<style>canvas{position:absolute;}</style>
+</head><body>
+</body></html>