gecko/content/canvas/test/webgl/more/functions/linkProgramBadArgs.html

60 lines
2.1 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="content-type" content="text/html; 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.startUnit = function () {
var canvas = document.getElementById('gl');
var gl = canvas.getContext(GL_CONTEXT_ID);
return [gl];
}
Tests.testSimpleBadArgs = function(gl) {
var p = gl.createProgram();
var shaders = [null];
for (var i=0; i<1022; i++) {
shaders[i+1] = gl.createShader(gl.FRAGMENT_SHADER);
}
gl.attachShader(p, shaders[10]);
gl.attachShader(p, shaders[3]);
gl.attachShader(p, shaders[1020]);
gl.attachShader(p, shaders[1021]);
gl.attachShader(p, shaders[shaders.length-1]);
assertFail(function() { gl.attachShader(p, 564732608); });
assertFail(function() { gl.compileShader(840002); });
assertFail(function() { gl.attachShader(p, 840002); });
assertFail(function() { gl.attachShader(p, -58920); });
assertFail(function() { gl.attachShader(p, 16300); });
assertFail(function() { gl.attachShader(p, 1200020); });
assertFail(function() { gl.attachShader(p, 90930020); });
// assertFail(function() { gl.attachShader(p, NaN); });
assertFail(function() { gl.attachShader(p, 5892.3); });
assertFail(function() { gl.attachShader(p, -12.3); });
assertFail(function() { gl.attachShader(p, -1); });
assertFail(function() { gl.attachShader(p, 5901080860202); });
assertFail(function() { gl.attachShader(p, 590108080000060202); });
assertOk(function(){ gl.linkProgram(p); });
gl.deleteProgram(p);
for (var i=1; i<shaders.length; i++) {
assertOk(function() { gl.deleteShader(shaders[i]); });
}
}
Tests.testNoSuchProgram = function(gl) {
for (var i=0; i<100; i++) {
assertFail(function(){gl.linkProgram(Math.floor(Math.random() * 100000));});
}
}
Tests.endUnit = function(gl) {
}
</script>
<style>canvas{ position:absolute; }</style>
</head><body>
<canvas id="gl" width="16" height="16"></canvas>
</body></html>