Index: conformance/more/conformance/fuzzTheAPI.html |
=================================================================== |
--- conformance/more/conformance/fuzzTheAPI.html (revision 0) |
+++ conformance/more/conformance/fuzzTheAPI.html (revision 0) |
@@ -0,0 +1,110 @@ |
+<!DOCTYPE html> |
+<html><head> |
+<meta charset="utf-8"> |
+<link rel="stylesheet" type="text/css" href="../unit.css" /> |
+<script type="application/x-javascript" src="../unit.js"></script> |
+<script type="application/x-javascript" src="../util.js"></script> |
+ |
+<script type="application/x-javascript"> |
+ |
+Tests.autorun = false; |
+Tests.message = "This will fuzz the API with random inputs for a [long] while." |
+ |
+ |
+function randomCall(testProgress, gl, m, arities) { |
+ doTestNotify(m); |
+ var argcs = {}; |
+ var foundArity = false; |
+ if (arities == null) { |
+ testProgress.textContent += " 500 random arity calls on " + m + "\n"; |
+ for (var i=0; i<50; i++) { |
+ for (var j=0; j<10; j++) { |
+ var args = generateRandomArgs(j); |
+// doTestNotify(m + ": " + args.toSource()); |
+ try { |
+ gl[m].apply(gl, args); |
+ argcs[j] = true; |
+ foundArity = true; |
+ } catch (e) { |
+ } |
+ } |
+ } |
+ for (var j in argcs) { |
+ testProgress.textContent += "200 arity " + j + " calls on " + m + "\n"; |
+ for (var i=0; i<200; i++) { |
+ var args = generateRandomArgs(j); |
+// doTestNotify(m + ": " + args.toSource()); |
+ try { |
+ gl[m].apply(gl, args); |
+ argcs[j] = true; |
+ } catch (e) { |
+ } |
+ } |
+ } |
+ } else { |
+ for (var k=0; k<arities.length; k++) { |
+ var j = arities[k]; |
+ testProgress.textContent += "500 arity " + j + " calls on " + m + "\n"; |
+ for (var i=0; i<500; i++) { |
+ var args = generateRandomArgs(j); |
+// doTestNotify(m + ": " + args.toSource()); |
+ try { |
+ gl[m].apply(gl, args); |
+ } catch (e) { |
+ } |
+ } |
+ } |
+ } |
+// doTestNotify(m+"--OK"); |
+} |
+ |
+Tests.testGetGLWeb20 = function() { |
+ var testProgress = document.getElementById('testProgress'); |
+ var funcnames = document.getElementById('funcnames').value.split(","); |
+ var canvas = document.getElementById('glweb20'); |
+ var gl; |
+ assertOk(function(){gl = canvas.getContext(GL_CONTEXT_ID);}); |
+ var funcs = []; |
+ for (var i=0; i<funcnames.length; i++) { |
+ var fn = funcnames[i]; |
+ fn = fn.replace(/^\s+|\s+$/g, ''); |
+ if (fn.length > 0) |
+ funcs.push(fn); |
+ } |
+ if (funcs.length == 0) { |
+ for (var m in gl) |
+ try{if (typeof gl[m] == 'function') |
+ funcs.push(m);}catch(e){} |
+ } |
+ var idx = 0; |
+ var count = 0; |
+ var limit = 1000; |
+ var iv1; |
+ var iv2; |
+ iv1 = setInterval(function(){ |
+ if (idx >= funcs.length) { |
+ iv2 = setInterval(function(){ |
+ if (count >= limit) { |
+ clearInterval(iv2); |
+ return false; |
+ } |
+ count++; |
+ var f = Math.floor(Math.random() * funcs.length); |
+ randomCall(testProgress, gl, funcs[f]); |
+ }, 50); |
+ clearInterval(iv1); |
+ return false; |
+ } |
+ randomCall(testProgress, gl, funcs[idx]); |
+ idx++; |
+ }, 50); |
+} |
+ |
+</script> |
+<style>canvas{ position:absolute; }</style> |
+</head><body> |
+ <canvas id="glweb20" width="16" height="16"></canvas> |
+ <p>Optional: Enter a comma-separated list of functions to fuzz (leave blank for full API)</p> |
+ <input type="text" size="40" id="funcnames" value=""> |
+ <pre id="testProgress"></pre> |
+</body></html> |
Property changes on: conformance/more/conformance/fuzzTheAPI.html |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |