<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebGL CompressedTexImage and CompressedTexSubImage Tests</title>
<script src="../../../resources/js-test.js"></script>
<script src="resources/webgl-test.js"></script>
<script src="resources/webgl-test-utils.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script>
description("This test ensures WebGL implementations correctly implement compressedTexImage2D and compressedTexSubImage2D.");

debug("");

if (window.internals)
    window.internals.settings.setWebGLErrorsToConsoleEnabled(false);

var wtu = WebGLTestUtils;
var canvas = document.createElement("canvas");
var gl = wtu.create3DContext(canvas);

var  COMPRESSED_RGB_S3TC_DXT1_EXT        = 0x83F0;
var  COMPRESSED_RGBA_S3TC_DXT1_EXT       = 0x83F1;
var  COMPRESSED_RGBA_S3TC_DXT5_EXT       = 0x83F3;
var  ETC1_RGB8_OES                       = 0x8D64;
var  COMPRESSED_RGB_PVRTC_4BPPV1_IMG     = 0x8C00;
var  COMPRESSED_RGBA_PVRTC_4BPPV1_IMG    = 0x8C02;

if (!gl) {
  testFailed("context does not exist");
} else {
  testPassed("context exists");

  var tex = gl.createTexture();
  gl.bindTexture(gl.TEXTURE_2D, tex);

  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, COMPRESSED_RGB_S3TC_DXT1_EXT, 4, 4, 0, new Uint8Array(8))");
  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, COMPRESSED_RGBA_S3TC_DXT1_EXT, 4, 4, 0, new Uint8Array(8))");
  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, COMPRESSED_RGBA_S3TC_DXT5_EXT, 4, 4, 0, new Uint8Array(16))");
  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, ETC1_RGB8_OES, 4, 4, 0, new Uint8Array(8))");
  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, COMPRESSED_RGB_PVRTC_4BPPV1_IMG, 8, 8, 0, new Uint8Array(8))");
  shouldGenerateGLError(gl, gl.INVALID_ENUM, "gl.compressedTexImage2D(gl.TEXTURE_2D, 0, COMPRESSED_RGBA_PVRTC_4BPPV1_IMG, 8, 8, 0, new Uint8Array(8))");
}
</script>
</body>
</html>

