<!--
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.
-->

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebGL GLSL Conformance Tests</title>
<link rel="stylesheet" href="../../../resources/js-test-style.css"/>
<link rel="stylesheet" href="../../../resources/glsl-feature-tests.css"/>
<script src="../../../js/js-test-pre.js"></script>
<script src="../../../js/webgl-test-utils.js"></script>
<script src="../../../js/glsl-conformance-test.js"></script>
</head>
<body>
<div id="description"></div>
<div id="console"></div>
<script id="vertexShader" type="text/plain">
Loading...
</script>
<script>
"use strict";

// Via `[].map.call(str, x => x.codePointAt(0));`
let a = [12371,12428,12399,65313,65331,65315,65321,65321,12391,12399,12394,12356,12391,12377,12290];
let b = [65332,65352,65353,65363,12288,65321,65363,12288,65326,65359,65364,12288,65313,65331,65315,65321,65321];
a = String.fromCodePoint(...a);
b = String.fromCodePoint(...b);

// -

vertexShader.textContent = `
// Non ascii comments in source should succeed
// ${a}
// ${b}
/*
 * ${b}
 */
#define TEST 1 // ${b}
void main() {
  gl_Position = vec4(1,1,1,1); // ${b}
} // ${b}
`;

// -

GLSLConformanceTester.runTest();
var successfullyParsed = true;
</script>
</body>
</html>
