diff options
Diffstat (limited to '')
-rw-r--r-- | dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/quickCheckAPIBadArgs.html | 82 |
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> |