summaryrefslogtreecommitdiffstats
path: root/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js')
-rw-r--r--dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js b/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js
new file mode 100644
index 0000000000..4c1ca7d8b9
--- /dev/null
+++ b/dom/canvas/test/webgl-conf/checkout/conformance/more/conformance/argGenerators-B4.js
@@ -0,0 +1,71 @@
+/*
+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.
+*/
+
+// ArgGenerators contains argument generators for WebGL functions.
+// The argument generators are used for running random tests against the WebGL
+// functions.
+//
+// ArgGenerators is an object consisting of functionName : argGen -properties.
+//
+// functionName is a WebGL context function name and the argGen is an argument
+// generator object that encapsulates the requirements to run
+// randomly generated tests on the WebGL function.
+//
+// An argGen object has the following methods:
+// - setup -- set up state for testing the GL function, returns values
+// that need cleanup in teardown. Run once before entering a
+// test loop.
+// - teardown -- do cleanup on setup's return values after testing is complete
+// - generate -- generate a valid set of random arguments for the GL function
+// - returnValueCleanup -- do cleanup on value returned by the tested GL function
+// - cleanup -- do cleanup on generated arguments from generate
+// - checkArgValidity -- check if passed args are valid. Has a call signature
+// that matches generate's return value. Returns true
+// if args are valid, false if not.
+//
+// Example test loop that demonstrates how the function args and return
+// values flow together:
+//
+// var setupArgs = argGen.setup();
+// for (var i=0; i<numberOfTests; i++) {
+// var generatedArgs = argGen.generate.apply(argGen, setupArgs);
+// var validArgs = argGen.checkArgValidity.apply(argGen, generatedArgs);
+// var rv = call the GL function with generatedArgs;
+// argGen.returnValueCleanup(rv);
+// argGen.cleanup.apply(argGen, generatedArgs);
+// }
+// argGen.teardown.apply(argGen, setupArgs);
+//
+ArgGenerators = {
+
+// GL functions in alphabetical order
+
+// B-4
+
+ bufferSubData : {
+ setup : function() {
+ var buf = GL.createBuffer();
+ var ebuf = GL.createBuffer();
+ GL.bindBuffer(GL.ARRAY_BUFFER, buf);
+ GL.bufferData(GL.ARRAY_BUFFER, 256, GL.STATIC_DRAW);
+ GL.bindBuffer(GL.ELEMENT_ARRAY_BUFFER, ebuf);
+ GL.bufferData(GL.ELEMENT_ARRAY_BUFFER, 256, GL.STATIC_DRAW);
+ return [buf, ebuf];
+ },
+ generate : function(buf, ebuf) {
+ var d = randomBufferSubData(256);
+ return [bufferTarget.random(), d.offset, d.data];
+ },
+ checkArgValidity : function(target, offset, data) {
+ return bufferTarget.has(target) && offset >= 0 && data.byteLength >= 0 && offset + data.byteLength <= 256;
+ },
+ teardown : function(buf, ebuf) {
+ GL.deleteBuffer(buf);
+ GL.deleteBuffer(ebuf);
+ },
+ }
+
+};