<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>WebGL gl.getParameter Strings Conformance Tests</title>
<script src="resources/desktop-gl-constants.js" type="text/javascript"></script>
<script src="../../../resources/js-test.js"></script>
<script src="resources/webgl-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<canvas id="canvas" width="2" height="2"> </canvas>
<script>
description("This test checks getParameter returns strings in the correct format");

debug("");
debug("Canvas.getContext");

var webGLVersion = "WebGL 1.0";

var gl = create3DContext(document.getElementById("canvas"));
if (!gl) {
  testFailed("context does not exist");
} else {
  testPassed("context exists");

  debug("");
  checkPrefix(webGLVersion, "VERSION");
  shouldBe("gl.getParameter(gl.VERSION)", "webGLVersion");
  checkPrefix("WebGL GLSL ES 1.0", "SHADING_LANGUAGE_VERSION");
  shouldBeNonNull("gl.getParameter(gl.VENDOR)");
  shouldBeNonNull("gl.getParameter(gl.RENDERER)");
  shouldBe("gl.getError()", "gl.NO_ERROR");
}

function checkPrefix(expected, enum_val) {
  var s = gl.getParameter(gl[enum_val]);
  if (s != null &&
      s.length >= expected.length &&
      s.substring(0, expected.length) == expected) {
    testPassed("getParameter(gl." + enum_val + ") correctly started with " + expected);
  } else {
    testFailed("getParameter(gl." + enum_val + ") did not start with " + expected);
  }
}

debug("");

</script>
</body>
</html>
