2 Copyright (c) 2019 The Khronos Group Inc.
3 Use of this source code is governed by an MIT-style license that can be
4 found in the LICENSE.txt file.
10 <meta charset=
"utf-8">
11 <title>WebGL GLSL Conformance Tests - Unsupported variants of operators
</title>
12 <link rel=
"stylesheet" href=
"../../resources/js-test-style.css"/>
13 <link rel=
"stylesheet" href=
"../../resources/glsl-feature-tests.css"/>
14 <script src=
"../../js/js-test-pre.js"></script>
15 <script src=
"../../js/webgl-test-utils.js"></script>
16 <script src=
"../../js/glsl-conformance-test.js"></script>
19 <div id=
"description"></div>
20 <div id=
"console"></div>
21 <script id=
"fshader-array-ternary-operator" type=
"x-shader/x-fragment">#version
300 es
22 precision mediump float;
27 float c[
3] = true ? a : b;
30 <script id=
"fshader-struct-array-ternary-operator" type=
"x-shader/x-fragment">#version
300 es
31 precision mediump float;
40 MyStruct d = true ? b : c;
43 <script id=
"fshader-void-ternary-operator" type=
"x-shader/x-fragment">#version
300 es
44 precision mediump float;
52 <script id=
"fshader-array-sequence-operator" type=
"x-shader/x-fragment">#version
300 es
53 precision mediump float;
57 float b[
3] = (true, a);
60 <script id=
"fshader-struct-array-sequence-operator" type=
"x-shader/x-fragment">#version
300 es
61 precision mediump float;
69 MyStruct c = (true, b);
72 <script id=
"fshader-void-sequence-operator" type=
"x-shader/x-fragment">#version
300 es
73 precision mediump float;
83 description("Check unsupported variants of operators.");
85 // WebGL 2.0 spec section "Unsupported variants of GLSL ES 3.00 operators"
87 GLSLConformanceTester
.runTests([
88 { fShaderId
: 'fshader-array-ternary-operator',
89 fShaderSuccess
: false,
91 passMsg
: "Using ternary operators with arrays is not allowed",
93 { fShaderId
: 'fshader-struct-array-ternary-operator',
94 fShaderSuccess
: false,
96 passMsg
: "Using ternary operators with structs containing arrays is not allowed",
98 { fShaderId
: 'fshader-void-ternary-operator',
99 fShaderSuccess
: false,
101 passMsg
: "Using ternary operators with void is not allowed",
103 { fShaderId
: 'fshader-array-sequence-operator',
104 fShaderSuccess
: false,
106 passMsg
: "Using sequence operators with arrays is not allowed",
108 { fShaderId
: 'fshader-struct-array-sequence-operator',
109 fShaderSuccess
: false,
111 passMsg
: "Using sequence operators with structs containing arrays is not allowed",
113 { fShaderId
: 'fshader-void-sequence-operator',
114 fShaderSuccess
: false,
116 passMsg
: "Using sequence operators with void is not allowed",
121 var successfullyParsed
= true;